I turned 40 recently. By no means do I feel old. In fact, in many areas of my life I feel better than ever. Just in the first half of 2026 I ran two half-marathons, the first in my life, and I just started preparations for the Seattle Marathon. As for my career, the past couple of years have been challenging, but I’m surviving, and I actually found a new hobby in homelabbing. The milestone made me look at my tech blog again, and look how far I’ve gone in my journey as a… well, tech nerd, for lack of a more precise word.
My first post in this blog was published in 2014. That’s 12 years ago. This means that I was still living in Poland, working on a Java project in GWT (Google Web Toolkit). The company went defunct a couple of years later; I’m pretty sure the project was released as OSS. Since then I worked with the major players in the industry, trying to solve problems from scaling self-publishing in Amazon, through malicious video detection in Facebook (pre-Meta) and text format integrations in Google, and more recently on an evergreen problem of spam detection in e-mails.
The technology changed around me, the tools at my disposal evolved. I’m looking through the blog titles and found that I was a pretty early adopter of Google Cloud Functions, which is actually getting pushed out by Cloud Run these days. Some of the tools I use to this day stuck around: GNU Make, for instance, is still my default automation choice, just because it’s still there. LLMs swept through the industry like a storm, and while it’s still not certain where it’ll stop, it revolutionized the way we’re creating software unlike anything I remember.
Anyways, it feels like a good idea to try dumping my thoughts and experiences in software again. I still do some programming these days, but my focus shifted a little. I still write my side-projects, but I’m also trying to think about deployment and scalability more. Setting up reliable infrastructure is a fascinating adventure, which I certainly hope to share more about.
To keep it technical, I want to mention what’s going on with the blog itself. Since its inception I’ve been using Jekyll and hosting on GitHub Pages. I actually even wrote a post in 2021 on how to utilize GitHub Pages for free hosting. Today it sounds like a pretty obvious mechanism, but back then it sounded like a breakthrough to me. It was a developer-first experience, no server-management involved. This time, I wanted to try out something more modern. Static-site generators became more ubiquitous — we’re talking Hugo, 11ty, Gatsby, just to name a couple off the top of my head.
I ended up going with Astro.js though. Although not a static content generator in a strict sense, it had a couple of pros compared to the others:
- a much richer theme ecosystem, so I could find something matching my taste more easily,
- a fast-growing user base, so troubleshooting and extending it is faster,
- Astro’s use cases are far more diverse than just blogging, so I’m keeping up with the trends,
- it’s actually a web framework, so if I need something unusual to showcase I can include it pretty easily.
I looked around for templates and ended up with the Astro Micro template. Made some minor adjustments (fonts, some behavior). Claude AI helped with it a lot. I moved all of the past posts with Claude AI too. There might still be some incompatibilities between the Jekyll and Astro.js frontmatter formats, but I can always iron them out later.
Oh, and I picked a header image for this post too - a little play on “I’m old”: Trevor Pearcey operating the CSIR Mk1 in 1952, one of the world’s first digital computers. Feels about right for a post about looking back at how far the tools, and I, have come.
A note on AI use: the words and the story above are mine. Once the draft was done, I had Claude go over it as an editor — fixing typos and grammar, catching a wrong date I misremembered, and adding the reference links to the tools and posts I mentioned. No paragraphs, opinions, or facts were generated by it; it just helped me polish what I’d already written. You can see exactly what changed in this commit.
