Assumed Audience: People who like reading year-in-review summaries. (I think that’s mostly just me, a few years in the future!)
This year was no one’s idea of fun, I think, and it certainly looked nothing like I hoped it might when I kicked things off back in January. It was a good year for me and for our family in many ways nonetheless, despite the hardships we faced (and granting that our hardships have been mild compared to what many have faced). So, here at the end of the year, some reflections on 2020. Feel free to skip around to whatever is interesting to you!
Thanks to our decision to make Winning Slowly Season 8 a book and movie club focused on questions of epistemology and technology, I read a lot more books this year than I have the last few, to my great delight. The highlights for me this year (links are to the reviews if I wrote them, to the book on Alibris if not):
- Dark Matters: On the Surveillance of Blackness, Simone Browne
- The Culture of Theology, John Webster
- Twitter and Tear Gas: The Power and Fragility of Networked Protest , Zeynep Tüfekçi
While I very much enjoyed many of the other books I read this year, these ones most changed my mind, most helped me think more clearly, or were just plain joyful — and just plain joyful was in short supply in 2020.
For nonfiction, The Culture of Theology easily takes top place for me. The book was a wonderful introduction to John Webster; I later ended up picking up half a dozen more volumes by him and am finding those equally encouraging and challenging (as my Library page no doubt indicates). On any year except the year I discovered John Webster, Zeynep Tüfekçi’s Twitter and Tear Gas would have been the unquestioned winner, as an astounding book which manages to pull the hat trick of being good journalism, good academic writing, and good policy/agenda-setting.
For fiction, Robin Sloan is just the best: both Sourdough and Mr. Penumbra’s 24-Hour Bookstore were beautiful, joyful, exuberant books. I would have enjoyed them any year, but especially in 2020, they were a breath of fresh air. Jurassic Park was a much more interesting book than I expected going in: I had read Crichton before and while I had always enjoyed his work, it’s fair to say that he was at his very best across the board in Jurassic Park. It’s a good thriller, but more importantly it’s a great argument about science and technology. Finally, Delta-V was the best new “popcorn” fiction I read — a lovely near-future romp which gently poked at the current crop of up-and-coming space barons.
I’m slowly coming to terms with the fact that while I have spent the last half decade proclaiming my desire to write essays… in practice I have not prioritized that desire. This year, I wrote exactly one essay on this site (and I only realized it was an essay in retrospect, as I penned this very sentence), none for Mere Orthodoxy or other magazines, and maybe two and a half for the newsletter… if I’m being generous in my definition of “essay.” The problem, in short, was the same as it was a year ago:
Setting a vague goal of “write more essays” hasn’t done it; what I need to do is allocate time every month — or better, every week — to work on essays specifically. Then I need to defend that time against the instinct to go do other things instead, whether those other things are tinkering with my website’s design, writing a blog post instead of an essay, or something else entirely.
I once again mostly failed to do this! But I still care about it, and Jaimie continues to encourage me to do this kind of work. Accordingly, I have set some things in motion for 2021 to force my hand. More on that in the months ahead (spoilers: keep your eyes on the Elsewhere section/feed, which should get a bit more exciting)!
As usual, though, I wrote many tens of thousands of words besides essays — roughly 80,000 on this site, and roughly another 30,000 for my now-concluded newsletter, for a total of about 110,000 words.1 The very best general-interest work I did this year in my opinion was in these four pieces:
A two-part discussion on software quality in my newsletter:
Home-ier Economies — another newsletter issue, in which I attempted to get down to brass tacks on what building an economy which is healthier for families and communities would actually look like
Private Chat and DMs are Good, Actually — a rejoinder to a common refrain I’ve heard around the tech industry, and the only real essay I managed on my site this year
I’m also proud of a handful of shorter and less-involved pieces I wrote this year:
Presence, on God’s presence with us when we gather as a church — a particularly important and difficult topic in 2020
my review of Politics & The Order of Love, which I think hits both the personal note (“how did this book work for me?”) and the public review note (“what does this book do in general?”) fairly effectively
The majority of my writing this year was on technical subjects, driven partly by the need to provide learning helps for other engineers at work, but also including a variety of materials not directly related to my day job. My favorite miscellaneous technical write-ups this year:
A Git Workflow for Managing Long-Running Upgrades — sharing some hard-won lessons from the trenches of four consecutive upgrade efforts I ran on the LinkedIn.com app over August
2019 – April2020.
Data Constructors — explaining how a particular feature of languages like Elm, OCaml, Haskell, etc. works… in terms that developers with more “traditional” language backgrounds like Java, C♯, TypeScript, etc. can understand:
Things I Was Wrong About: Types — the title is Hacker News bait, and I knew it, but I stand by the title and the contents of the post: an exploration of how I changed my mind on the value of type systems half a decade ago, when I encountered type systems that actually solved the problems I needed them to solve.
Finally, I wrote a lot of posts focused on helping other Ember developers internalize how things work in the new edition. A number of these were fairly straightforward “how do I do x?” posts. Substantially the more interesting were the posts which aimed to teach something more fundamental:
Async Data and Autotracking in Ember Octane — an attempt at showing both how to use autotracking effectively in practice and how to think about async data as just another kind of data.
Autotracking: Elegant DX Via Cutting-Edge CS — trying to make the computer science underpinnings of Ember’s reactivity system accessible to more folks. I’m quite proud of this piece: I think it works really well as a deep dive that connects a working reactivity system to the computer science behind it.
On the other hand, I originally also thought this would help people grok how to work with autotracking, especially around component arguments, but that hasn’t really panned out. I’ve since realized that while I often work out how to build things by deeply internalizing how they work, a lot of people come at it from the other direction: working up to how it works by long and deep experience with just using it. This kind of deep dive actually intimidates a lot of people! I knew that in the abstract, of course, but saw it play out very concretely with this piece. Thus, the next item on the list!
This year went almost perfectly for Winning Slowly. We read 11 books and discussed all of them on air. The last two episodes came out two weeks later than they should have but otherwise we not only published all the episodes we had planned but did so on schedule. It was the best we’ve ever done. Now I’m exhausted and we’re going to take a long break. But I’m proud of the work we’ve done here. While I don’t know exactly when Winning Slowly will return, I do have high confidence Stephen and I will be back at some point.
I also appeared on the opening episode of Sean Chen’s podcast Humans of Open Source, which was a delight. I am actively looking to appear on others’ podcasts in the year ahead — on subjects both technical and theological. I’ve gotten a number of speaking requests late this year and I’m interested in making speaking a more regular part of my public presence going forward, so I’ve added up a Speaking page; feel free to get in touch via that page if you’re interested in having me speak — I’m well set-up for both audio and video now!
Covid-19 more directly affected my fitness regimen than almost anything else. I had originally planned to run the Colfax Half Marathon again, after very much enjoying it in 2019. The race was cancelled, of course: there was no way it could have gone on in a normal way at any point this year, but it was scheduled for mid-May, when Colorado was still locked down hard. That took away the impetus for long-distance training. And of course there were no long-distance bike rides to do for the same reason — with the same result for me.
I stayed active at a base level most of the year, but I definitely lost a lot of ground compared to 2019. I didn’t do much anaerobic work of any sort, and I did very few long runs after everything shut down in March. I need a better mix of both in 2021, regardless of what races do or don’t happen. I also didn’t manage to lose five pounds the way I’d hoped… but I also didn’t gain any weight this year, so I’ll take that as a net win given how stressful the year was.
For 2021, I have a handful of quite-achievable goals:
run at least 1,000 miles — should be pretty doable; I ran over 700 miles this year despite all the limits of the year, getting very sick a couple times, and not having anything to train for.
do at least 30,000 push-ups — a goal that is actually much more doable than it might sound: that’s doing 100 push-ups a day and taking off every Sunday.2
ride at least 500 miles — this is the real stretch goal for me: it will require me to actually put some miles on this year. I only managed about 200 miles this year, so I’ll need to make more consistent cross-training time
If I can figure out how to set up a pull-up bar, I’ll add a pull-up count to this list as well! (It’s weirdly difficult to find a good spot in my house for a pull-up bar!) And of course I’ll be aiming to shed those 5 pounds if I can manage it, but even more urgently to do as I have the last few years and avoid gaining any weight. In all of these goals, my biggest concern is to be healthy — sustainably healthy, for the rest of my life.
There are two major things I have to cover in this section, and they’re very different from each other: LinkedIn (going great!) and rewrite (…not so much).
I’m now wrapping up my second year at LinkedIn, and I’m delighted to report that it remains a fantastic fit for me. I’ve told Jaimie over and over again how happy it makes me to be here: a place where I feel like I can make real contributions that are well-matched to my abilities and interests, and where those contributions are recognized and valued. In every other job I’ve had, by the time I had hit the two-year mark, I was deeply frustrated and trying to figure out how long I could endure before bailing. With LinkedIn… not so much. I’m not even tired of my current team yet, and there are lots of opportunities for lateral motion internally when I do get there.
Working at this scale — a multiple-orders-of-magnitude jump from my previous role — has had its challenges and frustrations, but in so many ways I feel like this is what I was made for, at least at this point in my career.
At the end of 2019, I wrote:
If 2019 was the year of getting my feet under me at LinkedIn, I’m hoping that 2020 will be a year of really starting to make an impact.… I want to continue growing as a mentor to those more junior engineers. I want to expand my influence and leadership both within my own organization and in cross-cutting efforts. I want to deliver on a technical front the things LinkedIn needs to continue excelling — both by executing on initiatives other leaders have already identified as important, and by identifying and executing on initiatives I myself identify as important.
Happily, I can say this year was a success to varying degrees on all those fronts.
I have moved even more into a position of leadership within the front-end community at LinkedIn. In summer 2019, I identified that Ember Octane was the critical technical investment I needed to focus on for the LinkedIn.com app, and I have spent nearly all my time since then doing whatever was necessary to get us there — whether that meant spending 8 months working on upgrading the app through from Ember 3.4 to 3.8 to 3.12 to 3.16, writing documentation and mentoring developers on the new idioms, or coordinating the launch of a cross-cutting initiative in which every team on the app is committed to finishing the conversion over the next few quarters.
I have also self-consciously leaned into the role of mentor, sponsor, model, and leader this year — here with more mixed success. I’ve done very well in some of those mentoring relationships, including helping a colleague get promoted. In other relationships, I’ve failed to deliver what my mentee needed — and had to take a step back and figure out how to do better. Similarly, I’m only just starting to get a handle on how to sponsor others’ work effectively; it’s one of the areas I want to grow most in 2021. I’m learning a lot.
I think I’ve been more successful as a model than as a mentor. One of my other goals for 2021 is to be more explicit with myself, my team, and my management about what I’m modeling. I need more feedback about whether I’m successfully modeling what I’m aiming to model, about what other things I may be modeling without realizing it (for good or for ill), and about what other things I should start modeling. If there are things I’m doing well without realizing it, becoming aware of them will hopefully allow me to become more effective. Likewise, becoming aware of the places I’m modeling the wrong things will help me stop doing them!
Part of this conscious move into leadership has included writing on things which are less directly technical and more targeted to organizations — as in Private Chat and DMs are Good, Actually. This is good and important, and I intend to do more of it in 2021. At the same time, I am concerned that at least some segments of the industry seems to be actively moving toward a model of the Staff Engineer which sometimes over-emphasizes paths which take engineers away from hands-on engineering work. While those paths are good, I want to make sure that other paths and models for Staff+ engineering are visible as well. Accordingly, I also want to spend time in 2021 working internally and writing and speaking publicly about the more hands-on and deep (rather than hands-off and broad) approach to Staff+ engineering work. We need space in our senior engineering leadership tracks for lots of kinds of engineers. Several of the essays-or-talks I’m working on seem like they might be a good entry into some of the ongoing conversations in this space.
That leads me to my final note here: I’m very much interested not only in the specific ideas I have here, but also in actively becoming part of ongoing conversations in the industry more broadly. Whether the subject is Staff+ engineering work, the merits of particular approaches to architecture, or programming language adoption, I am starting to feel comfortable having things to say at this level. One of my emerging goals for the second decade of my career is to have some degree of impact on the industry at large. Executing effectively on that is another question, of course — but I am aiming for it!
Midway through 2020, I put rewrite on indefinite hiatus. As I summarized it in the app newsletter:
We’ve hit a really serious family health issue. Without getting into the private details, suffice it to say: it’s big, and hard, and it’s taking up pretty much all of my mental and emotional bandwidth at this point, and there is zero way to know if or when we’ll come through to the other side of it.
I was going slowly enough before we hit this. As things stand, I see no viable path to completing this project unless things unexpected and dramatically change with this family health issue, and again: there’s just no way of knowing. Maybe we get a pleasant surprise and get through this, and I get to pick this back up in six months. Maybe it’s never. We just don’t know right now.
I’m grateful to report that we did, by and large, get through that particular family health crisis, but the rest of the year was unrelenting in its difficulties. I continue to see no path forward for me to work on this project actively at this time. That makes me sad in many ways: I had been dreaming up and then actively (if slowly) working on this app for half a decade when I put it on hiatus indefinitely. At least for now, it remains the right call.
I chose the phrasing indefinite hiatus carefully. rewrite is on hiatus, not cancelled: it’s possible I will come back to it at some point.3 The hiatus is indefinite, though: I have no idea when I will get back to it… or indeed if I will. It is entirely possible that we will never judge it the right time for me to invest in rewrite over and above other considerations.
I take it as no small consolation that LinkedIn has been such a joy for me, given how deeply frustrating it has been to set aside rewrite.
There are obviously a great many unknowns about 2021. The most obvious questions are around the effectiveness of the vaccines, the effectiveness of our distribution of them, when and how the world will get “back to normal,” and what “normal” will look like when we get there. Many of the goals and aspirations I described in this post will undoubtedly be affected by how things go in the world at large. I think we have reason to hope that 2021 will be a better year than 2020 was, though, even if it takes us a while to get to the better parts of it.
For my part, I aim to just keep plugging away at the things I have been plugging away at. If I can stay mentally, emotionally, and physically healthy this year and keep serving my family and friends and church well, I’ll count it a win. If on top of that I can make good progress on career goals and even some public writing (!) I’ll count it a huge win.
For the curious: this excludes all Notes entries and any Library entry filed as a quote. Excluding quote posts excludes some posts which also included some reading notes, — and includes all the metadata from the various posts. My word count script is very dumb:
$ rg -0l 'date: 2020' site/journal site/essays site/library |\ xargs -0 rg -vl0 '^ ( )?- quotes' |\ xargs -0 wc -w
So “roughly 80,000” is close enough for my purposes. ↩︎
The stretch goal is to double that! ↩︎
I downloaded Xcode onto my new M1-powered MacBook Air just this evening, because I am feeling the itch a bit! Maybe I’ll build a bit of UI here and a bit there! Who can say? ↩︎