2020

Life

At the very start of the year I thought I’d do something little different and begin working remotely. I moved from SF out to Alabama, with intentions of teaching a programming class there, and making a whole new set of friends. I had never lived in the south before, and California was getting slightly old, so it could have been a great adventure. Needless to say, the class never happened. I did discover what it’s like to be in quarantine isolation in a completely new city for months on end.

Unfortunately this means I did not fulfill all my goals for this year, since one of them was a fairly intense in-person social goal. However, although I don’t have official numbers for every year, I’m pretty sure I smashed my old record for video games beaten in a year. You take what you can get.

I’ve also kept track of media I’ve interacted with over the course of the year. I’m not convinced it’s the best way to sum up a year, but it’s easy enough to keep track of.

Writing

I definitely didn’t write as much as I did last year, but I didn’t intend to, so that’s okay. I still think that the more-technical material is usually my best work. When I’m just riffing on some abstract mental model of how things might intuitively work, I tend to have worse arguments, and probably write less clearly about them. Those kinds of ideas can be fun to write about, though.

The bit of writing I’m probably most proud of is Esqueleto Select Syntax, because some people told me directly how much it helped them understand more clearly, and it’s a really good feeling to hear that kind of thing. I also thought Journeying Into Harry Styles’ Solo Discography was fun to write, and although it happened way back in January, Deconstructing Hadamard Gates demonstrates some fun quantum computing ideas, with simple math, which was fun to explain.

Programming

The year started with rrule, a datetime recurrence rule parser and formatter. It was my first-ever package on Hackage, and it just hit 200 total downloads.

Over the summer I built a tiny, statically typed, non-strict, purely functional programming language, to better understand how such languages work. I also worked on a tiny proof system for classical propositional logic, which lets you “run” logical statements as code to see if they can be proven.

In the fall, I did some machine learning stuff, including a neural network using LTSMs to solve the XOR problem, a project that does character recognition on the chars74k dataset, and an implementation of the Vanilla Policy Gradient deep learning algorithm.

Finally, in the last few weeks I put together a tiny proof-of-concept database-backed API with Haskell, Servant, and Persistent, as well as Haskell bindings for PyAutoGUI.

As far as contributing to other open source projects goes, I added support for big query tuples to persistent, as well as doing a small MonadLogger vs. MonadLoggerIO FIXME. I also made some typo fixes to tensorflow, esqueleto, Fundamentals of Piano Practice, and Theorem Proving in Lean. I expect to be doing some work on haskell-cpython going into 2021.

I’ve noticed a bit of a pattern, where on many projects I’ll write just enough code to be worth a blog post, and then stop. I didn’t do any really extensive side projects this year; I’m curious whether that will change next year. I think I’m generally interested in increased programming productivity/output, but not super sure how best to get there. Maybe I should spend some more time thinking about possible extended projects I’d be happy to work on across multiple weeks.

Music

I made my first dollar in the music industry this year, from streams of songs I made. Definitely not enough to go pro, but that was cool to see.

I also started taking piano lessons. It’s been interesting to have that specific kind of structured learning for some skill; I haven’t had a teacher to work with on anything in a long time. In a few months, I’ve finished working through one classical book and learned a few jazzy pieces (especially jazzy christmas tunes). I’m looking forward to making huge technical advancements next year.

I don’t think I’ve found a more consistent activity for getting into the “flow state” than playing piano. Programming sometimes gets me into a deeper focus, but piano gets me to focus essentially every time.

My favorite album of the year probably came way back in January, with Spencer Brown’s Stream of Consciousness. I noticed I started listening to music somewhat less often this year. Often I used to listen at work, to drown out office noise, but when you work remotely you have more control over noise.

Art

This fall I started creating some visual art, on a whim. It started mainly with surreal photoshops, then moved into a bit of drawing and some odd 3D stuff. It’s cool to have another angle of attack for self-expression, even when what I’m expressing is almost always just “look at this weird thing I cobbled together”.

I didn’t know where else to put this, but I guess it fits best here. This year I had a chance to give a five-minute workshop covering five topics in one minute each. The lesson was about how to construct an infinite list of all the fibonacci numbers in haskell, and introductory photoshop, and an explanation of the variational principle of quantum mechanics, and how to play a basic arrangement of “Teardrop” by Massive Attack on the piano, and finding the sweet spot on a tennis racket, by feel. That was super exciting, and very memorable. While giving the talk, there wasn’t any time to worry about whether things were going well as I bounced from the haskell stuff in a terminal to physics on a whiteboard to a demo at the piano. Probably my highest words per minute of any five minute period throughout the whole year. I felt like I learned something important by doing that, but can’t quite express what.

Fitness

Although I all but completely dropped tennis, this year I started weightlifting in earnest. It was interesting to do something so quantitative, but so physically taxing. I was pretty badly calibrated for setting weight targets, as I finished my goals for the year by August, but that means I got to completely blow my original goals away.

I hope to get back to tennis as the weather warms up again. I also want to do more hiking. I tend to walk a lot more when I travel, and I didn’t travel much this year.

Books

I read not one, but a whopping TWO fiction books this year (Dune and A Confederacy of Dunces). Maybe I’ll read three (or even more?) next year.

I also got better at “reading badly”—getting as much understanding as I could while going through something, but not worrying about completely getting everything. If I had insisted on legitimate, full understanding, I’d still be slogging through Algebra: Chapter 0 to this day.

Picking a book of the year is pretty hard. I think maybe I’d go with Reasons and Persons, because while it’s a smidge out of my comfort zone, I liked following along with the arguments. The whole slew of “morality” books came as recommendations from a friend. It’s atypical for me to disagree with books as much as I did this year (since normally I’m just learning some factual material directly), but I did find a lot of substance to agree with as well.

I’d give runner-up awards to Death and The Road to Reality.

Title Author
Optics by Example: Functional Lenses in Haskell Chris Penner
Quantum Computing Since Democritus Scott Aaronson
The Little Typer Friedman, Christiansen
Human Compatible Stuart Russell
Deep Learning Goodfellow, Bengio, Courville
Consciousness Explained Daniel Dennett
Cambridge Handbook of Artificial Intelligence Frankish, Ramsey
Ending Aging Aubrey de Grey
Algebra: Chapter 0 Paolo Aluffi
Death Shelly Kagan
Atlas of Human Anatomy Frank Netter
The Art of PostgreSQL Dimitri Fontaine
Implementing Functional Languages: A Tutorial Simon Peyton Jones
The Life you can Save Peter Singer
Good and Real Gary Drescher
Living High and Letting Die Peter Unger
The Precipice Toby Ord
Fundamentals of Piano Practice Chaun Chang
The Perfect Wrong Note William Westney
Reasons and Persons Derek Parfit
Algebra-Driven Design Sandy Maguire
Dune Frank Herbert
Theorem Proving in Lean Avigad, de Moura, Kong
Designing Design Kenya Hara
Strangers Drowning Larissa MacFarquhar
Abstractions in Context:
Case Studies in Haskell Library Design
William Yao
The Road to Reality Roger Penrose
Probability Theory E. T. Jaynes
Topology James R. Munkres
Homotopy Type Theory The Univalent Foundations Program
Proofs from The Book Aigner, Ziegler
A Confederacy of Dunces John Kennedy Toole

Games

This is possibly the most impressive, or at least the most extensive, of my 2020 lists.

My favorite game that came out this year is probably Hades, with Ghost of Tsushima not far behind. I also really liked playing Sekiro, Hollow Knight, Bloodborne, Earthbound, Katamari Damacy, and many more from this list.

However, even among all these there weren’t really any great puzzle games I know of released this year.

Title Platform
Okami PC
Opus Magnum PC
Thinking with Time Machine PC
Return of the Obra Dinn PC
Bloodborne PS4
Marvel’s Spider-Man PS4
Eliza PC
Manifold Garden PC
Sekiro PC
Bully PC
Prey PC
A Short Hike PC
Soma PC
Super Mario Galaxy 2 Wii
SUPERHOT PC
Everything PC
Rainy Season PC
Echochrome PSP
Thrillville: Off the Rails PC
Stepmania PC
Animal Crossing: New Horizons Switch
XCOM 2 PC
Earthbound SNES
Satisfactory PC
Titanfall 2 PC
Outer Wilds PC
Ni No Kuni 2 PC
Ace Combat 7 Skies Unknown PC
Star Wars Jedi: Fallen Order PC
Ultimate Chicken Horse PC
Donut County PC
Snakeybus PC
Doom Eternal PC
Scribblenauts Unlimited PC
Hollow Knight PC
Jedi: Fallen Order PC
Valorant PC
Persona 4 Golden PC
Resident Evil 2 PC
Planet Zoo PC
Ghost of Tsushima PS4
Dead Space PC
Mindustry PC
Super Mario Galaxy Switch
Super Mario Sunshine Switch
Spelunky PC
Astroneer PC
My Friend Pedro PC
Hades PC
Noita PC
Risk of Rain 2 PC
What the Golf PC
Among Us PC
Ori and the Will of the Wisps PC
Superliminal PC
SEGA Bass Fishing PC
Nioh PC
Katamari Damacy Reroll PC
Hue PC
Phasmophobia PC
The Gardens Between PC
Ghostrunner PC
Parappa the Rapper PS4
Uncharted 2 PS4
Need for Speed PS4
The Last of Us 2 PS4