Week 18, 2024 - MCU Jam
The week was cut in half because of Labour Day, most of which I spent with the family harvesting elderflower and making strawberry jam with it. It took the whole day, but I enjoyed the first hike of the season — and the process of making jam is also a fun applied science exercise. Harold MacGee explains in his definitive book On Food and Cooking:
The key to creating a fruit gel is pectin, long chains of several hundred sugar-like subunits, which seems to have been designed to help form a highly concentrated, organized gel in plant cell walls. When fruit is cut up and heated near the boil, the pectin chains are shaken loose from the cell walls and dissolve into the released cell fluids and any added water. They can’t simply re-form their gel for a couple of reasons. Pectin molecules in water accumulate a negative electrical charge, so they repel each other rather than bond to each other; and they’re now so diluted by water molecules that even if they did bond, they couldn’t form a continuous network. They need help to find each other again.
The cook does three things to cooked fruit to bring pectin molecules back together into a continuous gel. First, he adds a large dose of sugar, whose molecules attract water molecules to themselves, thus pulling the water away from the pectin chains and leaving them more exposed to each other. Second, he boils the mixture of fruit and sugar to evaporate some of the water away and bring the pectin chains even closer together. Finally, he increases the acidity, which neutralizes the electrical charge and allows the aloof pectin chains to bond to each other into a gel.
It’s all just chemistry! Knowing the low pectin and acid content of strawberries and elderflowers, I used a lot of lemon juice, and also added extra pectin to the sugar. The result was still a bit on the liquid side, but it held itself fine on a slice of toasted bread, so I now have 15 jars of condensed spring to enjoy throughout the year.
📋 What I learned this week
I made my notes public in preparation for the recording of a Hungarian podcast about Staff Engineers. I have mixed feelings about this post format: on one hand, the topic would warrant a proper, better structured, and organized article — on the other hand, it’s not my focus area, as I rather write about Engineering Management. There’s a good chance I wouldn’t have published anything if I was aiming for something better though. At the end of the day, done is better than perfect.
The microcontroller hack day was so much fun last Friday. Well, a lot of fun and a lot of frustration. ESPHome is amazing on one hand: you can basically skip most programming tasks and describe what you want to do in simple YAML. This lowers the entry barrier for non-technical folks — but turned out to be rather frustrating for us. No debugging tools, no emulators, nothing, just guess, try, compile, flash, hope for the best, and start over again. But when things work, and they did after 2 more days of struggle, it’s amazing to see a matchbox-sized device getting OTA wifi updates and running C++ code that I defined in a markup language.
Here’s where I paused for now, displaying bus departure times in minutes from the nearest stop, along with the current time and weather conditions:
These were done with a borrowed MCU and LCD display (thanks Serif), now I’m about to buy some proper e-ink and a microcontroller to drive it. Maybe some sensors too, just for fun... the rabbit hole is deep.
Here’s the code that powers the above display if you want to discover how ESPHome works.
🎯 What I want to try next week
There are some odds and ends to update on the blog: I wanted to build automation to welcome new subscribers with a custom email, experiment with UTM tracking, and finetune the front page. I also have two article ideas, about focus and resilience. I’d like to work on one of them.
On the home dashboard front, I’d like to keep the momentum and write the connections for the data sources that I want to display. I’m not sure what will be the best way to do that: work as much as I can natively in the Home Assistant ecosystem, or set up a small web service and have most of the logic custom-written. It’s tempting to just simply do the latter, but then, there’s less learning in that.
🤔 Articles that made me think
How an empty S3 bucket can make your AWS bill explode
This is a good example of small things adding up to a big deal. In themselves, none of these seemed problematic: Globally unique S3 bucket names without any username part, I never fully understood why, but sure. A popular backup software uses something like s3://placeholder-bucket-name
to signal that something needs to be changed by the user during setup. Defaulting to us-east-1
if nothing was specified, but charging for the redirect, I guess it makes sense for Amazon. Similarly, why shouldn’t their customers pay for 4xx traffic too? All sensible policies. But when these innocent things align, they can cause a surprising security issue and a $1,300 AWS bill for an empty “proof of concept” setup. Great story to tell.
Ghost is working on ActivityPub support
Not just working on it like any other feature, but put together a nice landing page to excite people. I’m all up for it, a decentralized social network, where I can follow and interact with content creators and fellow readers sounds amazing. However, I’m a bit skeptical about how it will work. Having spent more than a decade in online publishing, I can say from experience that content moderation and spam are a big deal. If you were blogging in the 2000s, you probably remember Trackback, a somewhat similar feature where articles mentioning another blog post could have their link automatically appear on that page. It sounded great, and initially, it was a cool way to discover who was talking about the things you wrote and start a discussion with them. However, it got abused quickly, link spamming was rampant, and most blog authors just turned the feature off. ActivityPub’s specification does mention SPAM, but the content doesn’t go beyond acknowledging that it can be an issue and putting the responsibility on servers.
Still, I’m excited about this direction and will enable it here as soon as it’s available. Also, this is another argument against Substack, which is building its own discussion platform within its walled garden. I hope they’ll join ActivityPub eventually, but for now, you need to be on Substack to interact with authors there.
Open-source contributions to accelerate personal growth
When I’m interviewing for software engineer positions, I often ask “Do you have a hobby project, or contribute to an open-source one?”. Sadly, most of the time the answer is no. Too bad - it’s a secret weapon to demonstrate various skills: async communication, teamwork, a passion for technology, influencing without authority, etc. This article lists all the values working in an OSS project can bring to an ambitious developer or engineering leader, and even has a pragmatic checklist at the end to evaluate which project to choose. Great resource for personal growth or supporting someone on your team.
💾 Something cool: Free offsite Proxmox backup
Tuxis seems like a small Dutch company offering various cloud infrastructure services. One of them is a remote Proxmox backup - if you were following me from earlier, you might remember that this is the hypervisor I’m using for my Homelab project. They are not the cheapest, charging 18 euros/month for 1TB of storage, but they offer 150GB for free. This is a great offer for a (secondary) offsite backup for any learning / fun project. The setup is straightforward and encryption can be implemented easily in Proxmox to ensure security. In my tests they were faster and more reliable than Backblaze B2, so if you’re using Proxmox, don’t have much data, and could use an offsite backup, take a look at this.
That’s it for today, taste the spring during the weekend,
Péter