<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blogs on Cody Hiar</title><link>https://www.codyhiar.com/blog/</link><description>Recent content in Blogs on Cody Hiar</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>cody@hiar.ca (Cody Hiar)</managingEditor><webMaster>cody@hiar.ca (Cody Hiar)</webMaster><lastBuildDate>Thu, 18 Dec 2025 17:24:33 +0000</lastBuildDate><atom:link href="https://www.codyhiar.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Things I Do To Make My iPhone Less Distracting</title><link>https://www.codyhiar.com/blog/things-i-do-to-make-my-iphone-less-distracting/</link><pubDate>Thu, 18 Dec 2025 17:24:33 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/things-i-do-to-make-my-iphone-less-distracting/</guid><description>Indistractable provides invaluable tips on how to reduce the amount of focus stolen by your smartphone. Every pickup, every unlock, incurs a hidden cost. A non-zero chance to have your attention redirected from your original goal. Smartphones fit into nearly every facet of our modern lives and those chances start to add up. Left unchecked, these redirections can manifest into nasty time-sucking habits.
How do we prevent this from happening?</description></item><item><title>Automatic Django Shells Using Expect</title><link>https://www.codyhiar.com/blog/automatic-django-shells-using-expect/</link><pubDate>Tue, 15 Apr 2025 15:59:20 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/automatic-django-shells-using-expect/</guid><description>One of the standout features of tools like Docker and Kubernetes is the ability to quickly exec into a production shell. With environment variables configured, working directory set, and everything ready to go, you&amp;rsquo;re primed for action. But not every project uses Docker in production, which makes getting into a production shell a small hassle. When working in these environments, starting a session often involves several repetitive steps:
SSH into server Change user Activate the virtualenv Change to the correct directory Set an environment variable Finally, open the shell Maybe you have less steps, maybe you have more.</description></item><item><title>2024 a Year in Review</title><link>https://www.codyhiar.com/blog/2024-a-year-in-review/</link><pubDate>Fri, 24 Jan 2025 21:56:10 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/2024-a-year-in-review/</guid><description>The older you get, the faster time goes. Nana used to say that whenever I complained about the pace of events. At a young age, my mind could not imagine what that speed of time would feel like. But now, I know the feeling all too well. If once-a-year review posts interest you, check out my 2023 post here. Let&amp;rsquo;s take a peak at how things went over the last year.</description></item><item><title>Reading DDIA and Solving Gossip Glomers in Python: Part 2</title><link>https://www.codyhiar.com/blog/reading-ddia-and-solving-gossip-glomers-in-python-part-2/</link><pubDate>Fri, 22 Nov 2024 23:12:28 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/reading-ddia-and-solving-gossip-glomers-in-python-part-2/</guid><description>Welcome back to my fun adventures of solving fly.io&amp;rsquo;s Gossip Glomers. In this post, I’ll tackle Challenge #2: Unique ID Generation. First, let&amp;rsquo;s chat through the requirements. Your code will receive the following from a client:
{ &amp;#34;type&amp;#34;: &amp;#34;generate&amp;#34; } And you will return:
{ &amp;#34;type&amp;#34;: &amp;#34;generate_ok&amp;#34;, &amp;#34;id&amp;#34;: &amp;#34;{your_generated_id}&amp;#34; } Now, let&amp;rsquo;s write some code to come up with your_generated_id. With our current setup, the following boilerplate will get you started:</description></item><item><title>Reading DDIA and Solving Gossip Glomers in Python: Part 1</title><link>https://www.codyhiar.com/blog/reading-ddia-and-solving-gossip-glomers-in-python-part-1/</link><pubDate>Wed, 11 Sep 2024 16:18:10 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/reading-ddia-and-solving-gossip-glomers-in-python-part-1/</guid><description>While I was writing my yearly goals for 2024, I knew in the back of my mind I wanted some kind of technical challenge. I didn&amp;rsquo;t write anything about it in the post since I couldn&amp;rsquo;t come up with an idea of the spot. In hindsight, the goal should have been to come up with a goal. I&amp;rsquo;ve since come up with, and started, such a goal.
One thing I&amp;rsquo;ve learned about learning is that it sticks best when it relates to your day-to-day activities.</description></item><item><title>My Favorite Django Resources</title><link>https://www.codyhiar.com/blog/my-favorite-django-resources/</link><pubDate>Wed, 10 Jul 2024 16:34:39 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/my-favorite-django-resources/</guid><description>I&amp;rsquo;ve been working with Django full time since roughly 2016. 8 years feels like an eternity in the software world. In my opinion, no other framework compares to Django in terms of off-the-shelf solutions In Python land that is, I know Rails is also a great experience. If you have a problem, there&amp;rsquo;s a Django exmaple in a book, youtube video, or blog post for it. Where does one even begin to look?</description></item><item><title>How To Dual Boot Nixos and Arch Linux</title><link>https://www.codyhiar.com/blog/how-to-dual-boot-nixos-and-arch-linux/</link><pubDate>Sat, 04 May 2024 19:00:39 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/how-to-dual-boot-nixos-and-arch-linux/</guid><description>NixOS has been my trusty companion for a good 4 years now. It&amp;rsquo;s like having a horse whisperer for the wild mustang that is running software. But one bronco still manages to remain unbroken by Nix, running games.
There are a number of titles I&amp;rsquo;ve been able to run without issue. I&amp;rsquo;ll give credit where credit is due, gaming on NixOS has come a long way. But there&amp;rsquo;s always that one game that won&amp;rsquo;t play ball.</description></item><item><title>Switching Back to Bash From Zsh</title><link>https://www.codyhiar.com/blog/switching-back-to-bash-from-zsh/</link><pubDate>Thu, 04 Apr 2024 15:53:52 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/switching-back-to-bash-from-zsh/</guid><description>I&amp;rsquo;ve used ZSH as my interactive shell for almost 10 years now. You can read the original post here. My age is showing. ZSH has been a trusty companion, and we&amp;rsquo;ve done quite a bit of campaigning together. Why switch back to Bash and ble.sh?
Spoiler: For me, it&amp;rsquo;s mainly two reasons. Bash has better tooling and I write bash more than I write ZSH. ZSH has better frameworks, but I found I didn&amp;rsquo;t need them over time.</description></item><item><title>2023 a Year in Review</title><link>https://www.codyhiar.com/blog/2023-a-year-in-review/</link><pubDate>Tue, 20 Feb 2024 17:27:44 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/2023-a-year-in-review/</guid><description>What a wild year. What a wild January. Join me in a exhilarating reviewing of 2023 right near the end of February. That&amp;rsquo;s a terrible attempt at a procrastination joke. Well, there wasn&amp;rsquo;t any procrastination, it was perfectionism. All things to work on in 2024. You can find my 2022 blog post here.
Reflecting On 2023 Goals In 2023, I aimed to write more, read more, and become more mindful.</description></item><item><title>Makefiles and Docker for Local Development</title><link>https://www.codyhiar.com/blog/makefiles-and-docker-for-local-development/</link><pubDate>Tue, 09 Jan 2024 16:35:49 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/makefiles-and-docker-for-local-development/</guid><description>I&amp;rsquo;ve spent a good part of my career automating the setup of projects for local development and CI. Projects are like snowflakes, no two are alike. I prefer to choose tools that allow me to adapt to each project&amp;rsquo;s requirements. I&amp;rsquo;ve settled on a mix of Makefiles, Docker, and a sprinkle of Bash scripts. This post is focused on how I design Makefiles for projects. Makefiles end up becoming an interface for interacting with projects.</description></item><item><title>Setting Up Nix on a Macbook the Boring Way</title><link>https://www.codyhiar.com/blog/setting-up-nix-on-a-macbook-the-boring-way/</link><pubDate>Thu, 26 Oct 2023 15:21:08 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/setting-up-nix-on-a-macbook-the-boring-way/</guid><description>Do you want to try nix on your Macbook? Is time a finite resource for you? Do you value getting straight to the point? Well, let&amp;rsquo;s dive in.
1. Install Nix Package Manager The most up to date instructions are on the nixos.org website. You will get some kind of curl command like the following:
sh &amp;lt;(curl -L https://nixos.org/nix/install) When you run the command it will ask you a couple of prompts.</description></item><item><title>Using Vim's Very Magic Regex to Format Code</title><link>https://www.codyhiar.com/blog/using-vims-very-magic-regex-to-format-code/</link><pubDate>Wed, 23 Aug 2023 21:59:27 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/using-vims-very-magic-regex-to-format-code/</guid><description>Do you ever find yourself typing the same string formats in code on repeat? Vim&amp;rsquo;s regex search and replace is a powerful tool for automating this problem. It doesn&amp;rsquo;t come up everyday, but frequently enough that I forget the next time I need it. With vim&amp;rsquo;s regex, we can turn this:
one two three into this:
(&amp;#34;ONE&amp;#34;, &amp;#34;One&amp;#34;), (&amp;#34;TWO&amp;#34;, &amp;#34;Two&amp;#34;), (&amp;#34;THREE&amp;#34;, &amp;#34;Three&amp;#34;), 1. Let&amp;rsquo;s Build A Regex 1.1 Duplicating Words First we need to duplicate our words by:</description></item><item><title>Printing Python Imports</title><link>https://www.codyhiar.com/blog/printing-python-imports/</link><pubDate>Tue, 15 Aug 2023 21:43:10 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/printing-python-imports/</guid><description>In my last post, Tips For Pinning Python Requirements Files, I touched briefly on import discovery. I used grep as a crude mechanism to grab python import because it&amp;rsquo;s Good Enough™. Bash scripts are a great way to get started, but sometimes one requires a more robust tool. I&amp;rsquo;ve since spent some time diving deeper into the Python import system and discovered a better solution. Let&amp;rsquo;s start with a single file named myscript.</description></item><item><title>Tips for Pinning Python Requirements Files</title><link>https://www.codyhiar.com/blog/tips-for-pinning-python-requirements-files/</link><pubDate>Thu, 20 Jul 2023 21:31:17 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/tips-for-pinning-python-requirements-files/</guid><description>I love you Python, but you got baggage. Or, er, you’re not great at putting things into bags. What I’m trying to say is, your packaging is a mess. At this point python lovers, myself included, accept our Stockholm syndrome.
This post comes as a result of a conversation that my team had. How to pin requirements in a requirements.txt files on older python projects? One where you may not understand the dependency structure.</description></item><item><title>Custom Backward Word Deletion in Zsh</title><link>https://www.codyhiar.com/blog/custom-backward-word-deletion-in-zsh/</link><pubDate>Wed, 31 May 2023 17:18:21 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/custom-backward-word-deletion-in-zsh/</guid><description>Custom Backward Word Deletion In ZSH 1. Intro Do you use ctrl+w keyboard shortcut in Zsh? It&amp;rsquo;s a handy function for deleting &amp;ldquo;words&amp;rdquo;. Some of you may be wondering, how does Zsh know that a &amp;ldquo;word&amp;rdquo; is? Can I change what a &amp;ldquo;word&amp;rdquo; means? If neither of those questions sound interesting, this post isn&amp;rsquo;t for you. If they do, stay tuned. I&amp;rsquo;ll show you how ctrl+w works along with a basic and an advanced example of customizing it.</description></item><item><title>Replace Pyenv With a Nix Flake</title><link>https://www.codyhiar.com/blog/replace-pyenv-with-a-nix-flake/</link><pubDate>Mon, 08 May 2023 15:55:38 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/replace-pyenv-with-a-nix-flake/</guid><description>Nix is a great tool for simplifying the pains of package management. Figuring out where Nix sits in your workflow, is not so simple. Nix&amp;rsquo;s flexibility and the wide variety of nix+python solutions make adoption overwhelming. Do not despair. In this post, we&amp;rsquo;ll walk through a minimal adoption of Nix by using a flake to replace Pyenv.
Why Use Nix Instead of Pyenv? Why would you want this? Doesn&amp;rsquo;t Pyenv a great job of installing the different versions of python already?</description></item><item><title>Moving the Goalposts</title><link>https://www.codyhiar.com/blog/moving-the-goalposts/</link><pubDate>Thu, 09 Mar 2023 17:56:50 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/moving-the-goalposts/</guid><description>Moving The Goalposts Great software engineers aren&amp;rsquo;t hired to write code, they&amp;rsquo;re hired to solve problems. You may have seen this quote before in one form or another. Early in your career, someone will define the goalposts for you. Someone will give you small, well defined problems with achievable deadlines.
Later in your career the tables will turn. You will be responsible for identifying problems and solutions. At some point the scope of the problems will surpass what you know.</description></item><item><title>2022: A Year In Review</title><link>https://www.codyhiar.com/blog/2022-a-year-in-review/</link><pubDate>Mon, 09 Jan 2023 22:37:49 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/2022-a-year-in-review/</guid><description>Fun Things That Happened Welcome Baby #2 Riley Milton Richard Hiar was born on June 1st, 2022. The creature total is now four with two dogs and two boys, rarely a dull moment. Riley is currently at the stage where he&amp;rsquo;s more aware of everything around him. He can&amp;rsquo;t take his eyes off Jack. Watching them play together is the cutest.
Renovating Home Office During paternity leave, Kayla and I took on our first mini-renovation project, my office.</description></item><item><title>Book Review: No Rules Rules Netflix and the Culture of Reinvention</title><link>https://www.codyhiar.com/blog/book-review-no-rules-rules/</link><pubDate>Sun, 04 Sep 2022 19:48:25 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/book-review-no-rules-rules/</guid><description>Tsundoku is the art of buying books and never reading them. That almost happened with No Rules Rules. The book taunted me from my bedside for over a year. Well, Tsundoku no more, I have read the book.
I’ve always admired Reed Hasting’s management style. It even came up during my initial interviews with Parsely. Saying and doing are two different things, especially when applied to an organization. This book fills in the &amp;ldquo;how?</description></item><item><title>Understanding Tradeoffs</title><link>https://www.codyhiar.com/blog/understanding-tradeoffs/</link><pubDate>Sat, 23 Apr 2022 19:48:42 +0000</pubDate><author>cody@hiar.ca (Cody Hiar)</author><guid>https://www.codyhiar.com/blog/understanding-tradeoffs/</guid><description>Learning to articulate tradeoffs is an important transition in a junior engineer&amp;rsquo;s career. Nothing good in life comes free, software is no different. Building knowledge in an industry overwhelmed with information seems like an herculean task. How does one go about understanding the tradeoffs? Or even figuring out what the tradeoffs are?
Do you remember when you first started writing software? The onset of topics to learn is paralyzing. What language should I learn?</description></item></channel></rss>