Weeknotes 243
22nd February, 2026
“Pretty big re-organisation”
-
You may or may not have noticed that I shipped a pretty big re-organisation of my “web presence” this week.
The separate weeknotes website where you would’ve been reading this before is no more. That is now a section on here at elver.me/weeknotes/.
The blog from jordanelver.co.uk has also been consolidated here. Leaving that website as more of a work/calling card kind of thing.
I intend to use https://elver.me for the majority of the stuff I publish online.
I’ve added redirects for everything I could think of, but it is of course possible I missed one (thank you Harry for pointing one out already!). If you are subscribed to any feeds and you got duplicates or unreads I’m sorry but how exactly feed readers manage this is unknown to me and it was too much work for two of you.
Speaking of which there are now a lot more feeds at /feeds too so that you can subscribe to only the parts you are interested in or, more likely, all the exciting content on this website.
Of course, I got OpenAI GPT-5.3 Codex using opencode to do a lot of the heavy lifting which was mainly migrating content in Markdown files from one place to another and munging it about a bit.
Even updating the old and crufty jordanelver.co.uk which was running Ruby 2.7 and other ancient gems was easy thanks to me asking Codex to generate me a
DockerfileI could use to get it going and edit from there. This will be re-designed at some point. I knew I could use Docker to solve this problem, but having it done and working in 30 seconds does change things, significantly.I’m pretty happy this is all done.
-
Agentic engineering – A lot of insightful points here.
-
pbrich – “Like pbcopy, but with support for arbitrary pasteboard types”
-
Something that I’ve avoided for years, talking into my phone/computer/device, needs addressing. AI use has made it clear, I need to start talking and transcribing more. Typing is a barrier to use.
I’ve avoided it for so long because it’s been very bad in the past. That, and I feel like a pillock talking into my phone. But I remember feeling that way about using my iPhone and laptop in public too. Need to get over that.
-
Struct: tree with a developer brain. Stop drowning in site-packages — struct shows you the code you care about.
A
treealternative that doesn’t listnode_modules/, nice. -
OpenEPaperLink is an alternative protocol and firmware implementation for electronic shelf labels. Multiple Displays are supported with ESP32-based access points and 802.15.4 radio communication.
An excuse to get some colour E Ink displays?
-
The thing is that it really doesn’t feel like engineering any more. I feel instead that I’ve gotten really good at my spellwork.
-
Visualize a Git Branch’s History
git log --oneline --graph --decorate --allKeeping this one handy.
-
It dawned on me this week that although “public” access (not really public as everything is still behind Tailscale) to all my services was now secured over HTTPS, inter-service communication – when one container talks to another – was not. That communication was happening without using TLS direct to the container and port. Now, this is a homelab environment, but we should still do our best to tidy this up – I guarantee this homelab has better security than 99% of businesses!
My aim was to replace addresses configured inside running containers that look like
http://<service>:<port>with their secure counterparthttps://<service>.custom.domain.I was planning on using that
extra_hoststrick I discovered and utilised last week, but happened across a slightly less hacky solution, network aliases.caddy: container_name: caddy ports: - 443:443 volumes: - ./caddy/Caddyfile:/etc/caddy/Caddyfile - /opt/appdata/caddy/data:/data - /opt/appdata/caddy/config:/config + networks: + default: + aliases: + - <service1>.custom.domain + - <service2>.custom.domain + - <service3>.custom.domain restart: unless-stoppedInstead of needing to add an
extra_hostconfig change for each container, I could instead add network aliases for the services that need to talk – these are essentially just DNS entries that work only in Docker, but that’s fine – and then they can reach each other. I made this change and configured the URLs in the respective softwares and it all works.I also removed the previous
extra_hostconfiguration I added last week and replaced it with another network alias. -
Introducing Upright: An Open Source Synthetic Monitoring System
Lots of great ideas in here. Playwright Probes, in particular, are cool.
-
Listen: every idea you’ve ever had, every single one, some cocaine-addled sales critter has had too. And they’re better than you at SEO.
This is somewhat what I was saying (in slightly different terms) to a friend last week but I hope Johan and I are wrong. I fear we are not 😢
-
Vibe of the week: How to Fight Loneliness
(Not a call for help, I’m fine!)