Week 14, 2024 - Writing, debugging and history
We saw the temperature climbing consistently above 20ºC this week, allowing us to fit in a nice small hike. Our noisy steps startled a deer couple, causing them to run away right before us. It’s great to be out in nature. That said, I took the above photo right in the middle of Budapest, at the Castle. A line of cherry trees attracts large crowds this time of the year, including us just a few hours ago.
📋 What I learned this week
By far the biggest exercise was the 50 tips I assembled in my article How to Prepare for an Engineering Manager Role. Time and time again I decided to write shorter, and my articles are getting longer instead. I feel like life is laughing at my face strongly now, as some of the exercises I suggested in the list are about improving writing skills. Regardless, it was a conscious decision to let it go long this time. I considered:
- Publishing in multiple parts — but I wanted to keep everything in one single article because I don’t think there’s as much value in a series of smaller lists scattered around in half a dozen posts.
- Being more theoretical — but the whole point of the article was to give concrete, actionable ideas ready to try out.
- Being less theoretical — but some of the tips felt powerless or even weird without a little explanation about what skills I believe they would build.
- Cutting out some tips — but 50 felt like a nice round number. Also, everyone is different, what feels like a trivial idea to me, might be new and motivating for someone else. Still, in hindsight, maybe this is what I could’ve done, and limit the list to include only the most impactful items, balancing equally across areas.
Besides this, some developments on the tech side too.
I built the same analytics service with Umami at home and ran it parallel with the production one hosted at Pikapods for a few days. The home setup counted 4% fewer visitors and 7% fewer views, which is just slightly more than what I could carelessly shrug off.
My suspects, in order of likeliness:
- Some reboots at the home stack while I was playing with the setup.
- Initially, being less confident in my solution, I loaded the script at home with
defer
, while the old one at Pikapods loadsasync
. The latter starts execution immediately when parsed, the former only after HTML parsing is fully finished. It’s a minor difference, as neither wait for the full DOM render, and I have a pretty small payload anyway. But it’s not implausible to have this difference cause the effect of undercounting. - Different response times causing a timeout for a minority of visitors. Monitoring from an external third-party shows the same averages though – but there are bigger spikes at home for some reason.
- Browser compatibility differences in Umami versions - both instances get automatic updates, but the schedules of these are different.
Well, I moved everything to defer
, as user experience is more important than analytics, and will run the two instances parallel for another week. I’ll decide then if I’m comfortable with the difference should it persist, turning off one of the instances, or want to dig deeper for a more confident explanation.
Finally, I set up an offsite backup for my home stack. I chose Backblaze’s B2 storage: I already use them, they have an S3-compatible API, and are pretty affordable. I’m especially happy with my implementation: I managed to mount B2 as Storage in Proxmox (which needed some s3fs
finetuning), so now the native backup job can handle everything, and I don't need any rsync or similar overhead.
🎯 What I want to try next week
Just bullet points to keep this short:
- Finish the async book club exercise I started this week on Cooperative Software Development;
- Further tune my home server's “homepage”, and create a clean separation between sensitive and non-sensitive data so the latter can move to GitHub;
- Publish my thoughts on what benefits a hobby like this home server thing can bring to Engineering Leaders.
🤔 Articles that made me think
Everything I Know About the XZ Backdoor
Technical investigation of the scary supply-chain attack that managed to put a backdoor into the Testing version of Debian, and therefore, into Kali Linux, a popular security distribution too. A lot of great points in the article to follow up on, but this one was particularly touching: What seems like fake personas of the same attacker are ganging up playing good cop - bad cop on the sole maintainer of a popular library that’s probably present in multiple tools I’m using every day.
We need to do something to fix this situation: large parts of our favorite services depend on the hard volunteer work of vulnerable individuals like Lasse, without much recognition, let alone compensation. Bullying honest maintainers is getting more frequent even if you remove the cybercriminal angle, and it’s a deeply saddening development of the open-source movement.
Report on a conference sponsored by the NATO Science Committee; Garmisch, Germany, 7th to 11th October 1968
In the book club I mentioned, the record of the very first Software Engineering Conference came up. It’s amazing to see the participants (some of them CS heroes like Dijkstra) discussing problems very similar to what we still struggle with today, more than half a century later.
If the job has been done before, estimates are fairly easy. If the research content is high, estimates are difficult. The trouble is that it is not always possible to tell beforehand which jobs are which.
🛠️ Something cool: Zero-code AI App Development
Dify is an open-source large language model application development platform. It can be used as a typical Saas platform, or by hosting it yourself. To test the user experience, I created a custom chat app trained on my Readwise book- and article highlights. I already have Readwise syncing with Notion, so all I had to do was create a connection to have the latest highlights available in Dify too. (20 max in the free tier.) The whole process was surprisingly effortless: I was chatting with the app 15 minutes after having the idea. Who knows, in a few years I might have enough material on this blog to train a virtual version of me, available to chat with 24/7.
That’s it for this week, go out and startle some deer,
Péter