2025 Year In Review
2026-01-25
2025 lacked a clear theme. Work at GetThru was much more successful than anticipated at the beginning of 2025. I cut way back on public speaking, but mostly replaced that time with much needed social activities. A nice balance was achieved for the time being.
GetThru Workers United
2025 was bookended by more involvement in union activity than I ever thought would happen in my career. I ended 2024 by becoming part of the bargaining committee at GetThru Workers United. In 2025, we successfully ratified our first collectively bargained contract. We were able to protect benefits like 100% employer paid health care for employees and their families.
The thought of ever helping to negotiate a union contract is literally something I never imagined would happen in my career. After ratification, I ended up becoming shop steward as well. I grew up in the rust belt. My dad getting a well paying union job was instrumental in pulling my family out of poverty. A small union is much different though than the sprawling behemoth that is the UAW. I’m happy to be part of it.
Unionization, AI, and You
That ties nicely into the one new conference talk I prepared and gave this year. I submitted a talk to CodeMash 2026 about unionization in tech, using the current AI upheaval in tech as a framing device. That talk was accepted and I gave it a bit over a week ago.
I had no idea what to expect giving a talk like this. I was prepared for just about any reaction and crowd size. I read a large stack of books on the worker-to-worker model of organizing and effectively radicalized myself while reading them. It’s weird to be reading book after book and consciously feeling your thought processes change.
Fortunately, the reception was very good. I had ~40 people attend and received universally good feedback. I had many hallway track conversations throughout the conference that showed a strong appetite for unionization in tech right now. Nobody knows what to expect as the current AI wave crests.
Resources for this talk are available on GitHub. I’m currently submitting it to more conferences, but have no expectation of it being accepted anywhere. I’m acquiring a reputation for giving talks off the beaten path. That alone makes acceptance hard. Unionization is so far off the beaten path that I expect many conferences to immediately reject it.
I don’t want to overstate this, but the topic also comes with a bit of career risk/reward balance. Public speaking is good for raising your profile, but there are also companies will never give me an interview after talking about unionization publicly. I’m fine using some of my privilege for this topic though. My career is very secure at the moment and I have plenty of cushion to absorb future difficulties in finding a job if it comes to that.
ElixirConf US
I attended ElixirConf US again this year, but ended up not speaking. I was invited as a backup speaker in case there were cancellations or travel issues. Fortunately for all the other speakers, nobody had any issue making it this year so I didn’t speak.
On the plus side, I got a free ticket to ElixirConf out of the deal. That’s balanced out though by spending the time to prepare a talk that I ended up not giving on modernizing our test suite at GetThru. I ended up giving the talk at Ohio Elixir in September. Resources for that talk are available on GitHub as well.
The talk is centered around how we created a second test suite at GetThru so we could start fresh with better patterns. A lot of mistakes had been made since 2016 and the old test suite was creaking under the weight. We decided to make a clean split and setup a second test suite. I included an example repo that shows how to set that up.
The majority of the talk was about testing anti-patterns in Elixir. ex_machina encourages a lot of anti-patterns in test data setup. I advocated for hooking into context functions to setup test data as much as possible instead so you have accurate test data that won’t become stale as the domain changes.
The best part of the talk though is near the end where I dive deep into how ex_unit works under the hood to manage setup and teardown functions. I showed how process ownership works and how test processes are isolated from each other. I think there is a better talk I could give at some point focused more on ex_unit internals. It’s a lot easier to debug flaky tests when you have a good mental model of how processes and supervision trees are structured within ex_unit.
Finally a Manager
Near the end of the year I was promoted to engineering manager at GetThru. The downside was that I had to leave GetThru Workers United (which I found amusing as I was still speaking on unionization in tech at CodeMash). It was the correct choice for both me and my team though.
I’ve spent most of my career at small companies where titles are meaningless. I had not had an official promotion since 2010. Fortunately, I’m mostly intrinsically motivated, so this wasn’t causing me any existential pain about my career. It’s still nice to finally get a promotion though.
I’ve functioned as an unofficial team lead for many years. Every manager I’ve had for the at least the past decade has remarked on how good I am at managing up. If I worked at larger companies, I would have become a manager a long time ago.
The current team is small, so I’m still writing code some to be determined amount of time. I’m hoping to stabilize and figure out what that percentage is over the next month.
Will I want to be a manager long-term? I have no idea. But I also know that I need to try it and find out. I’m very experienced at informal leadership, but 2026 is going to involve learning a lot about the more formal flavor.
Plans for 2026
I haven’t sat down and figured out actual goals for 2026 yet. I usually wait until the weeks after CodeMash to do that every year. Some themes are emerging though.
First, just getting my feet wet as a manager. I have a stack of books to read and a team to guide me towards what works for them. I’ve been surrounded by servant leadership culture in Quaker communities for years, but haven’t actually read anything about it. I feel like I’ve learned a lot by osmosis, but that only goes so far.
I was a bit crispy at the end 2024 because of the amount of public speaking I was doing. This was compounded by a failed attempt at a Nerves talk at CodeMash 2025. I’m feeling very energized after my unionization in tech talk at CodeMash though. I’m submitting that to conferences right now and hope to give it at least one more time. I think it’s the best talk I’ve ever written. It would be a shame to only give it once.
AI is obviously a big deal in tech. I jumped in for a couple of weeks over the summer to see what the tools were good at then and came away mostly unimpressed. I’ve been using them selectively ever since.
That’s changing now though. I dove into Claude at CodeMash and the tooling is noticeably better. Getting a better grasp on how to survive with these new tools will be a big project in 2026. My ethical and economic concerns around the industry remain, but I also know I’m not close enough to retirement to bury my head in the sand.
Finally, I’m hoping to more into the broad category of “making” this year. I recently got my first 3D printer. I have a gaming group playing Gloomhaven and got enamored with the idea of printing and painting terrain. That’s a new world for me. My children are also very into fiber arts, so I’m hoping to learn how to crochet with them.
Beyond that, I have have too many things I want to do. I need to sit down and actually prioritize. I can only read so many books and learn so many crafts in one year.
And, who knows, maybe I’ll actually blog this year? Stranger things have happened.