Happy end of 2022! It’s been a busy year personally and professionally, one of the most productive (on both fronts!) in a long time. Not that you’d be able to tell from the blog! I didn’t publish much this year, in fact it was the least active blog year since 2017. That’s because most of my time was taken up by a couple of really big projects and I never quite got into the work groove. But let’s cover everything I did this year.
This defined the first half of my year. I first wrote learntla at the end of 2016 and it was sorely in need of a rewrite. It was so important to get done that I put my blog on hiatus in Feb1 (with one exception) and worked nonstop ‘til July. I still have a lot of work I want to do but it’s at least past the point where I can get hit by a bus and learntla can stand as a good resource.
I had two motivations behind a complete rewrite. First, I’ve gotten a lot better at teaching in the past six years and knew I could make much better content if I started over. Second, I wanted to fix up the whole tech stack, including using a different markup format, which meant that I’d have to extract all the content from its markup anyway— more motivation to just not bother. I think I’m successful in both counts. The material is much better now, and it’s a lot easier to modify stuff without introducing inconsistencies.
(The site’s inspired a talk I want to pitch in 2023: XML as Tool of Thought. It’s such a good format for marking up text!)
Really the only thing I wish I could do is reach out to everybody thinking of buying Practical TLA+ and tell them “hey don’t buy this there’s a better resource free online”
So when I put the blog on hiatus, I made sure to specify I’d stop work on new technical content. That was because I’d been planning this piece since, oh, December or so, when I first got the idea for April Cools.
I had two goals for April Cools. One, make April 1st more tolerable by putting stuff online people could look forward to. Second, get a chance to stretch my wings a little and nerd out about something unrelated to tech for a day. I really like writing but my audience reads me for my software takes, which restricts what I can write about. Don’t get me wrong, I love writing about software! But I also like writing about microscopes and chocolatiering and Zardoz and cigar box juggling. So carving out a day to surprise my audience with something new was a real treat.
Anyway, I got a few other people in on the game and Lars even put up a site, the April Cools Club, where you can read everybody else’s output. You should considering doing April Cools in 2023, it’s super fun.
This piece was 90% done and then sat frozen under hiatus for six months. Was really glad to finally publish it! I love this kind of perversity, where you kick a language over and stomp on it. It feels like solving an intricate puzzle, learning how to combine the language features just so to do something completely unexpected.
This was surprisingly misunderstood of a post! A lot of people thought I was surprised by pattern matching or ABCs. The perversity comes more from making non-monotonic types useful: by combining python’s pattern matching and abstract base classes, you could positively pattern match on what a value isn’t. That’s not something people think about! And that’s what makes it so cool.
Also a lot of people thought I was complaining about this interaction. I find it goddamn delightful.
Mimicry is something I run into a lot and had an internal vocabulary for, but could use in discussions because nobody else knew it. I needed to put the term into a post so I had a thing I could point to. Are people gonna actually adopt the term? Dunno. But at least now I can use it without having to define it every single time.
It was also an experiment in a new format for presenting a software term. The standard “blog essay” style works doesn’t feel optimal for every kind of informational topic. I want to do more experiments with post format.
In contrast with the mimicry post, this was a term that already exists in one community (formal methods) that I’m introducing to the wider programming world. There’s already a lot of material on safety and liveness, if you’re a computer scientist. But I think it’s useful knowledge for us regular software developers! That’s a lot of what I do: “here’s a niche concept, how does it apply to you?”
This was also my first time trying to seriously use Inkscape for diagrams, instead of TikZ.2 Inkscape isn’t an abomination in the eyes of God and man, but it also feels harder to precisely modify diagrams in it. Maybe I should just start directly writing my own svg files.
Shortly after finishing learntla Markus Kuppe (the lead TLA+ developer) asked me if I wanted to run a TLA+ workshop for Strange Loop. I’ve taught multiple TLA+ workshops in the past, and Strange Loop is my favorite conference, so it was an easy yes. Just one problem: my usual workshops are three days long and for three people. This would be only one day, and for thirty people.
I spent the next two months writing a completely new workshop from scratch. And it went pretty well! Well enough that I tried running it as an online paid workshop. That went slightly less well, but well enough that I’m confident I can fix the issues and run it again in 2023. Stay tuned!
(I wrote a bit about the workshop design here.)
This was supposed to come out the day after the conf ended, but then I realized it’d be better with links to all the videos, which meant waiting for all the videos to go up, which meant it had to wait until November. I’m probably going to do more of these conference writeups going forward. Two reasons:
Honestly not that interesting as a post. The bulk of LPL was done in 2019 and 2020, this was just writing up and explaining the project to people who hadn’t seen me post about it on Twitter. It did lead to two new submissions, though, so mission accomplished.
That’s complicated. My workflow is giant ADD cope.3 I fall into and out of projects until eventually I stumble into something that sticks and I follow it to completion. It’s not great but it’s worked for me so far. So this is just an idea of what I’m right now planning to do; it may (and probably will) change in the future.
I might (might) have one more small thing out later this week, but otherwise I’m done until 2023. See you then!
Ah crap I forgot to update the alloydocs ↩
My Alloy 6 post came out first, but I think I started the liveness post first. It was another casualty of the learntla hiatus. ↩
There’s an Adderall shortage in the US and it sucks so much ↩