The Symmetry in Rust Generics

Rust's generics are a powerful tool, one which can be hard to feel comfortable with. Sometimes when working with a library's generic code, it can feel like being bounced around by the compiler to satisfy some incantation the library author wrote between < and >. While I can…
Read more...

All Programming Philosophies Are About State

I recently realized that all the various programming philosophies are concerned with state, and can be boiled down into a simple statement about how to work with state. Object-Oriented - Modifying a lot of state at once is hard to get correct; encapsulate subsets of state into se…
Read more...

NixOS On the Framework Laptop

I recently purchased a Framework laptop, and since I've been hearing great things about NixOS recently, I decided to give it a go. This post summarizes the steps I took to get everything set up (most importantly suspend-then-hibernate functionality) and some thoughts on the whole…
Read more...

Two Different Views of What Decoupled Code Means

I had a discussion with a coworker the other day on the design of a certain piece of code. My goal was to add a new sub-service to a piece of software that this coworker had been the main architect of, and which I was not particularly familiar with. My initial proposal was to add…
Read more...

Why Your Company's Documentation Sucks

There is a common trope about software engineers that they hate to write and maintain documentation. From a shallow view of all of the companies I have worked for, this stereotype seems to hold. Each company has had absolutely garbage documentation: it didn't exist, it was poorly…
Read more...

The Many Faces of a 10x Software Engineer

Everybody wants to hire, or to be, a 10x software engineer at the company. The engineer who can get far more done than their peers at about the same price. I have witnessed a few 10x engineers, and on certain teams I've even been the 10x engineer, and the reality is that a 10x en…
Read more...

Why Are There No Technicians in Software Engineering?

When considering other engineering disciplines, engineers rarely build the product. In electrical engineering, the product design is specified in ECAD, exported, and then assembled by a mix of robots and technicians. Similarly, mechanical engineering specifies the product design …
Read more...