Lawrence Jones
https://blog.lawrencejones.dev/ (RSS)
Of the mental models and rules I use in my life, by far the most useful is to learn only one thing at any given time. If you get it right, you: Ensure work is the right balance of challenging for it to be enjoyable. Avoid stalling due to an overload of uncertainty. Learn better, and faster. This rule works for individuals but is also useful...
Last year I wrote “Looking back at 2022” and found it valuable to reflect and celebrate a year of work, even if just as a reminder of the things that happened before going into the next. So with another year having passed, time to try again! This time for my second full year working at incident.io. To contextualise the year, some milestones (see...
Recently, I’ve needed to add concurrency protections to several HTTP APIs. One endpoint was for updating a schedule, where incident.io customers would tell us about who was on-call and what hours they worked so we could generate a pay report. It would suck if another user was modifying the same schedule – maybe just to add a single user – and...
Most people are familiar with state machines and know their value. The average state machine library can help you model states, prevent invalid transitions, and produce diagrams that help even non-technical people understand how the code behaves. This article isn’t about making the case for state machines. It’s about how you take the concept of a...
From the moment you learn programming people tell you “don’t repeat yourself!” So what I’m about to suggest might sound odd. But I’m here to say that if you want to ship high-quality software at pace, you should be investing in abstractions that are designed to enable copy-and-paste. When you look at most software teams, they work within an...
For the last three months I’ve been working on a team building the incident.io Catalog: read the announcement post here. One of the things I enjoy about working at incident is we often build products I’ve been thinking about or actively using for years. The catalog may be the best example of this, having spent years at GoCardless building and...
When you first create a status page, it’s probably because you want to communicate outages to your customers. The faster you can share details about an outage, the sooner your customers know what’s going on, and the more effectively they can handle the outage. Communicating promptly – in clear language – builds trust. And as a young company with...
Inspired by PlanetScale’s post about Why we chose NanoIDs for PlanetScale’s API, I wanted to share my experience of using ULIDs (Universally Unique Lexicographically Sortable Identifier) at incident.io. It’s worth noting ULIDs had been chosen before I ever arrived at incident, so I can’t speak to the motivation. But I think our implementation...
I’ve never done this before (at least sharing it publicly) but 2022 was a wild ride for me and I wanted to pause to consider everything that happened. Weird to think it, but this was my first full year at incident.io, having joined the company August 2021. So much has happened these last 12 months – 4x’ing the team, our Series A, building loads...
Most software is simple: you have a codebase, and existing patterns for testing at a unit and integration level. Sometimes though, you’ll face problems that aren’t just adding code to an existing project. Maybe your problem involves many codebases, uses tricky infrastructure, or perhaps you’re not trying to test ‘code’, per-say. I’ve faced my...
After one year in operation, I wrote a technical deep-dive into how we built the workflows feature at incident.io, split into a two-part series. Workflow series in two parts: part 1 and part 2 Part one explains core workflow concepts used across the feature, and look at how code structure makes development easy. Followed by a...
Contrary to the popular stereotype of college drop-out founders, research shows start-ups with older founders are more likely to succeed, and build more valuable companies too. It’s clear that when it comes to building companies, experience really does matter. And recently, speaking with friends considering starting companies, I’ve been...
I’m a fan of testing in production, especially when it comes to complex systems with a wide range of user behaviour. You can only go so far with synthetic experiments before you need to try something out for real, but as with anything in production, it’s not without risk. Several years back I was at GoCardless, migrating our infrastructure from...
This post is a written form of my talk at PlatformCon, with the addition of the service catalog story. Here’s a link if watching the talk is more your thing: https://platformcon.com/talk/growing-into-platform-engineering I work at incident.io, a start-up in London that offers incident response tooling to help organisations respond with ease, at...
At a team dinner over Mexican food and margaritas, someone asked “what was the most impactful code you ever wrote?”. I hadn’t considered this before and was surprised I had an answer ready. Though whether the impact was a net positive is something I’m not certain of. Setting the scene I rejoined GoCardless in 2016 when the company was 80 people,...