I did some non-work and non-computer things
This is a big departure for me. My vacations are almost always either visiting a place I previously lived in order to see family or stay-cationing in front of this computer.
- I went to Maui. Snorkeling at Molokini. Road to Hana. Hiking and sunset at Haleakala. Cliff jumping at Black Rock Beach (only once, and only after being bullied by an impatient 8 year old)
- I went Sweden. Stockholm was great. Ice Hotel was okay. Abisko was my favorite. The northern lights were the closest thing I've ever had to a spiritual experience.
- I picked up wood working. I am... frustratingly bad at it.
Most popular blog entry
The Tyranny of "what if it change?" as a software design principle
This spent about a day at the top of Hacker News and Reddit. While not the first time my low-effort ramblings have made a splash, this one had the outsized effect of generating tons and tons of comments and emails. I accidentally "Poe's Law"d more than a few people. There were a fair number of emails asking to learn more about the practices of "speculation driven design."
What was most notable about all this was the degree to which I got to be on the other side of the Internet Comment Machine. Suddenly those reddit comments weren't about some anonymous nobody I've never met – they were about me! Very confident comments and speculation about me – a literal anonymous nobody. It changed how I view all these anonymous comments about anonymous nobodies on the internet.
Favorite Software:
- Obsidian - Some people go crazy with it. Usually due to some kind of How to Take Smart Notes / Zettelkasten fueled hysteria (which, admittedly, I also went through). However, I've settled on just using it as a humble markdown editor. 99% of the value is just putting all my notes in one spot. The only wacky thing I do with Obsidian these days is build this blog.
- Anki - Technically, it's my least favorite software. I use it begrudgingly. It's clunky and unintuitive. If you try to do anything other than the main happy path, well god help you: you're off to google to hunt around for some random comment that figured out the series of byzantine steps required to do what you're trying to do. But... despite that, damn if it isn't really good at drilling stuff into your head.
Favorite Papers
- Monoids Theme and variation - This paper is a ton of fun. It takes a simple idea and playfully pushes it to its edges. It was a great reminder that simple ideas can get you very, very far. Further, simple ideas are frequently better ideas! This paper also blew my mind with encoding a monoid and its compositions as a data type which can be evaluated later. It's one of those things that makes you go "oh shit, of course you can do that!" To my Java addled brain, this was a huge revelation for how things can be modeled.
- Using Lightweight Formal Methods to Validate a Key-Value Storage Node in Amazon S3 - I try to force this paper into the face of everyone who writes software. This is what it looks like when people are doing it well. This paper is a great step towards filling the gap in practical Property Based Testing content. I don't know how many papers and blogs of reversing a list people think we need, but, having just the original one was probably enough. The S3 paper is great because it's not about testing some trivial action on a trivial data structure, but about testing a complex, real-world, mission critical system. It about how they did it, why they did it, what tools were used, what the pit falls were, and what they found was effective versus not. I learned quite a bit here and realized my own PBT work is still amateur hour.
Favorite books:
- Cat's Cradle - I will reread this book many times. I'll do so for the same reason I read The Kentucky Derby is Decadent and Depraved over and over: I fucking love the writing. Short punchy sentences. No waste. Everything has a distinct rhythm to it. It's a style of writing I try my best to constantly steal and emulate (all while failing miserably – see how long and meandering these sentences are? Why can't I delete words?!)
- Axiomatic - Specifically, the opening story: The Infinite Assassin. The book is made up of what I'd call "idea" stories. They present something really interesting to think about, and then... they end. This is OK. Greg Egan makes the thinking part the fun part. But The Infinite Assassin – this was by far the stand out. I can't remember the last time I was this taken in by a fictional universe.
- Command and Control: Nuclear Weapons, the Damascus Accident, and the Illusion of Safety - We apparently made it through the 40s and 50s without killing ourselves thanks to dumb luck. The number of close calls, near misses, and almost nuclear detonations is staggering. Peak military strategy in the time before missiles became viable was about what you'd expect : put bombs on planes, put those planes in the sky, and... keep them up there at all times. So, now we have cool stats about the failure rates of that strategy. For instance, in 1957 every 320 flights there would be an unplanned jettison of an atomic (or hydrogen!) bomb due to technical issues. Neat! The true horror of the book was, of course, the humans. There never seems to be a shortage of high ranking monsters in the government willing to passionately argue for terrible, terrible things.
Least Favorite Books I read:
- Fundamentals of Software Architecture - While there are nuggets of sanity in here, the technical recommendations often go off the rails into not even wrong territory.
- Hyperion - A group of strangers tell each other their life stories. They do this in an order determined by a straw pull, which is, of course, how all normal conversations work. Over the course of 500 pages, our mix of Hallmark™ and /r/iamverybadass characters recount their too long of stories involving the spooky-dookie Shrike . At one point, this is written: “Words are the only bullets in truth’s bandolier. And poets are the snipers” which caused my eyes involuntarily snap shut and roll into the back of my head. Now permanently blind, I dictate this blog aloud to my stenographer.
- Hollow - Characters go for a walk, review a painting, and then return home unchanged and having not grown at all. I read this while sick with covid. I'm not sure which experience was worse.
Favorite Movies & TV
- Pig - a movie about grief, and processing it, and deciding how you want to spend the limited time we get here. I have watched specific scenes many times. "Every day you'll wake up and there will be less of you" is a brutal way of describing to slow erosion of a life spent grinding away on things you don't care about.
- Everything Everywhere All At Once - Amazing. Why am I fighting back tears while people with hotdog fingers are on screen and one person is riding another person like Ratatouille?! I loved this movie.
- Primal - a master class in visual story telling. Go watch it now.
- Severance - Great premise. Fantastic casting. "Fuck you, Mr. Milchick!" Most TV sci-fi tends to be pretty superficial, but I loved that this actually scratches into the philosophical implications of its world. I'm terrified that they don't actually have an ending for this story and it's going to Game of Thrones me.
Favorite Games:
- A Short Hike - This might be a perfect game. I loved everything about it.
Plans for 2023:
- Dive deeper into dependent types. I've been really enjoying Idris so far, but I'm only at the very, very beginning of wrapping my head around the kind of things (and thinking) that dependent types enable.
- Learn enough Japanese to be able to vaguely interpret signs and clumsily bumble through basic interactions. Japan is the next vacation target. While I could just point Google translate at everything, it'd be fun to see how far I can get without it.
- Write a series of posts on the exciting and ground breaking topic of......... java. Specifically, functional programming in Java. Existing books and media in this area tend to focus on the unimportant superficial dressings of FP (replacing for loops with map/filter/reduce), or on things, which while useful for background understanding, are impractical for actual use in the language due to limitations (like IO monads). I think the java world needs a Clojure Applied style book that is focused on what writing large scale production software looks like in the language when taking a functional approach. What works, what doesn't, and where to give up purity in exchange for brute practicality.
and also figure out what I'm doing with my life and career. nbd.