-
InfiniSheet
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
andBlobStore
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.
-
Front End
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 Yourself. That has it’s own special challenges when it comes to unit tests.
-
React Spreadsheet
React Spreadsheet: Optimistic Update
I recently made my spreadsheet data interface more explicitly asynchronous. I naively updated
VirtualSpreadsheet
to use the newly asynchronoussetCellValueAndFormat
API. After discovering that the user experience was horrible if there was any latency, I did a deep dive into best practice for handling asynchronous updates in React. -
Front End
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 user experience was terrible.
-
InfiniSheet
React Spreadsheet
Asynchronous Spreadsheet Data
Last week’s tracer bullet development showed that I needed to make my
SpreadsheetData
interface more explicitly asynchronous. -
InfiniSheet
React Spreadsheet
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 trillions of rows and columns. The component accesses spreadsheet data via a SpreadsheetData interface based on React’s external store interface.
-
InfiniSheet
Asynchronous Event Log
I’ve created an event log interface and reference implementation. The interface exposes all the functionality I’ll need with a minimal API. There’s enough of an abstraction layer that it should allow for multiple real implementations.
-
TypeScript
Asynchronous TypeScript
One of my reasons for choosing TypeScript as a language stack is that it’s built on an asynchronous IO, event-driven programming model, from the ground up. On the server side, idiomatic NodeJS code scales surprisingly well for a dynamic, low ceremony, fast development stack.