Computer Things: Vacation Phone-In Edition
Hi all!
I'm taking my first "real" vacation since I went independent two years ago. Ostensibly the plan is to spend it all juggling, cooking, and not thinking about tech. Maybe I'll turn off my computer for a while. Who knows!
So rather than throw some idea like "weaponizing Goodhart's law" or "state machine refinements" or "why cheap calculators have eight digit panels", I'll just share some of my favorite blog posts I've written from before 2020. Most you started following me in 2020, so there's a good chance you haven't seen some of these.
-
Why Don't People Use Formal Methods?: A "spite write" where I did a 5,000+ word deep dive into something because I didn't like what I read about it online. The history of provably-correct software, why people don't use it, and how we're making it more accessible for the future.
-
Handwriting Programs in J: The start of my long love-hate relationship with array programming languages. An overview of a language much more suited to drawing on whiteboards than typing into a computer.
-
Metamorphic Testing: An incredibly simple, incredibly powerful testing technique that nobody's heard of because all of the literature on it is trapped behind academic paywalls.
-
Uncle Bob and Silver Bullets: Why "Uncle Bob"'s advice is bad and will make you a worse engineer. Embarrassingly enough, the thing that put me "on the map". I'd already done a lot of TLA+ stuff by that point, but it was this essay that first got me An Audience.
-
Formally Modeling Database Migrations: IMO one of the neatest things I've publicly done with formal methods. Taking two database schemas and formally showing they had identical properties, and that a specific migration between the two preserved the same "form". Also a great introduction to Alloy!
-
Performance Matters: Poor performance means people won't use your software, even if using your software could save lives. And yes, I mean "save lives" literally.
-
Modeling Missing Requirements: Decision tables are great! We can take a famous programming exercise that thousands of people have completed and show it's ill-specified. A good demo of how requirements analysis can save you a lot of money by avoiding client ambiguity.
-
At least one Vim trick you might not know: For all the vim fans out there. The url is "intermediate vim" but it's really advanced vim. I mean, there's a section on handrolling your own statusbar. That's pretty advanced.
Man, I do a lot of writing. Fun fact: since this newsletter started, I've written 80,000 unique words for it. That's like two books worth of content that was never adapted for my blog. I feel like I should sell an anthology or something.
Happy Thanksgiving! Even if you're not an American. Especially if you're not an American.
If you're reading this on the web, you can subscribe here. Updates are once a week. My main website is here.
My new book, Logic for Programmers, is now in early access! Get it here.