A Year in Review: 2023

A few days ago I said I’d make this website more personal. The year is coming to an end and I’ve got some free time. So I thought I’d hit the “snooze” “pause” button, look back and reflect on what happened in 2023. I’m not the kind of guy who does new years resolutions but I think doing a retrospective and capturing the what was important to me is a good way to end the year. Who knows, maybe this will become a recurring thing moving forward.

a tree in front of a setting sun

This is going to be a long one. I won’t tell anyone if you skip straight to the sections you’re interested in:

Work

2023 has been a wild roller coaster ride at Stack Overflow.

The year started out with fantastic news for myself. I got a promotion in April. I’m now a Principal Software Engineer. Instead of working on one of our product engineering teams, I now report directly to the CTO and act without a direct team. My work revolves around engineering-wide initiatives, establishing a strategic direction for our engineering teams, doing tons of research work, and evolving our architecture in a collaborative way. This promotion was quite a big change for me and I still feel like I don’t have a good idea of what I’m doing. The new role is a healthy stretch and I’m learning a lot about working strategically, software architecture, and influencing people. Jody, our CTO, is honestly a great role model for me (and no, he didn’t pay me to say this, but maybe he should…?) and I learn a lot from working closely with him.

We had a company meetup in Chicago a little later. It was amazing to see a lot of my coworkers in real life for once, and we had a good time over food, drinks, games, and exploring the city.

Over the course of the year we managed to turn our newly established “Architecture Guild” into a highly collaborative community. Engineers across the company feel safe and comfortable pitching new ideas, getting feedback, discussing trade-offs and agree on distinct and helpful steps forward in a respectful and collaborative fashion. I’m really proud of what we achieved here and I’m happy to see that we take a much more collaborative approach to software architecture that enables teams to act more autonomously at the same time.

Unfortunately, a large part of the year has been much less sunshine-and-rainbows for the company and many of my coworkers.

The company announced layoffs in May (letting go of 10% of our people) and once more in October (this time 28% of our folks have been affected). I got lucky. I’m still there. But seeing a lot of people I loved working with being let go sucked big time and had a massive impact on my morale. The new focus on AI seems understandable given the excitement LLMs generated this year. Personally, I’m skeptical about the current industry-wide trend of sprinkling “AI” over each and every product in an attempt to cash in on the current hype. I understand why it can be a reasonable and necessary move for Stack Overflow, and some of the features we’ve got in the pipeline genuinely look like huge steps in the right direction. But thinking about LLMs and AI isn’t really that exciting to me personally at this point.

Taking some generous vacation at the end of the year helped me to take a deep breath and recharge. I’m happy to go back and kick butt in the new year, and I hope we can soon recover from what’s been a challenging year.

Learning

Learning new things isn’t just a necessity in my job as a software developer, it’s also something that naturally excites me. Obviously there are a lot of things I learn unintentionally, because I mess up and learn the hard way. And then there are things I learn intentionally, by setting aside time and focus to learn more about a given topic.

Here are a few things I learned this year:

  • Software Architecture: In my new role as Principal Developer, there’s a bigger focus on software architecture than before. I took a lot of time this year (and the year before) to sharpen my saw and (re-)discovered a lot of evergreen lessons around software architecture. My main takeaways revolve around the benefits of modularization, awareness of coupling and cohesion, and how architecture and organizational structure influence each other.
  • Elixir & Phoenix: Elixir continues to fascinate me. I started playing around with Elixir and Phoenix, an Elixir-based web framework, years ago but I never got beyond early explorations. The language and its ecosystem excites me like hardly any other language before. The functional programming style takes time to get used to as I’m someone who grew up on object-oriented languages. I don’t have an excuse to learn Elixir on the job so I’m trying to get better by doing silly pet projects a few exercises on exercism, and reading a ton of books about Elixir, Phoenix, LiveView, and OTP. It’s challenging me in a fun way and makes me think about distributed systems much differently than ever before. My progress is slow, but its progress nonetheless, and I’m still having fun.
  • CSS & Frontend: I rebuilt my personal website a few weeks ago. This gave me an excuse to start from scratch and learn a few new things that popped up in CSS and frontend land since I last paid attention. I got to play around with astro (which was really fun), get a deeper understanding of CSS flex and grid layouts (and freaking margin collapse), the new native CSS nesting, transitions and animations, and much more.
  • Svelte: Stack Overflow finally decided to adopt Svelte as a modern JavaScript framework after years of using jQuery and home-grown solutions extensively. I had taken a look at Svelte before, but seeing it being used at work gave me another excuse to go deeper. I built two tiny pet projects for myself and friends that proved to be great fun (I’m absolutely not going to share those projects here, they’re way too silly and personal). I continue to be hesitant around using single page application (SPA) architectures by default (and I think stackoverflow.com works great as a server-side application with the occasional JavaScript sprinkled on top for better user experience) and I appreciate the flexibility Svelte brings to the table, from being the small sprinkle of JavaScript all the way to being a full-blown SPA framework (via SvelteKit).
  • AI & LLMs: Learning something about AI, neural networks, large language models, and embeddings turned out to be inevitable in 2023. For me, this was no different. Due to the massive hype that large language models like ChatGPT sparked this year, everyone’s trying to jump on the hype train. As I was largely ignorant about anything related to artificial intelligence, machine learning, and natural language processing until now, I had quite some homework to do in order to understand the basic concepts and what everyone’s talking about. I’m happy I did my homework and got to a good enough understanding, but I can’t say that this is anything I get particularly excited about.
  • Leadership: Being authentic, transparent, and vulnerable is my preferred way to lead. I learned this before, and I’ve discovered this again and again over the course of this year. Saying “I don’t know” if you don’t know something is often a great idea. Admitting and owning your mistakes builds trust like hardly anything else. So does being yourself instead of putting up a facade. In my new role, I need to convince and influence a lot of smart and experienced engineers. I need to find and shape a long-term direction for all engineering at Stack Overflow, and that means getting buy-in from a lot of people as I’m leading without authority. I’ve been most successful convincing and influencing people to consider a new direction when I openly admitted I don’t have all the answers, when I was open about where I’ve been wrong, when I apologized and owned mistakes I made along the way. Tanya Reilly’s The Staff Engineer’s Path has been a great resource for me.
  • Making decent Neapolitan-style pizza: I’ve probably made over 100 of those over the course of the year. I’m still far away from making perfect Neapolitan-style pizza, but I’m getting better every time. It takes practice and patience, and it’s a super fun process. And a shitty pizza is still a great pizza, so it’s a tasty journey.

Pet Projects

I haven’t done a lot of programming on the side over the past few years. Spending a good portion of my time at work writing, reading, and reviewing code didn’t exactly spark a lot of desire to do more of that after work. In the past I’ve built projects like doppelkopf.party (which is still unfinished…) but I couldn’t get myself to create or maintain anything as significant as that recently.

Towards the middle of this year, things started to be a little different. As my day-to-day job became increasingly hands-off, I missed building and shipping actual software and experiencing the thrill of building something out of nothing. I gradually started doing a few things on the side again. It started innocently, with me overhauling my dotfiles a little bit, tweaking my tmux config and getting a pretty sweet neovim configuration set up. After that bike-shedding was largely done, I moved over to a few tiny and fun projects that I only shared with a few close friends.

Next up I decided to rebuild my personal website (that’s the site you’re looking at right now) from scratch. The previous version had been built on top of Jekyll about 10 years ago. Over the years, messing with Jekyll and Ruby became more of a hassle than I liked, and the global CSS structure I used proved to be pretty brittle. On top of that I wanted to get a fresh design. With that I got the perfect excuse to rebuild everything. I ended up picking astro and really enjoyed its component-based approach that allows me to build small, isolated components easily and compose them into a full-blown website. It also made me think a lot about how I want to use my personal website moving forward and I sincerely hope that I can get into the habit of writing more frequently.

Lastly, during my winter vacation, I decided to build the prototype of a silly digital trading-card game for my friends. The prototype is based on SvelteKit and feels like a weird yet hilarious mix between Pokémon cards and Dungeons and Dragons. It’s full of inside jokes, light-hearted jabs at everyone of us, and turned out to be a fun surprise for everyone.

I’m happy that I got back into the habit of programming for fun’s sake. It’s always been one of the best ways for me to learn new about new technology, feed my creative urge, and share something fun with friends. Working on pet projects is a balancing act since it means working on a computer even after work is over. My wife often makes fun of me for sitting at my desk during my free time, indistinguishable from my regular work day, and I appreciate that she’s got a point there. It’s important that doing side projects provides relaxation and healthy stimulation, not stress, and that I keep room for enough time away from screens, time with family and friends, time to simply unwind.

Health & Exercise

I’m stoked to say: I’ve probably never been in a better shape than now. I’m fortunate that I’m healthy, both physically and mentally, and can do all of the things I want to do. Let’s hope it stays that way for a long time to come.

A few years ago, I started exercising more seriously. I assembled a small home gym that has grown into something more substantial over the years. I’m mostly doing powerlifting-style training, chasing heavy PRs in my Squat, Bench Press, Deadlift, and Overhead Press.

a home gym with a rack, barbell, weights, bands, kettlebells, and an Echo Bike My garage gym, including a rack, barbell, lots of weights, bands, a few kettlebells, and an Echo Bike.

Getting a wide range of gym equipment right in my garage was the best decision I made to improve my physical health - and my mental health by extension. There’s hardly any excuse. “Going to the gym” means changing clothes, walking into the garage, and going wild. There’s no long commute, no shitty weather, no annoying people preventing me from going. This works so well for me that I consistently manage to work out 4 to 5 times per week without needing a lot of convincing. It’s grown into a habit and if I skip workouts I feel like something’s missing.

I work out during my lunch break. A workout session usually takes between 45 and 60 minutes. This allows me to split my day into two distinct halves, interrupted by a heavy-ass workout and some light lunch. Since a lot of my colleagues are located in US time zones while I’m sitting here in Germany, my mornings tend to be quiet, with a lot of focus time, while my afternoons are for meetings. My workout/lunch break allows me to move from being focused and heads-down to the more social part of the day. Both parts take a very different mindset, so having a clean break in between really helps me switch gears.

This year I did a bit of experimentation and changed my routine a few times. In the beginning of the year I got tired of constantly trying to grind out personal records on my main lifts and wanted to change things up. I wanted to shed a few pounds, too.

I chose Brian Alsruhe’s Reps Per Minute program over summer. It’s a 9-week program with a focus on conditioning, taking a break from overly heavy lifting, and losing some fat while you’re at it. It kicked my butt in a good way and was so much fun that I’m probably going to run it again next year.

The program was as fun as it was effective. My conditioning went up, I learned about and improved on a few weak points I was unaware of before, and I lost a solid 5kg (11 pounds for my American friends, 0.787 stone for my UK friends) of weight while retaining my old rep maxes. While the program certainly contributed a good amount to my weight loss, tracking my diet more diligently probably had a bigger effect. In the past I always struggled with tracking macro-nutrients and food intake. It stressed me out and made me feel guilty and anxious non-stop so I quickly stopped doing it altogether. This time I tried a (paid) app called Macrofactor and it’s been working well for me. The app provides a lot of data and insights into what you’re eating, comes with great recommendations how much of what you should be eating to reach your goals (fat loss, maintenance, or gaining weight), has a very effective self-regulating mechanism, and — most importantly — is absolutely non-judgemental. If you overshoot your caloric goal while you’re trying to cut weight, there’s no “yeah, buddy, you messed up here, didn’t ya?”. It just reports that you overshot your target. No biggie. We’ll do better tomorrow.

Over the course of the year I managed to increase my Deadlift 1RM and my Squat 1RM while dropping my bodyweight . My Bench and Overhead Press remained fairly stagnant. That’s okay, I’ll try do drive those numbers up next year.

20222023ΔΔ (%)
Weight93kg88kg-5kg-5.4%
Squat 1RM152kg165kg+13kg+8.6%
Bench 1RM110kg115kg+5kg+4.5%
Deadlift 1RM178kg192kg+14kg+7.9%
Overhead Press 1RM78kg78kg0kg0%

Physical exercise and its second-order effects are a large contributor to my mental health. Time and time again I discover how doing heavy workouts regularly helps me process the things that happen around me, at work, in my family, with my friends, all the things that occupy my mind. On top of lifting heavy, I walk the dog 2 to 3 times a day, most of the time together with my wife. These walks force me to get outside (which can be harder than you think if you work from home all the time) and give me and my wife time to connect and talk about anything from big life events to the mundane trivialities of everyday life. Exercising gets me tired, which means I’m more likely to stick to a healthy sleep routine, which in turn has a positive effect on my wellbeing itself. Exercising gives me time to step outside, spend quality time with my wife, which means we have a healthier relationship. And exercise keeps me excited as I’m getting better at what I do, and getting better is super motivating in itself. Also, seeing my dog Lenny roaming woods and meadows just makes me happy. I mean, how couldn’t you be happy joining this gorgeous fella doing what he loves?

Lenny, my dog, in the setting sun

I’m fortunate to have a job that allows me to work like this. My work can be intense and challenging but the time spent at work is usually predictable and doesn’t bleed much into my private life. Stack Overflow, the company I work for, truly cares that you take time off, don’t work too long hours, and separate work and private life, and I wouldn’t want to have it any other way.

As I get older, I notice that I need to cut back on alcohol much more as it messes with my mental well-being much more compared to when I was younger. I enjoy drinking with friends in a social setting. I don’t have any trouble completely staying away from alcohol for weeks, and I’ve never been a person to drink by myself. When I’m out with friends, however, I really enjoy having a few beers and the ocassional schnaps (Korn is a significant part of the culture in the small town where I live). I try to drink in moderation (I don’t always succeed, no doubt). I’m seeing that alcohol has an immediate negative impact on my sleep, which by itself will have an effect on my next day. On top of that, the symptoms I’m getting when drinking alcohol seem to be more than just a light headache or an upset stomach. I’m experiencing light symptoms of anxiety and feeling depressed for a day or two in the worst cases, and I rarely think this is worth it.

Overall, I’m more than happy with where I am regarding my physical and mental health. My current routine helps me stay sane and stable most of the time. If I don’t watch out, I tend to have a bad temper, get cynical, and have a short fuze. I regret when that happens as it means the people around me, my family, friends, and sometimes coworkers, have to deal with my shit. It seems that keeping my sleep and physical health on track is a good way to keep my mental health on track, too, so I’m focusing on these things a lot.

Travelling

I’m not much of a traveller. If it wasn’t for my wife kicking me in the butt every now and then, I probably wouldn’t much at all. I like being elsewhere and experiencing something new. I just don’t like getting there. The “getting there” part has become worse as I moved back to the countryside 5 years ago. It takes me about 2 hours to get to the next airport, taking the train often means changing trains twice to get out of my neck of the woods — and with Deutsche Bahn this unfortunately massively increases your chance of missing a connection, and that often leaves driving as the quickest and most comfortable option.

In 2023, I managed to leave the country twice (well… more than that, but I’m not counting driving across the Dutch border since that’s literally around the corner):

  • Chicago: In April, I travelled to the United States and visited Chicago for a week. We had our annual company meetup there and it was great to see my colleagues in person for once. I had a great time connecting with people, having my first deep dish pizza, and exploring the city and its truly spectacular architecture.
  • Madeira: In late summer my wife and I visited Madeira, a gorgeous island in the North Atlantic Ocean. We stayed at a super sweet hotel, enjoyed the local cuisine, went hiking, swimming and sight-seeing. Trips like this make me wonder why I don’t travel more often in fact.

the Atlantic Ocean and stone cliffs in Porto Moniz, Madeira Porto Moniz, Madeira

Music

2023 was a wild year for Punk Rock. I’m super stoked about the current revival (or wave of nostalgia?) that’s breathing new life into my favourite genre.

  • blink-182 got back together and dropped a new album. I think it’s their best work since their self-titled album from 2003, and I’m happy about the energy and fun they put out there. I went to see them live in Hamburg this year and the show’s been spectacular.
  • Hot Mulligan is easily my favourite newer act in the entire Pop Punk / Emo scene and their Why Would I Watch is one of the albums I listened to the most in 2023. I saw them live in Münster in fall, together with Spanish Love Songs, and both really nailed it. It was a small venue and the energy was really something else.
  • Speaking of Spanish Love Songs, they released No Joy this year and it’s a decent album with a fresh direction. I like their old stuff better but I think it’s great that they’re experimenting and evolving.
  • The Menzingers released Some Of It Was True in October. It’s a mixed bag to me and once more I like their older, more rough stuff better, but the Menzingers are always on rotation over here.
  • Sum 41, a favourite of mine since my teenage days, announced that they’re breaking up. But not before releasing a new album early next year. The first two singles are absolute bangers, much better than most of the stuff they put out over the last few years. I’m excited.
  • Besides that, we got new exciting stuff from PUP, KennyHoopla, LiL Lotus, Bring Me The Horizon, IDLES, Spiritbox, Jeff Rosenstock and of course the absolute madness that is Ski Aggu.

If you haven’t heard of Hot Mulligan yet, go check them out:

I started tracking my stuff on last.fm again after not caring much about it for years, and I was surprised to see how good their service has gotten again after falling into a deep hole a few years ago.

Spotify claims that I’ve been listening to music for over 100,000 minutes, which, quite frankly, sounds ridiculously high. Yes, music is playing pretty much all the time during my workday when I’m not in a call, but that still sounds like a lot. Anyways, here’s what Spotify Wrapped came up with:

My Spotify Wrapped charts

Books

I finished 12 books this year (I think it might be more, but I skimmed some of the technical ones I read and didn’t bother tracking them properly).

  1. Hyperion by Dan Simmons (that’s 4 books). This was so good that I wrote an entire blog post about it.
  2. Domain-Driven Design Distilled by Vaugh Vernon. A quick refresher on DDD concepts as I was diving deeper into the interplay of software architecture, domain boundaries, ownership, and team structures.
  3. Team Topologies by Manuel Pais and Matthew Skelton. Finding proper boundaries for teams is a huge topic for my work, so this was an essential read.
  4. The Staff Engineers Path by Tanya Reilly really helped me make some sense of my new role as a Principal Engineer and I took a lot of inspiration from her book.
  5. Dracula by Bram Stoker. I read this via the Dracula Daily newsletter and it was a super fun experience.
  6. Software Architecture: The Hard Parts by Sadalage, Dehghani, Ford, and Richards. Did I mention that “Software Architecture” was a big topic for me this year? Yeah. I was a little disappointed by this book, to be frank. I didn’t get an awful lot of new information out of it unfortunately. Maybe that’s because most of the ideas the authors share have floated around within Thoughtworks during my time there already. It’s been a good refresher and reassuring in a lot of ways, for sure.
  7. Tidy First by Kent Beck: This one was fun and contained a lot of great points about optionality, the value of software and how much time to spend on improving your code. I wrote a dedicated review in this blog post.
  8. All Systems Red by Martha Wells: After finishing Hyperion, I wanted to continue with more SciFi. This one gets recommended quite a lot, and the first book of the “Murderbot Diaries” is a quick read, so I took it for a spin. It was pretty okay, I guess. A solid story with somewhat likeable characters, but it really didn’t grip me much so far. I might try another one later next year.

Cooking

My wife and I enjoy cooking. My wife’s a much better and more versatile cook than I am. I make kick-ass snacks, but otherwise I like doing things that take some practice and many attempts to get better at.

Late last year my wife got us an Ooni pizza oven for Christmas and it’s been the best gift ever. We’ve fired it up almost every week since, making delicious Neapolitan-style pizza at home. It takes some practice and you can run infinitely deep into the pizza making rabbit hole, but thanks to a few friends who are much more experienced than I am, we got to some quite solid results pretty quickly. The first few attempts were rather shoddy, but the latest ones turn out better and better. And hey, a shitty pizza is still a pizza, and pizza’s simply amazing.

home-made pizza

Besides making pizza, I enjoy smoking meat. This year I fired up the smoker a few times. My favorite was honey-glazed pork belly burnt ends and St. Louis-style ribs over cherry wood. Throw in a sunny day and a few beers with your friends and you’re off to a great day.

burnt ends Pork Belly Burnt Ends

ribs Ribs for days

During my winter holidays last year I started curing and smoking home-made ham. It’s been a wild success, lasting several months, and I learned a lot about the old technique of curing meat like my grandparents did. I shared a lot of the ham I made with family and friends and everyone who tried it seemed to love it. I’ve got another, bigger batch coming up right now since the seasons just great for curing ham right now. I hope this one will be as good or even better than last year’s ham. We’ll see.

home-made ham Cured and cold-smoked ham

Here’s to a great next year!

I’m grateful that I can look back at an overwhelmingly positive year. I’m fortunate that I’ve got so many great people in my life, that I’m healthy, and have a lot of fun.

To everyone reading this, whether you’re a stranger browsing by or someone I know: I hope you have an amazing year ahead. If you’re struggling at the moment, I sincerely wish you that things will get better soon.

Be excellent to each other and party on!