-
Event Sourced
Decoupling Event Log and Snapshot Loading
Last time, we got a load-on-demand chunked snapshot format working. It didn’t feel great, with too much coupling between in-memory representations for the event log and snapshot. We’re going to sort that out now before moving on to a multi-tile snapshot format.
-
Event Sourced
Partially Loading Chunked Snapshots
We’re ready to start making our event sourced spreadsheet scalable. We have an existing unoptimized tracer bullet implementation that we can evolve, a high level plan for scalable snapshot data structures and a benchmark to track progress.
-
Front End
Securing my NPM Supply Chain
The news is full of npm supply chain attacks. I’ve previously described how package providers can use provenance and trusted publishing to help consumers verify that packages haven’t been tampered with.
-
InfiniSheet
InfiniSheet: Chore Updates
Six months ago I was spending all my time on Infinisheet, my event sourced spreadsheet project. Then I got distracted by Home Assistant, had a heat pump installed and had to debug a prototype hot water system.
-
Gear
Heat Geek NanoStore Conclusion
Last time, I left you with a cliffhanger. I had a long list of issues with our prototype Heat Geek NanoStore, together with a plan to fix them all.
-
Gear
Heat Geek NanoStore Update
It’s been more than two months since my post about our prototype Heat Geek NanoStore. At the end of that post, we were waiting for a new diverting valve and extra insulation to be installed, while also looking ahead to colder weather.
-
Front End
Bootstrapping NPM Provenance with GitHub Actions
I’m putting my money where my mouth is. NPM provenance statements are great. Everyone should publish packages with a provenance statement. Including me.
-
Home Assistant
Home Assistant: Resilient Battery Automation
It’s been a while since I investigated Home Assistant’s concurrency model. I was worried about contention between different automations manipulating the same resource. I came to the conclusion that all automations manipulating the same resource should be merged into one, using the composite automation pattern.
-
AWS
AWS Lambda Durable Functions
Lambda functions work best for short lived, compute intensive tasks. An individual Lambda invocation is limited to 15 minutes at most. You pay for the time the function is running, including when it’s waiting for IO to complete. If the function fails, you will need some external process that retries it later. Lambda Durable Functions address these weaknesses.
-
AWS
AWS re:Invent 2025
Once again, I spent the week after re:Invent gorging on YouTube videos at 1.5x speed. I’m using the same approach as last year to find more nuggets of gold and less corporate filler. That is, get a list of new announcements from the keynotes, then look for technical sessions on the interesting stuff. Finally, look for technical presentations from speakers I know are good.