• Front End

    Vitest 3 Monorepo Setup

    I was about to get started turning my stub react-spreadsheet package into a real one, when I noticed a new Vitest related warning from VS Code.

  • Blog

    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.

  • Gear

    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 it. There was low level anxiety over picking the right hardware and OS to run it on, but more importantly there was the lack of anything that really needed automating.

  • Event Sourced Front End

    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 then following along as the log is updated. All this has been done tracer bullet style, with simple code that is largely unoptimized and not scalable.

  • Event Sourced

    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 clients find out that a snapshot workflow has completed? They’ll pick up the new snapshot when they start up, but a long running client could end up with a huge log segment unless there’s some kind of explicit notification.

  • Event Sourced

    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 first.

  • Event Sourced

    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 interface to serialize snapshots as blobs of data together with a Workers interface to create snapshots as a background task.

  • Event Sourced

    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.

  • InfiniSheet

    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 the turn of background workers.

  • InfiniSheet

    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 an event log.