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...
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...
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...
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...
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...
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...
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...