Wrapping Up 2021

7 minutes

2021 was not too kind to me. I discovered that I not only have OCD but OCPD, a personality disorder. If you’ve ever had a conversation with me where I just couldn’t let something go because it was wrong or incorrect and it bothered me, now you know why. I have, for better or worse, extremely high standards for everything around me (and even higher standards for myself) to the point that when something fails to meet my expectations I not only lose faith in the people I work with, but in the very systems I am expected to simply trust and use on a day to day basis.

In fact it causes me extreme distress and in some cases physical pain to have to deal with things that are less effecient because someone just didn’t give a damn. I’m saying this now so that the following post makes more sense. Why I’m so burned out on so many things, and why I just cannot bring myself to care about so many things anymore without putting my health at risk.

This year continued with folks I’ve known for years just dropping out of contact. Calls unanswered, messages unread, numbers disconnected, emails unanswered. Social media unupdated for months. Sometimes I would find out if they had died from COVID. Some people are still “missing” with no way for me to get in touch with them.

I also caught COVID two weeks before the year ended, and one week before I was due for my booster shot. I had one new years resolution this year and it was to not catch COVID. Like most things I tried to do this year, I failed.

Leaving C++

Despite starting the year off unemployed (I was let go from Netlify in 2020 shortly before Christmas), I’m now doing DevOps for a cancer research company. Despite using golang, working with the absolute impenetrable monster that is kubernetes (I refuse to believe anyone actually understands this tool), taking on a helpdesk like on-call experience for one week at a time tending to configuration files over code, and not touching C++ at all, I feel more rewarded in my work than I ever did writing any amount of C++ in my entire life.

I decided earlier this year to officially announce leaving the C++ community at large before 2022 rolled around in my timezone. I wish I could say I’ve enjoyed the time I spent here, but I must be honest. The last 10 years of my life writing C++ in a professional context were a complete waste of time that I will never get back. I have nothing to show for it. In fact, the only time I have valued in the community was time spent not with C++ but with people. I deeply regret that I had been so optimistic that the committee would actually listen to people who didn’t stand to profit from changes made to the language.

It’s been over a year since I touched C++ professionally and I am surprised to say I don’t miss it in the slightest. A committee that doesn’t listen, tooling that doesn’t care about user experience, claims of anything being inactionable when in reality people don’t want to do the work, the constant fear, uncertainty, and doubt masqueraded around regarding the ABI. Multi-argument indexing made it into the C++23 standard, and so did std::byteswap. That’s my legacy I guess. A bunch of unfinished papers, unfinished work, a language feature from C# in 2005, and a function that’s been written at least 100 different ways since the 1980s. Go me. No, there won’t be a std::retain_ptr paper update, nor will I work on the modern offsetof. It’s too exhausting to argue that retain_ptr should adopt by default and that the name LEWGI came up with for offsetof is bad and extremely useless.

This is also the first year I didn’t attend CppCon since 2015. I will most likely never attend again. I should have taken it as a sign of things to come when, in 2015, Jon Kalb tried (emphasis on tried) to introduce me to Bjarne. Bjarne looked me up and down, put on a face of disgust, and walked away.

I’m currently at the point where I feel I’ve wasted my 20s on a language I never had any hope of truly improving, in a space I was never really welcome save for a few people I befriended, run by people who don’t really want to listen to me. So, I’m done. I’m out. I’ll still write C++, of course, especially if someone pays me but it’s going to have to be an incredible amount of money to make me do it, and I am going to bitch, and moan, and curse the tools all along the way.

I killed the C++ package manager I spent 7 years working on, and while I intend to release IXM properly at one point I am doing so solely to dunk and clown on people who told me something like IXM could never exist. I am no longer writing it for me and for other people. I am writing it out of spite.

What’s Next?

So I know what you’re probably thinking. “Oh, so Rust it is then?”

No. It’s perfectly fine for most people, even most C++ people, but it’s not enough for me. As I said above I have high requirements for a language, and Rust is severely lacking in the things I want and desire out of a language.

A lack of default arguments, a lack of basic arity overloading, a lack of variadic generics, all make me not want to write Rust. It feels like I’m stuck writing C++03 again. Sure the tooling is fine (as long as you’re using nightly), and the documentation generation is great (as long as you’re using nightly), and the package manager/build system combo is fantastic (as long as you’re using nightly), and compile time only operations are all well and good (as long as you’re using nightly). Except that if you want to be on stable, you’re stuck. Waiting, and waiting. Until someone decides to mark your feature as stable because Rust has only so many people, but the process by which the community can vote on priorities or for things to be stabilized is complex and possibly even non-existant.

I’ve sadly burnt all of my energy the last 10 years on C++. I no longer have the energy to give anything to Rust. I cannot spend my energy writing more papers and arguing my case to more people and then waiting for something to be stabilized. It’s too much. I’d rather quit using computers for the rest of my life.

So what is out there for me, if not C++ or Rust?

C is straight out because it’s committee has even more brainrot and ABI fears than WG21 ever did. In fact, WG14 makes WG21 look like tech’s Che Guevera.

Zig also is not an option for me as its clearly written by someone who hates the idea of destructors and implicit behavior, of abstracting your thoughts away in a “set it and forget it” kind of manner. Zig somehow manages to go a step further and feel like I’m writing LLVM bitcode but with control flow constructs. I’d rather just not touch it.

Swift is actually something that feels well thought out but has the very unfortunate experience of barely working on Windows, and treating any non-Apple platform as a second class citizen. I don’t care if its “community” supported, if it’s not treated like a priority why should I spend the effort trying to work with it?

There’s other languages as well of course. Jai doesn’t exist because it’s never been released to the public and I have no interest in vaporware. Circle only works on Linux and really only does what Sean Baxton wants C++ to do. Every other language out there is missing something from C++, and C++ is always missing something from other languages.

I simply have to accept that there is nothing out there for me. That I will be miserable as long as I continue to work in tech, and that nothing will ever bring me joy in this space ever again. And I have the C++ committee to thank for this.

2021 was a terrible year for me.