Hi! I’m Chad, a software developer with an interest in basically everything computer-related. Right now I’m using primarily Nix (that’s how this website is built) and I write a lot of Python.

This is a place for me to record my thoughts. Mainly for my own edification, as they’re usually a lot more unstructured before they come out of my head. If you find any of it useful feel free to let me know at chad@cacrawford.org.

Nix module trick: Re-evaluating yourself

This is a cool trick for those playing around with Nix’s module system. While developing nix-config-modules, I ran into a semi-unique issue: In the module system I defined a set of hosts and a separate, general set of apps, and hosts could define which apps they could import. To generate this subset of app configurations, I wanted to be able to re-evaluate all of my app modules with a host argument.

A deeper dive on the 4% rule

tl;dr There’s a common method for calculating how much you need to retire called the 4% rule; but blindly trusting some rule can make it hard to really understand what assumptions were made in generating that rule. I’ve recently written up an analytical mathematical model that accounts for both interest rates and inflation in the context of calculating retirement annuities. I’m going to talk a bit about how some of these basic rules actually derive their numbers, how it applies to this extension, and what we can learn from using these simple analytical tools.

Redefining Ownership

Software developers are trained to solve problems. We want to write code that makes life as simple and easy as possible, so that our customers can do anything with a simple click of a button. However, when we try to solve too many problems at once, the resulting product solves none of them well. In this article, I’ll discuss how our concept of Ownership underestimates the customer and undermines our products, and what we can do to be better owners.