Tim Wiegand
banner
thecandidstartup.org
Tim Wiegand
@thecandidstartup.org
Chief Everything Officer (CXO) at The Candid Startup

https://www.thecandidstartup.org/
I've had a fun month debugging the mystery hot water system that was installed with our heat pump. The journey continues, but today you can find out what's happened so far with our prototype Heat Geek NanoStore.

www.thecandidstartup.org/2025/11/17/h...
Heat Geek NanoStore
A few weeks ago I described our heat pump installation, which included a mystery hot water system. The mystery hot water system, as some of you already guessed, is a prototype Heat Geek NanoStore.
www.thecandidstartup.org
November 17, 2025 at 11:13 AM
Our heat pump installer included Open Energy Monitoring so that they could monitor performance. It's well worth doing a deeper dive. Unusually for internet connected smart devices, you can set it up to do everything locally.

www.thecandidstartup.org/2025/11/10/o...
Open Energy Monitoring
I touched on Open Energy Monitoring briefly when talking about my heat pump install and Home Assistant integration. It’s worth a deeper dive.
www.thecandidstartup.org
November 10, 2025 at 11:03 AM
What's the first thing you should do after getting a heat pump installed? Integrate it with Home Assistant of course.

www.thecandidstartup.org/2025/11/03/h...
Home Assistant Heat Pump: myVAILLANT, Emoncms and Met Office
Now that we have a heat pump up and running, the obvious next job is to get it hooked up to Home Assistant. Our heat pump is a Vaillant AroTHERM plus. A quick search of the Home Assistant Community St...
www.thecandidstartup.org
November 3, 2025 at 10:56 AM
Interested in low carbon heating? Thinking about getting a heat pump? We've just had one installed. Here's how it went down.

www.thecandidstartup.org/2025/10/27/v...
Vaillant aroTHERM plus 7kW Air Source Heat Pump
Like many houses in the UK, we rely on a gas combi boiler for heating and hot water. I know that continuing to burn gas is not sustainable in the long term. However, I couldn’t see the point in switch...
www.thecandidstartup.org
October 27, 2025 at 10:56 AM
I'm taking a deep dive into Home Assistant internals. I want to know how Home Assistant's concurrency model works and what behavior I can rely on when implementing potentially conflicting automations.

www.thecandidstartup.org/2025/10/20/h...
Home Assistant: Concurrency Model
I like to think of myself as a computer scientist. I want to know how things work. Then I want to understand why they work that way.
www.thecandidstartup.org
October 20, 2025 at 9:55 AM
Today's theme is resilience. Home Assistant gives you a high level abstraction of live data, tracking changes as they happen in the real world. It's not surprising the abstraction can be leakly. It can take some creative thinking to plug the holes.

www.thecandidstartup.org/2025/10/13/h...
Home Assistant: Hypervolt Resilience, Configuration and Backups
The Hypervolt EV charger integration is an important dependency for the automations and dashboards that I’m running on Home Assistant. Now that I’m a few weeks in, I’ve noticed some edge cases where t...
www.thecandidstartup.org
October 13, 2025 at 10:24 AM
I'm starting to look more under the hood of Home Assistant. How does an integration bridge the gap between periodic REST API calls and the UI presentation of live data? Always up to date, tracking changes as they happen in the real world.

www.thecandidstartup.org/2025/10/06/h...
Home Assistant: Octopus, Repairs and Blueprints
Last time, we touched briefly on how to extract electricity meter readings from the Home Assistant Octopus Energy integration. I think it’s worth doing a deeper dive.
www.thecandidstartup.org
October 6, 2025 at 10:30 AM
My Home Assistant journey continues as I go all in on custom dashboards, tear my hair out with displayed values that are clearly wrong and find my first bug in Home Assistant.

www.thecandidstartup.org/2025/09/29/h...
Home Assistant: Dashboards, Statistics and Custom Cards
I now have useful data being collected and displayed on the Home Assistant built-in energy dashboard. Of course, it’s not being presented exactly as I would like and doesn’t include all the data sourc...
www.thecandidstartup.org
September 29, 2025 at 9:15 AM
When I started playing with Home Assistant I thought it would be something I dipped in and out of. Here I am, three weeks later, and it's all I can think about.

www.thecandidstartup.org/2025/09/22/h...
Home Assistant: Integrals and Utility Meters
I’m finding the Home Assistant Energy Dashboard to be pretty but not very useful. The main problem is that the data is very coarse grained. The dashboard is driven by Home Assistant’s statistics syste...
www.thecandidstartup.org
September 22, 2025 at 9:59 AM
Fiddling around with Home Assistant is addictive. This week I'm using a solar forecast to work out how much juice I need to add to my home battery overnight.

www.thecandidstartup.org/2025/09/15/h...
Home Assistant: Helpers, Templates and Solar Forecasts
Last time, I took you through setting up a Home Assistant Green, installing HACS, adding custom integrations and then creating an automation to disable discharge of my home battery while my EV is char...
www.thecandidstartup.org
September 15, 2025 at 9:38 AM
I've been getting increasing amounts of traffic from Google Search to old blog posts that are now out of date. When does it make sense to rewrite history?

www.thecandidstartup.org/2025/09/08/r...
Rewriting History
This is a blog, not a set of living documents. Each post is a moment in time. However, time passes, and sometimes you find things that are wrong in an old post.
www.thecandidstartup.org
September 8, 2025 at 9:16 AM
This week I found something that I *really* needed to automate at home. Time to finally jump in and get Home Assistant up and running.

www.thecandidstartup.org/2025/09/01/h...
Home Assistant
Home Assistant has been on my radar for a while. I’ve always liked the idea of having a small local server running 24x7 that I could use to “automate stuff”. Two things put me off doing anything about...
www.thecandidstartup.org
September 1, 2025 at 10:28 AM
I'm getting started on the hard graft of making my tracer bullet event sourced spreadsheet more scalable. There's no sexy new UI features to give me a sense of progress. I need a benchmark. Fortunately, Vitest makes it easy.

www.thecandidstartup.org/2025/08/25/s...
Snapshot Benchmarking with Vitest
The framework for our event sourced spreadsheet is in place. Entries are being written to the log, snapshots are created at regular intervals, clients start by reading the most recent snapshot and the...
www.thecandidstartup.org
August 25, 2025 at 1:41 PM
Last week I left you with a cliff hanger. How should existing clients notice and react when snapshots of the event log are completed? Now, all is revealed.

www.thecandidstartup.org/2025/08/18/i...
Snapshot Completion
We don’t yet handle the case where a snapshot completes when a client is already up and running. The snapshot could have completed because this client triggered it, or another client did. How can clie...
www.thecandidstartup.org
August 18, 2025 at 10:14 AM
This week I finally tie everything together and start saving snapshots as my event sourced spreadsheet's event log grows. When a new client starts up, it loads from the most recent snapshot.

www.thecandidstartup.org/2025/08/11/i...
Tracer Bullet Snapshots
It’s finally time to create snapshots as my event sourced spreadsheet’s event log grows. It seemed like I was never going to get here. There’s a laundry list of pre-work that I needed to complete firs...
www.thecandidstartup.org
August 11, 2025 at 9:17 AM
Moving right along, I've created a Cell Map data structure as my in-memory representation of an event sourced spreadsheet. You can query the cell map at any point in the event log with a typical lookup cost of O(1), worst case O(logN).

www.thecandidstartup.org/2025/08/04/i...
Infinisheet Cell Map
I have all the bits of infrastructure needed to start saving snapshots of my event sourced spreadsheet. The source of truth for the spreadsheet content is in an event log. I’ve defined a Blob Store in...
www.thecandidstartup.org
August 4, 2025 at 10:27 AM
The overflowing pagination footer reminds me that I'm approaching 150 posts on www.thecandidstartup.org/blog/. Fixing the liquid templates reminds me of my early days wrestling with assembler language. I'm taking a few days off to recover, next post on August 4th.
July 25, 2025 at 9:14 AM
I've built lots of new interfaces and components, now it's time to wire them up into our tracer bullet prototype.

www.thecandidstartup.org/2025/07/21/i...
Wiring up the Blob Store and Workers
Now that I have interfaces and reference implementations for a Blob Store and Workers, we can try to wire them up to our tracer bullet prototype.
www.thecandidstartup.org
July 21, 2025 at 9:45 AM
Last week I came up with a common Blob Store interface by extracting a common abstraction from different possible implementations. This week I do it all again for Workers, and find there's almost nothing there ...

www.thecandidstartup.org/2025/07/14/i...
InfiniSheet Workers
I’m building an event sourced spreadsheet on a foundation of an event log, a blob store and background workers. I’ve defined EventLog and BlobStore interfaces with reference implementations. Now it’s ...
www.thecandidstartup.org
July 14, 2025 at 10:21 AM
Back to the foundations of my cloud spreadsheet's data storage system. This week I define a blob store interface (think S3, or local file system), together with a reference implementation.

www.thecandidstartup.org/2025/07/07/i...
InfiniSheet Blob Store
We left our scalable cloud spreadsheet project in a good place. We used tracer bullet development and after a few iterations got an end to end simulation running against a reference implementation of ...
www.thecandidstartup.org
July 7, 2025 at 9:39 AM
Unit test code is its own particular thing, driven by the expectations of your unit test framework’s tooling. However, that doesn’t mean you have to throw abstraction out of the window and resign yourself to copy and paste hell.

www.thecandidstartup.org/2025/06/30/u...
Unit Test Code Reuse with Vitest
I’m a strong believer in unit tests. I try to get close to 100% code coverage with my tests. Which means I have a lot of unit test code. Normally, you try to minimize duplication, and Don’t Repeat You...
www.thecandidstartup.org
June 30, 2025 at 9:35 AM
After last week's deep dive into best practices for asynchronous React, I'm putting what I learned into practice.

www.thecandidstartup.org/2025/06/23/r...
React Spreadsheet: Optimistic Update
I recently made my spreadsheet data interface more explicitly asynchronous. I naively updated VirtualSpreadsheet to use the newly asynchronous setCellValueAndFormat API. After discovering that the use...
www.thecandidstartup.org
June 23, 2025 at 9:54 AM
After last week's debacle when making an update API asynchronous in my React spreadsheet component, I've gone for a deep dive into best practices when dealing with asynchronous responses in React.

www.thecandidstartup.org/2025/06/16/a...
Asynchronous React
Last time, I naively updated my spreadsheet frontend component to use an asynchronous update API. Everything looked like it was working, until I added some latency to the API’s response. The resulting...
www.thecandidstartup.org
June 16, 2025 at 9:41 AM
I follow through on last week's post and make my Spreadsheet Data interface explicitly asynchronous. It does not go well.

www.thecandidstartup.org/2025/06/09/a...
Asynchronous Spreadsheet Data
Last week’s tracer bullet development showed that I needed to make my SpreadsheetData interface more explicitly asynchronous.
www.thecandidstartup.org
June 9, 2025 at 10:00 AM
Using a tracer bullet approach to connect my scalable virtualized spreasdsheet frontend to my sketchy reference implementation of an event log. Lots of learning. I end up with two spreadsheets synchronizing data via a shared event log.

www.thecandidstartup.org/2025/06/02/e...
Event Sourced Spreadsheet Data
I’ve been working on my scalable spreadsheet project from opposite ends. So far, most of my focus has been on the front end. I’ve created a virtualized React spreadsheet component that can scale to tr...
www.thecandidstartup.org
June 2, 2025 at 9:54 AM