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…
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’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…
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’s take a peak at how things went over the last year.
Welcome back to my fun adventures of solving fly.io’s Gossip Glomers. In this post, I’ll tackle Challenge #2: Unique ID Generation. First, let’s chat through the requirements. Your code will receive the following from a client: { 'type': 'generate' } And you will return: { 'type': 'generate_ok', 'id': '{your_generated_id}' } Now, let’s write some code to come up with…
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’t write anything about it in the post since I couldn’t come up with an idea of the spot. In hindsight, the goal should have been to come up with a goal. I’ve since come up with, and started, such a goal. One thing I’ve learned about learning is that…
I’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’s a Django exmaple in a book, youtube video, or blog post for it. Where does one even begin…
NixOS has been my trusty companion for a good 4 years now. It’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’ve been able to run without issue. I’ll give credit where credit is due, gaming on NixOS has come a long way. But there’s always that…
I’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’ve done quite a bit of campaigning together. Why switch back to Bash and ble.sh? Spoiler: For me, it’s mainly two reasons. Bash has better tooling and I write bash more than I write ZSH. ZSH has better frameworks, but I…
What a wild year. What a wild January. Join me in a exhilarating reviewing of 2023 right near the end of February. That’s a terrible attempt at a procrastination joke. Well, there wasn’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…
I’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’s requirements. I’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…
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’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 <(curl -L https://nixos.org/nix/install) When you run the command it will ask you a couple of…
Do you ever find yourself typing the same string formats in code on repeat? Vim’s regex search and replace is a powerful tool for automating this problem. It doesn’t come up everyday, but frequently enough that I forget the next time I need it. With vim’s regex, we can turn this: one two three into this: ('ONE', 'One'), ('TWO', 'Two'), ('THREE', 'Three'), 1. Let’s Build A…
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’s Good Enough™. Bash scripts are a great way to get started, but sometimes one requires a more robust tool. I’ve since spent some time diving deeper into the Python import system and discovered a better solution.…
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…
Custom Backward Word Deletion In ZSH 1. Intro Do you use ctrl+w keyboard shortcut in Zsh? It’s a handy function for deleting “words”. Some of you may be wondering, how does Zsh know that a “word” is? Can I change what a “word” means? If neither of those questions sound interesting, this post isn’t for you. If they do, stay tuned. I’ll show you…
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’s flexibility and the wide variety of nix+python solutions make adoption overwhelming. Do not despair. In this post, we’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?…
Moving The Goalposts Great software engineers aren’t hired to write code, they’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…
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’s more aware of everything around him. He can’t take his eyes off Jack. Watching them play together is the cutest. Renovating Home Office During paternity leave, Kayla and…
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.…
Learning to articulate tradeoffs is an important transition in a junior engineer’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…