Intermittent downtime from repeated crashes
This is a technical write-up of an incident on Friday 18th November 2022 where we experienced 13 minutes of downtime from intermittent crashes.
Making code-generation in Go more powerful with generics
Go 1.18 added generics to the language a few months ago. Here’s how we’ve combined generics with code generation to make our code safer and easier to read and write.
Building great developer experience at a startup
We’ve invested in our developer experience to help our team ship great a product at pace.
Lisa Karlin Curtis
Building Workflows, Part 2 – the executor and evaluation
Part two of the series lookin at the workflow executor, and concluding with an evaluation of the project in terms of developer time, extensibility, and quality of outcome.
Building Workflows, Part 1 — Core concepts and the Workflow Builder
Part one of a deep-dive into building our workflow engine, covering core workflow concepts and how they are used to power the Workflow Builder.
Updating our data stack
How we’ve updated our data stack since it was first built in January.
Making Go errors play nice with Sentry
Getting Go errors to work well with Sentry is hard. This post explains how we got them playing nicely by deduping stacktraces.
A modern data stack for startups
Data should be a commodity, and accessible to everyone in a company. We've picked a data stack for tools that make this possible- here's what we use, how it's configured, and why we picked it.
Using context.Context to mock API clients
We've found a pattern to mock external client libraries while keeping code simple, reducing the number of injection spots and ensuring all the code down a callstack uses the same mock client.
Stay in the loop: subscribe to our RSS feed.