What I talk about when I talk about Programming

Broadly speaking there are programmers who think of programming as a means to an end and as an end in itself. The instrumental and intrinsic value appeal very differently to different people.

I’m usually far more excited about how the TCP packets go from one end to the other rather than what’s in them. Cat pictures, banking ledgers or irrelevant spam - they are all the same to me at an abstraction below.

I must have spent 10000 hours tinkering with programming languages and compilers in my free time. I’m reasonably proficient at working with static types (like Rust), functional programming (like Erlang) and the beautiful intersection between them (like Haskell) even though in the last 5 years, I’ve barely used any of it at work.

When I look back at all the side projects I’ve built over the years, none of them had any implicit value except the fun I had learning about seemingly pointless and obscure things. I happen to know a lot about arcane x86 calling conventions now even though I’ll probably never need them in my career. A few summers ago I was micro optimizing LLVM IR trying to save single-digit bytes of memory while I’m probably going to be spinning up r4.8xlarge machines on AWS for the rest of my career. Sometimes I genuinely wish I didn’t know about any of this so I’d be less opinionated and hence less frustrated about broken software.

It’s difficult to find your space in a world where 99.99% of programming is product engineering where you pick whatever tools necessary to get the job done and mechanical sympathy is seen as an undesirable trait.

Title inspired by 📚 What I Talk About When I Talk About Running