Today at Lowe’s I passed a Simbe robot doing inventory. A tall pole on a wheeled base, moving the aisles, looking at shelves. I was startled, but only because it appeared behind me. And then I felt pretty much nothing. No one else even looked up. The novelty collapsed almost at once, because every part of it was already familiar. Continue reading “Humanoid robots won’t surprise us when they arrive”
Software engineering, distributed systems, databases, and the teams that build them
Software engineering, distributed systems, databases, and the teams that build them
Taking control of the SQLite WAL
rqlite
is a lightweight, open-source, fault-tolerant relational database built on SQLite and Raft. Version 10 is out now.
rqlite uses SQLite as its storage engine and has a particular relationship with the SQLite Write-Ahead Log (WAL). SQLite, left to itself, manages its own WAL: it checkpoints when the WAL grows, it checkpoints when the last connection closes, and it decides when frames move from the WAL into the main database file.
rqlite 10.0: Better clustering and better management
rqlite
is a lightweight, user-friendly, open-source, distributed relational database. It’s written in Go, employs Raft for distributed consensus, and uses SQLite as its storage engine.
rqlite v10.0 has been released and introduces improved cluster and management features, including a new console application served by rqlite itself.
Be sure to download rqlite 10.0 and try it out today. Check out the docs and discussion is welcome on Slack.
Unified Telemetry Management Plane at Google Cloud Next
It was great to present with Keith Chen on Google Cloud’s unified telemetry ingestion and routing solution at Google Cloud Next
Our new solution – comprising the Unified Management Plane and Telemetry Router – streamlines telemetry management for Google Cloud customers and developers. The design utilizes OpenTelemetry standards to ensure interoperability and avoid vendor lock-in. You can find the video here.
New guide for working with rqlite clusters
Antithesis chooses rqlite to demonstrate AI-assisted testing
rqlite is a lightweight, open-source, distributed relational database built on SQLite and Raft.
Antithesis is an autonomous software testing company that runs software inside a deterministic hypervisor, injecting faults and exploring edge cases that the usual testing cannot reach.
Continue reading “Antithesis chooses rqlite to demonstrate AI-assisted testing”
Speaking at GCP Next 2026
I will be speaking at the GCP Next next month in Las Vegas, NV. My colleague Keith Chen and I will present on GCP’s latest Telemetry management solutions, with OpenTelemetry at the center.
You can learn more about the session here.
Native Linux packages for rqlite
The source code was the moat. But not anymore
Last week I started using some of the new coding agents properly. Not in a careful, experimental way, but properly — for three days on rqlite. Claude Code. Copilot CLI. Tools I had yet to fully integrate into how I write software.
Continue reading “The source code was the moat. But not anymore”
Discovering git worktrees
While working with Claude Code, I quickly needed it to operate on multiple versions of the rqlite codebase at the same time. Cloning the repository repeatedly would have worked, but it felt wasteful.
Agentic coding with Claude and Copilot
After many months of direct ChatGPT use, I’ve finally started coding with the help of Copilot and Claude Code. It’s definitely an intriguing experience. The biggest difference so far? I’m going to hit my Claude Code Pro limits pretty quickly, whereas my Copilot Premium Requests are far from exhausted.
Why talking to LLMs has improved my thinking
Common misunderstandings about large software companies
I sometimes read commentary about large software companies and notice a recurring pattern. People correctly identify real characteristics of large organizations, criticize them, but show little appreciation for why those characteristics exist in the first place.
Continue reading “Common misunderstandings about large software companies”
Start your meetings at 5 minutes past
I work as an Engineering Manager at Google, and my teams practice a simple habit – we book all meetings to start at five minutes past the hour (or half hour).
rqlite 9.3.5 to 9.3.10: Snapshot Robustness, WAL Handling, and Shell Improvements
rqlite is a lightweight, open-source, distributed relational database built on SQLite and Raft.
Versions 9.3.5 through 9.3.10 focus on internal correctness and operational robustness, particularly around Raft snapshotting, WAL handling, and testing. These releases also include improvements to logging, the rqlite shell, and routine dependency upgrades, including a new SQLite release.
Continue reading “rqlite 9.3.5 to 9.3.10: Snapshot Robustness, WAL Handling, and Shell Improvements”
rqlite 9.3.1 to 9.3.4: Parser Updates, Static Analysis Fixes, and Non-Root Docker Images
rqlite is a lightweight, open-source, distributed relational database built on SQLite and Raft.
Versions 9.3.1 through 9.3.4 deliver a set of targeted fixes and internal improvements, most of them aimed at code quality, security posture, and correctness. The only user-facing operational change is that the official Docker image now runs the rqlite daemon as a non-root user.
Balancing SQLite’s WAL, SYNCHRONOUS=OFF, and fsync for fast rqlite recovery
rqlite is a lightweight, user-friendly, distributed relational database. It’s written in Go, employs Raft for distributed consensus, and uses SQLite as its storage engine.
The newly released rqlite 9.2 introduces a major improvement to startup performance – nodes can now resume from where they left off, instead of rebuilding their state from scratch on every restart. This change means that even if a node manages gigabytes of SQLite data, it can come back online almost instantly, with startup time no longer proportional to dataset size.
In this post, I’ll explore why this change matters, how it was implemented on top of the existing Raft system and SQLite WAL, and what it says about rqlite’s evolution.
Continue reading “Balancing SQLite’s WAL, SYNCHRONOUS=OFF, and fsync for fast rqlite recovery”
rqlite images now available on GitHub Container Registry
rqlite
is a lightweight, open-source distributed relational database implemented in Go, and which uses SQLite as its storage engine.
rqlite container images are now mirrored to GitHub Container Registry (GHCR). Images on Docker Hub and GHCR carry the same tags and digests; you can pull from either registry based on your preferences or network policy. This change should improve reliability and make it easier to integrate rqlite into environments that standardize on GHCR.
Continue reading “rqlite images now available on GitHub Container Registry”
rqlite reaches 17,000 stars on GitHub
Driving Open Standards in Cloud Observability
My teams recently delivered support for the OpenTelemetry Protocol (OTLP) into Google Cloud Observability. This marks a significant step toward open, vendor-neutral observability.
By adopting OTLP, customers gain interoperability across tools, simpler data pipelines, and a future-proof path as the ecosystem standardizes. The change strengthens data quality in Cloud Trace today and sets the stage for metrics and logs to follow.
You can read the full announcement on the Google Cloud blog.
Tokens & Tactics: Scaling Yourself Horizontally with AI
I was recently interviewed by Noah Brier for his BRXND Tokens & Tactics AI newsletter. Noah and I used to work together a few years ago at Percolate so it was good to connect again.
You can check out the interview here.
rqlite 9.0: Real-time Change Data Capture for Distributed SQLite
rqlite
is a lightweight, user-friendly, open-source, distributed relational database. It’s written in Go, employs Raft for distributed consensus, and uses SQLite as its storage engine.
rqlite 9.0 introduces Change Data Capture (CDC), enabling you to stream the changes occurring to the underlying SQLite database to other systems. With CDC, rqlite is no longer just a distributed database—it’s a live event source. So let’s take a look at what the latest release allows us to do, and some of the design challenges that needed solving — especially building Change Data Capture on SQLite.
Continue reading “rqlite 9.0: Real-time Change Data Capture for Distributed SQLite”
On the way to rqlite 9.0
rqlite is a lightweight, open-source, distributed relational database written in Go, which uses SQLite as its storage engine.
Development for the 9.0 release has started, and should be an important release. The main goals for 9.0 include:
- Change Data Capture (CDC). CDC will allow you to stream changes from rqlite as they happen. This long-requested feature will make it easy to integrate rqlite with caches, pub-sub systems, and more.
- API improvements. This will include better error codes, while maintaining current behaviour.
Upgrading from the 8.x release series should be seamless.
My development team costs $41.73 a month
Two years ago, I appeared on Contributor, a podcast hosted by Eric Anderson of Scale Venture Partners. I was there to talk about rqlite, the open-source database I maintain.
Consistency Over Availability: How rqlite handles the CAP Theorem
rqlite
is a lightweight, user-friendly, open-source, distributed relational database. It’s written in Go and uses SQLite as its storage engine.
When it comes to distributed systems the CAP theorem is an essential concept. It states that it’s impossible for a distributed database to simultaneously provide Consistency, Availability, and Partition tolerance. The challenge is in the face of a network partition, a database can only be available or consistent, but not both.
Let’s take a look at the CAP theorem and see how rqlite fits into this fundamental trade-off.
Continue reading “Consistency Over Availability: How rqlite handles the CAP Theorem”
I’ve been surprised by – and enjoy – one aspect of using large language models more than any other.