Philip O'Toole
Software engineering, distributed systems, databases, and the teams that build them
- Posts
- 333 from 28 Nov 2009 to 24 Oct 2026
- Posting
- weekly (31 in the last year)
- Kind
- personal blog
- Feed
- https://philipotoole.com/feed/
2026 29
- Twelve years of distributed SQLite
- rqlite 10.5.1 to 10.6.0: Numeric Error Codes, Node Promotion, and CDC Fixes
- Improved web console in rqlite v10.5.0
- rqlite 10.3.1 to 10.4.0: Cluster Integrity, Streaming Backups, and CDC Security
- Antithesis breaks rqlite on purpose
- rqlite v10.3.0 – features, upgrades, and bug fixes
- From 18 months to 6: High-velocity database engineering
- Claude redesigns rqlite.io
- Codex for Open Source
- Proving to Fable I maintain the repo
- First impressions of Claude Fable
- rqlite v10.2: Improving the web console
- rqlite reaches 1 million Docker downloads
- rqlite v10.1: Schema management via the Web Console
- Humanoid robots won’t surprise us when they arrive
- Taking control of the SQLite WAL
- rqlite 10.0: Better clustering and better management
- Unified Telemetry Management Plane at Google Cloud Next
- New guide for working with rqlite clusters
- Antithesis chooses rqlite to demonstrate AI-assisted testing
- Speaking at GCP Next 2026
- Native Linux packages for rqlite
- The source code was the moat. But not anymore
- Discovering git worktrees
- Agentic coding with Claude and Copilot
- Why talking to LLMs has improved my thinking
- Common misunderstandings about large software companies
- Start your meetings at 5 minutes past
- rqlite 9.3.5 to 9.3.10: Snapshot Robustness, WAL Handling, and Shell Improvements
2025 25
- rqlite 9.3.1 to 9.3.4: Parser Updates, Static Analysis Fixes, and Non-Root Docker Images
- Balancing SQLite’s WAL, SYNCHRONOUS=OFF, and fsync for fast rqlite recovery
- rqlite images now available on GitHub Container Registry
- rqlite reaches 17,000 stars on GitHub
- Driving Open Standards in Cloud Observability
- Tokens & Tactics: Scaling Yourself Horizontally with AI
- rqlite 9.0: Real-time Change Data Capture for Distributed SQLite
- On the way to rqlite 9.0
- My development team costs $41.73 a month
- Consistency Over Availability: How rqlite handles the CAP Theorem
- rqlite 8.38.0 to 8.42.0: Leader Stepdown, Google Cloud Backups, and More
- Adding automatic Google Cloud Storage Backup and Restore to rqlite
- The Developer’s Manifesto for the Age of LLMs
- GPT is writing the GitHub issues, Copilot is fixing them
- rqlite development: the Agents are here
- New JDBC driver for rqlite
- rqlite turns 10: Observations from a decade building Distributed Systems
- rqlite 8.37.0: Automatic reloading of X.509 Certificates
- Gemini-driven code reviews in GitHub
- New Java client for rqlite
- New rqlite Go client
- Introducing flagforge: Simplifying Go Flag Code Generation
- rqlite Helm charts now on Artifact Hub
- rqlite reaches 16,000 stars on GitHub
- How rqlite is tested
2024 30
- rqlite 8.34.0 to 8.36.0: New Features and Enhancements
- New Configuration Guide for rqlite
- rqlite 8.33.0: Date and Time function support
- Faster Reads, Same Guarantees: Linearizable Consistency in rqlite 8.32
- Concurrency Control in Go: Inside rqlite’s Custom Synchronization Primitives
- rqlite 8.31.0: Improved support for BLOB data
- From Google Cloud to WordPress.com
- rqlite 8.30.0: Introducing Automatic Database Optimization
- Stephen Blum on rqlite
- rqlite 8.29: More extensions and improved management
- rqlite 8.28: Enhanced Docker Support for Seamless SQLite Extension Loading
- rqlite 8.27: loadable SQLite extensions support
- Building rqlite 9.0: Cutting Disk Usage by Half
- Delphi client for rqlite
- rqlite Office Hours
- rqlite reaches 15,000 stars on GitHub
- rqlite 8.24.9: now with multi-platform Docker images
- GopherCon 2023: Building Distributed Systems in Go
- rqlite 8.24.0 released: Point-in-time backups
- Building a highly-available search engine using SQLite
- Latest updates to rqlite 8.23
- Mailpit adds support for rqlite
- Prepping to Speak at Tech Conferences: From AWS re:Invent to GopherCon
- rqlite 8.23.0: Support for SQLite RETURNING
- rqlite Versions 8.20.0 to 8.22.2: Enhancements in Stability, Performance, and Data Handling
- rqlite 8.19.0 released – now with with Query timeouts
- rqlite 8.17.0 & 8.18.0: Scheduled VACUUMs and Enhanced JSON Support
- rqlite 8.16.0 released
- rqlite 8.15.0 released
- New Helm support for rqlite
2023 22
- rqlite 8.14.0 released
- rqlite 8.13.4 released
- Talking rqlite on the Contributor podcast
- rqlite 8.10.0 – load large SQLite datasets fast
- rqlite 8.0: Large Dataset Support and Core Feature Upgrades
- rqlite client libraries
- New Log Management features in GCP
- Distributed Systems at GopherCon 2023
- rqlite reaches 14,000 stars on GitHub
- Fix random(), stabilize tests
- On the way to rqlite 8.0
- Speaking at GopherCon 2023
- rqlite upgraded to SQLite 3.42.0
- rqlite now supports PowerPC, MIPS, and RISC
- rqlite 7.16.0 – restore your system from S3
- Adding automatic S3 backups to rqlite
- What did GPT-4 find wrong with the rqlite source code?
- rqlite 7.14.2 released
- 9 years of open-source database development
- Creating rqlite 7.14.0 with GitHub Copilot
- Stephen Wolfram on ChatGPT
- rqlite reaches 13,000 stars on GitHub
2022 22
- rqlite.io launched
- rqlite 7.13.0 released
- How I found a bug in SQLite
- rqlite 7.12.0 released
- rqlite 7.11.0 released
- Replacing Postgres with rqlite
- rqlite 7.10.0 released
- rqlite 7.8.0 released
- rqlite 7.7.0 released
- The Engineering Management Myths Star Trek Teaches
- rqlite 7.6.0 released – now with ARM builds
- Building Secure and Reliable Systems at Google
- rqlite 7.5.1 released
- rqlite 7.5.0: Trading durability for write performance
- rqlite reaches 10,000 stars on GitHub
- Testing rqlite read consistency
- Talking Distributed Systems at Hacker Nights
- rqlite 7.3.2 released
- New Slack channel for rqlite
- rqlite 7.0: Designing Node Discovery and Automatic Clustering
- Why are we still tailing log files?
- rqlite 6.9.0 released
2021 23
- rqlite 6.8.2 released
- Mentoring junior programmers: What I tell them is job number one
- rqlite: static linking and smaller Docker images
- rqlite 6.6.2 released
- rqlite 6.6.1 released
- Using Ansible to deploy WordPress
- rqlite 6.6.0 released
- rqlite at the CMU Database Group
- rqlite 6.5.0 released
- rqlite at Carnegie Mellon University
- rqlite 6.4.3 released
- rqlite 6.1.0 released
- Cloud Logging on the Google Cloud Platform Podcast
- LowEndBox talks rqlite
- rqlite 6.0: the evolution of a distributed database design
- rqlite on dbdb.io
- rqlite 5.12.0 released
- rqlite 5.11.1 released
- 7 years of open-source database development: lessons learned
- New Python package for rqlite
- Plugging a memory leak in rqlite
- rqlite 5.10.0 released: comparing its disk usage to 5.6.0
- rqlite 5.8.0 released
2020 17
- Moving to Protocol Buffers with rqlite 5.7.0
- Where is technical innovation actually happening?
- Parameterized SQL with rqlite 5.5.0
- rqlite 5.4.2 released
- Logs and Time Series are not the same
- rqlite 5.4.0 released
- From Rackspace to GCP
- Talking Audit Logging on Google Cloud Platform
- rqlite 5.3.0 released
- rqlite 5.2.0 released
- rqlite 5.1.1 released
- rqlite on InfoWorld
- RSA Conference 2020
- New knex.js library for rqlite
- Moving to HTTPS with Let’s Encrypt
- Scaling read performance with rqlite 5.1.0
- rqlite 5.0.0 released
2019 16
- Logging and Monitoring systems are hard to code
- rqlite 4.6.0 released
- Observing Observability at Devopsday
- devopsdays Galway
- Observing Observability
- Monitorama Baltimore 2019
- Enabling CircleCI testing for gorqlite
- Continuing the WordPress bring-up on GCP
- go mod in rqlite
- Meaningful Uptime Measurements for the Cloud
- How I handle my Gmail load at Google
- rqlite 4.5.0 released
- Using Commutativity for Faster Replication
- Learning data engineering
- rqlite 4.4.0 released
- Batching in Go
2018 12
- Jimmy Carter and the Failures of Management
- rqlite 4.3.1 released
- rqlite at the Pitt CS Club
- Go race detection and failing fast
- rqlite moved to Circle 2.0
- Deploying Vallified on GCP
- Moving to CircleCI 2.0
- Monitoring: it’s not just for production
- rqlite and Hashicorp Raft 1.0
- rqlite 4.3.0 released
- Moving East
- Happy New Year
2017 31
- rqlite 4.2.2 released
- One search to rule them all
- Ekanite 1.3.0 released
- The power of sorting
- rqlite 4.2.1 released
- Hash tables distilled
- rqlite 4.2.0 released
- Windows binaries now available for rqlite
- A shared code base does not a software team make
- rqlite 4.1.0 released
- Java client for rqlite
- rqlite v4.0.1 released
- New JavaScript client library for rqlite
- New rqlite Google Group
- Ekanite 1.2.3 released
- Go, gRPC, and PostgreSQL
- rqlite now available with node-to-node encryption
- Ekanite 1.2.1 released
- San Francisco ReactJS Meetup at Percolate
- Why Slack isn’t working
- rqlite v3.14.0 released
- rqlite now available as a Docker image
- Percolate at the San Francisco Python Meetup
- rqlite v3.13.0 released
- rqlite v3.12.1 now with Discovery Service for easier clustering
- Building a cluster discovery service with AWS Lambda and DynamoDB
- Analytics 2.0 goes live at Percolate
- rqlite v3.10.0 released
- rqlite v3.9.2 released
- What new development managers should know
- Ekanite 1.2.0 released
2016 34
- Building a snap for rqlite
- rqlite v3.8.0 released
- Stop asking "how much data do you have?"
- Some of my favourite programming books
- Load SQLite dump files into rqlite v3.7.0
- Elasticsearch Meetup at Percolate
- Ekanite at the San Francisco Go Meetup
- rqlite v3.6.0 released
- rqlite now supported on Microsoft Windows
- InfluxDB 1.0 released
- rqlite v3.5.0 released
- rqlite v3.4.1released
- Ekanite v1.1.0 released
- The evolution of the rqlite source code
- rqlite v3.4.0 released
- Be a Conviction Engineer
- rqlite v3.3.0 released
- rqlite v3.2.1 released
- How to organise a Go project
- rqlite v3: Globally replicating SQLite
- rqlite v3.0.1 released with leader redirection
- New Python clients for rqlite
- rqlite moved to new repository
- rqlite v2.2.1 released with HTTPS, Basic Auth, and user permissions
- rqlite at the San Francisco Go Meetup
- What I learned from programming databases
- Pre-built binaries now available for rqlite and Ekanite
- rqlite 2.0 released with configurable read-consistency
- rqlite – replicated SQLite with new Raft consensus and API
- rqlite and Hashicorp Raft Consensus
- New browser interface for Ekanite
- Gresham’s law and Slack
- Revisiting syslog-gollector
- Running services is fun
2015 23
- InfluxDB and the Raft consensus protocol
- Designing a search system for log data — part 3
- Designing a search system for log data — part 2
- Designing a search system for log data — part 1
- Contributing to InfluxDB
- Testing InfluxDB Storage Engines
- Building a distributed key-value store using Raft
- Coding like it’s 1999
- The strange economics of open-source software
- Who watches the watchers?
- 400 days of Go
- Leadership without Management
- Running services is hard
- Gophercon 2015
- InfluxDB 0.9.0 released
- Software development: it’s got nothing to do with computers
- Reviewing Implementing Cloud Design Patterns for AWS
- Increasing bleve indexing performance with sharding
- Reviewing Elasticsearch Cookbook
- Code reviews still rule
- History of Software Engineering
- Book Review: Cassandra High Availability
- Software Development for Infrastructure
2014 19
- Eudyptula Challenge
- Drop, Throttle, or Buffer
- Measure Everything
- Is node.js just a stopgap?
- You come for the features, but you stay for the uptime
- Evolving a language in and for the real world: C++ 1991-2006
- Replicating SQLite using Raft Consensus
- Wow, the Go Memory Model really threw me
- Writing a Syslog Collector in Go
- Call me Definitely
- A Prayer for Distributed Systems Developers
- InfluxDB and Grafana HOWTO
- What I wish I’d been told about the JVM
- How you should write software design documents
- Why you should write software design documents
- Always thinking of the next guy
- Welcome to your data
- Distributed Systems for Fun and Profit
- Book Review: Mastering ElasticSearch
2013 9
- Infrastructure at Scale: Apache Kafka, Twitter Storm and elasticsearch
- Speaking at AWS re:Invent 2013
- Avoiding elasticsearch split-brain
- Loggly Generation 2 Released!
- Technical Leadership through Testing
- Using the Source
- If you love your logs, set them free
- Monitoring Storm Kafka Spouts using Python
- Boost ASIO timers — errors are never enough