Tag design

How rqlite is tested

rqlite is a lightweight, open-source, distributed relational database written in Go, and built on SQLite and Raft. With its origins dating back to 2014, its design has always prioritized reliability, and quality. The robustness of rqlite is also a testament…

Building rqlite 9.0: Cutting Disk Usage by Half

rqlite is a lightweight, open-source, distributed relational database written in Go.  It is built on the Raft consensus protocol and uses SQLite as its storage engine. Development of 9.0 has begun and aims to reduce disk usage by approximately 50%.…

GopherCon 2023: Building Distributed Systems in Go

My GopherCon 2023 talk, Build Your Own Distributed System Using Go, has been published to YouTube. It was a great conference, and I appreciated the opportunity to share some lessons on designing, developing, and operating modern distributed systems in general,…

9 years of open-source database development

rqlite is a lightweight, open-source, distributed relational database written in Go, which uses SQLite as its storage engine. I’ve been developing rqlite since 2014 and its design and implementation has evolved substantially during that time — and the design docs…

Talking Distributed Systems at Hacker Nights

I recently had the opportunity to talk distributed systems and rqlite at the Hacker Nights NYC Meetup. It was great chance to speak with some  folks, and discuss rqlite, its design, and how it operates. The presentation is available, as…

Logs and Time Series are not the same

If you work in the logging, monitoring — or even Observability — space long enough, you eventually end up on team that tries to build a system that handles both logs and time series in a high-performant and cost-efficient manner.…

Monitoring: it’s not just for production

Monitoring — the measurement of your system, the gathering of telemetry, and alerting when it behaves anomalously — is key to running large-scale, modern computer systems.  But what many developers today don’t realise is that monitoring can be a key part of…

A shared code base does not a software team make

I’ve been programming for many years, and have spent most of the last few years managing development teams. I’ve written plenty of closed source software, and for a time made my living writing open source software too. One thing stands…

Why Slack isn’t working

Slack: Where work happens Something is happening at companies that use Slack. Slack, the company, may claim it’s work, but it’s less and less productive work, and it’s having a destructive affect upon my own field of software development. I…

How to organise a Go project

Some fellow developers, using Go for the first time, recently asked me how to organise a Go project and for some high-level guidance on programming using the language. I thought the most effective way to answer this question was to…

What I learned from programming databases

Programming a database is fascinating work. I’ve been deeply involved with developing open source databases for the past two years and programming a database is possibly the most instructive project one can ever complete as a software developer. What’s really…

Gresham’s law and Slack

“Bad money drives out good.” When is the last time you spoke with your fellow developer? I mean actually spoke? Or was it just over Slack? I like really Slack, Flowdock, Hipchat and the like. I couldn’t do my job…

Coding like it’s 1999

“Run into an obstacle in what you’re working on? Hmm, I wonder what’s new online. Better check.” If you haven’t already, you should start reading Paul Graham’s essays. In one on philosophy, Graham believes that many of the answers provided…

History of Software Engineering

I recently came across a talk on YouTube titled History of Software Engineering, given by Paolo Perrotta. Normally I find online videos to have a low information-to-time ratio, but this one was excellent. It’s not too long, with plenty of…