<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://tigerbeetle.com/blog</id>
  <title>TigerBeetle Blog</title>
  <updated>2026-04-14T00:00:00Z</updated>
  <link href="https://tigerbeetle.com/blog/atom.xml" rel="self" type="application/atom+xml" />
  <link href="https://tigerbeetle.com/blog" rel="alternate" type="text/html" />
  <subtitle>Insights, updates, and technical deep dives on building a high-performance financial transactions database.</subtitle>
  <icon>https://tigerbeetle.com/blog/img/icon-cf201f01.png</icon>
  <entry>
   <id>https://tigerbeetle.com/blog/2026-04-14-automation-screams-joy</id>
   <title>Automation That Screams Joy</title>
   <published>2026-04-14T00:00:00Z</published>
   <updated>2026-04-14T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2026-04-14-automation-screams-joy" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2026-04-14-automation-screams-joy/banner-bb710d5d.webp" />
   <summary>I hate shell scripting with a passion. Whenever I join a project, I go on a crusade to rewrite all bash scripts into the project’s main language. I have Java For Everything tattooed on my arm (no). The code I’ve written at TigerBeetle that I am most proud of is this:
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2026-03-19-a-trillion-transactions</id>
   <title>A Trillion Transactions</title>
   <published>2026-03-19T00:00:00Z</published>
   <updated>2026-03-19T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2026-03-19-a-trillion-transactions" />
   <author><name>Joran Dirk Greef</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2026-03-19-a-trillion-transactions/banner-3186611b.webp" />
   <summary>We processed a trillion transactions to test TigerBeetle’s scale.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2026-02-16-index-count-offset-size</id>
   <title>Index, Count, Offset, Size</title>
   <published>2026-02-16T00:00:00Z</published>
   <updated>2026-02-16T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2026-02-16-index-count-offset-size" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2026-02-16-index-count-offset-size/banner-afcdf490.webp" />
   <summary>Wherein we make progress towards solving one of the most vexing problems of Computer Science — naming things.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2026-01-14-bitemporality</id>
   <title>One for the Treble, Two for the Time</title>
   <published>2026-01-14T00:00:00Z</published>
   <updated>2026-01-14T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2026-01-14-bitemporality" />
   <author><name>Lewis Daly</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2026-01-14-bitemporality/banner-750eb3b9.webp" />
   <summary>  Time is like a river made up of events which happen, and a violent stream; for as soon as a thing has been seen, it is carried away, and another comes in its place.

  — Meditations, Book IV
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-11-28-tale-of-four-fuzzers</id>
   <title>A Tale Of Four Fuzzers</title>
   <published>2025-11-28T00:00:00Z</published>
   <updated>2025-11-28T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-11-28-tale-of-four-fuzzers" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-11-28-tale-of-four-fuzzers/banner-8c1f4164.webp" />
   <summary>  Charles Darnay observed that the gate was held by a mixed guard of soldiers and patriots, the latter far outnumbering the former; and that while ingress into the city for peasants’ carts bringing in supplies, and for similar traffic and traffickers, was easy enough, egress, even for the homeliest people, was very difficult.
  — Complaining about egress fees goes back to at least the French Revolution.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-11-22-mathematics-of-consensus</id>
   <title>Mathematics of Consensus — Accidental Lecture</title>
   <published>2025-11-22T00:00:00Z</published>
   <updated>2025-11-22T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-11-22-mathematics-of-consensus" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-11-22-mathematics-of-consensus/banner-af31067f.webp" />
   <summary>Somewhat accidentally, we recorded an impromptu ~2 hour lecture explaining the mathematics behind consensus algorithms, using a Go Pro fisheye—the camera on hand 🤣
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-11-06-the-write-last-read-first-rule</id>
   <title>The Write Last, Read First Rule</title>
   <published>2025-11-06T00:00:00Z</published>
   <updated>2025-11-06T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-11-06-the-write-last-read-first-rule" />
   <author><name>Dominik Tornow</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-11-06-the-write-last-read-first-rule/banner-2832e13d.webp" />
   <summary>TigerBeetle is a financial transactions database built for correctness. Yet, building a correct system from correct components remains a challenge:
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-10-25-synadia-and-tigerbeetle-pledge-512k-to-the-zig-software-foundation</id>
   <title>Synadia and TigerBeetle Pledge $512,000 to the Zig Software Foundation</title>
   <published>2025-10-25T00:00:00Z</published>
   <updated>2025-10-25T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-10-25-synadia-and-tigerbeetle-pledge-512k-to-the-zig-software-foundation" />
   <author><name>Joran Dirk Greef</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-10-25-synadia-and-tigerbeetle-pledge-512k-to-the-zig-software-foundation/banner-680a60e1.webp" />
   <summary>Synadia and TigerBeetle have together pledged $512,000 to the Zig Software Foundation over the next two years in support of the language, leadership, and communities building the future of simpler systems software.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-10-21-clockless-time</id>
   <title>Tracking Time Without Clock</title>
   <published>2025-10-21T00:00:00Z</published>
   <updated>2025-10-21T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-10-21-clockless-time" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-10-21-clockless-time/banner-79cd1b65.webp" />
   <summary>A short note on a couple of code patterns for handling time!
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-08-04-code-review-can-be-better</id>
   <title>Code Review Can Be Better</title>
   <published>2025-08-04T00:00:00Z</published>
   <updated>2025-08-04T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-08-04-code-review-can-be-better" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-08-04-code-review-can-be-better/banner-6257f099.webp" />
   <summary>Slightly unusual genre today: a negative result about our git-review tool for a different take on code review process, which we decided to shelve, at least for the time being.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-06-06-fuzzer-blind-spots-meet-jepsen</id>
   <title>Fuzzer Blind Spots (Meet Jepsen!)</title>
   <published>2025-06-06T00:00:00Z</published>
   <updated>2025-06-06T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-06-06-fuzzer-blind-spots-meet-jepsen" />
   <author><name>djg</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-06-06-fuzzer-blind-spots-meet-jepsen/banner-adb8dd25.webp" />
   <summary>Systems inevitably have components which are easier or harder to test.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-05-26-asserting-implications</id>
   <title>Asserting Implications</title>
   <published>2025-05-26T00:00:00Z</published>
   <updated>2025-05-26T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-05-26-asserting-implications" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-05-26-asserting-implications/banner-6a69b893.webp" />
   <summary>A short one today!
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-04-23-swarm-testing-data-structures</id>
   <title>Swarm Testing Data Structures</title>
   <published>2025-04-23T00:00:00Z</published>
   <updated>2025-04-23T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-04-23-swarm-testing-data-structures" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-04-23-swarm-testing-data-structures/banner-3c15fc03.webp" />
   <summary>We discovered a cute little pattern the other day when refactoring TigerBeetle’s intrusive queue — using Zig’s comptime reflection for exhaustively testing data structure’s public API. Isn’t it cool when your property test fails when you add a new API, because “public API is tested” is one of the properties you test?!
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-02-27-why-we-designed-tigerbeetles-docs-from-scratch</id>
   <title>Why We Designed TigerBeetle's Docs from Scratch</title>
   <published>2025-02-27T00:00:00Z</published>
   <updated>2025-02-27T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-02-27-why-we-designed-tigerbeetles-docs-from-scratch" />
   <author><name>Fabian Rühle</name></author><author><name>Fabio Arnold</name></author><author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-02-27-why-we-designed-tigerbeetles-docs-from-scratch/banner-4521ba4c.webp" />
   <summary>We recently rebuilt TigerBeetle’s docs site from scratch. We wanted to apply TigerStyle and first principles thinking, not only to our database but also to our docs. To give users the fastest possible experience, given how much time they spend reading, and to do this without the dependency of Docusaurus. At TigerBeetle, how we build things is as important as what we build, because methodology has a second order effect on motivation.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2025-02-13-a-descent-into-the-vortex</id>
   <title>A Descent Into the Vörtex</title>
   <published>2025-02-13T00:00:00Z</published>
   <updated>2025-02-13T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2025-02-13-a-descent-into-the-vortex" />
   <author><name>Oskar Wickström</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2025-02-13-a-descent-into-the-vortex/banner-0a59fcba.webp" />
   <summary>We’re huge fans of Deterministic Simulation Testing (DST) at TigerBeetle, which enables us to perfectly reproduce complex failures of a distributed system on a single laptop. But that’s not today’s story! We’ve added an intentionally non-deterministic testing harness, the Vörtex!
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2024-12-19-enum-of-arrays</id>
   <title>Enum of Arrays</title>
   <published>2024-12-19T00:00:00Z</published>
   <updated>2024-12-19T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2024-12-19-enum-of-arrays" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2024-12-19-enum-of-arrays/banner-e7600558.webp" />
   <summary>A popular data-oriented design pattern is a Struct of Arrays. Is an Array of Enums also useful? Yes! But let’s do a refresher on struct of arrays (SoA) first:
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2024-07-23-rediscovering-transaction-processing-from-history-and-first-principles</id>
   <title>Rediscovering Transaction Processing From History and First Principles</title>
   <published>2024-07-23T00:00:00Z</published>
   <updated>2024-07-23T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2024-07-23-rediscovering-transaction-processing-from-history-and-first-principles" />
   <author><name>Joran Dirk Greef</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2024-07-23-rediscovering-transaction-processing-from-history-and-first-principles/banner-46ea32ff.webp" />
   <summary>In July 2020, I stumbled into a fundamental limitation in the general-purpose database design for transaction processing.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2024-05-14-snapshot-testing-for-the-masses</id>
   <title>Snapshot Testing For the Masses</title>
   <published>2024-05-14T00:00:00Z</published>
   <updated>2024-05-14T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2024-05-14-snapshot-testing-for-the-masses" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2024-05-14-snapshot-testing-for-the-masses/banner-48632e42.webp" />
   <summary>Snapshot testing is a technique for the “assert” part of an “arrange, act, assert” test, that dispenses with hand-written assertions, and instead uses comparison to a known good value, a snapshot. Crucially, in the case of a mismatch, a snapshot can update itself. A video is worth a thousand words:
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2023-12-27-it-takes-two-to-contract</id>
   <title>It Takes Two to Contract</title>
   <published>2023-12-27T00:00:00Z</published>
   <updated>2023-12-27T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2023-12-27-it-takes-two-to-contract" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2023-12-27-it-takes-two-to-contract/banner-cab7b8a7.webp" />
   <summary>Today’s topic: design by contract. To be honest, I was skeptical of DbC: it feels like it boils down to:
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2023-09-19-64-bit-bank-balances-ought-to-be-enough-for-anybody</id>
   <title>64-Bit Bank Balances ‘Ought to be Enough for Anybody’?</title>
   <published>2023-09-19T00:00:00Z</published>
   <updated>2023-09-19T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2023-09-19-64-bit-bank-balances-ought-to-be-enough-for-anybody" />
   <author><name>Rafael Batiati</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2023-09-19-64-bit-bank-balances-ought-to-be-enough-for-anybody/banner-764f9b78.webp" />
   <summary>  “640K ought to be enough for anybody.” - Supposedly Bill Gates, circa 1981.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2023-07-26-copy-hunting</id>
   <title>Copy Hunting</title>
   <published>2023-07-26T00:00:00Z</published>
   <updated>2023-07-26T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2023-07-26-copy-hunting" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2023-07-26-copy-hunting/banner-f056a3f0.webp" />
   <summary>I have a super power. I want to share it in this blog post so that you, my dear reader, also have it!
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2023-07-11-we-put-a-distributed-database-in-the-browser</id>
   <title>We Put a Distributed Database In the Browser – And Made a Game of It!</title>
   <published>2023-07-11T00:00:00Z</published>
   <updated>2023-07-11T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2023-07-11-we-put-a-distributed-database-in-the-browser" />
   <author><name>Phil Eaton</name></author><author><name>Joran Dirk Greef</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2023-07-11-we-put-a-distributed-database-in-the-browser/banner-9421ba64.webp" />
   <summary>TigerBeetle is a distributed financial transactions database, designed for mission critical safety. How do you test something so critical? Well, we could tell you (and we will), but why not show you?
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2023-07-06-simulation-testing-for-liveness</id>
   <title>Simulation Testing For Liveness</title>
   <published>2023-07-06T00:00:00Z</published>
   <updated>2023-07-06T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2023-07-06-simulation-testing-for-liveness" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2023-07-06-simulation-testing-for-liveness/banner-f07a02ac.webp" />
   <summary>This month we introduced a significant change to TigerBeetle’s simulator, the VOPR. We split the simulator into two modes: “safety” mode and a new “liveness” mode.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2023-03-28-random-fuzzy-thoughts</id>
   <title>Random Fuzzy Thoughts</title>
   <published>2023-03-28T00:00:00Z</published>
   <updated>2023-03-28T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2023-03-28-random-fuzzy-thoughts" />
   <author><name>matklad</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2023-03-28-random-fuzzy-thoughts/banner-bfc3fc1c.webp" />
   <summary>I have been doing a lot of randomized testing and fuzzing lately, and I want to document some lessons learned. This isn’t going to be a grand unified theory of fuzzing, but rather a collection of observations useful for people who already do randomized testing. This post will explore three related questions:
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2023-02-21-writing-high-performance-clients-for-tigerbeetle</id>
   <title>Writing High-Performance Clients for Tigerbeetle</title>
   <published>2023-02-21T00:00:00Z</published>
   <updated>2023-02-21T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2023-02-21-writing-high-performance-clients-for-tigerbeetle" />
   <author><name>Rafael Batiati</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2023-02-21-writing-high-performance-clients-for-tigerbeetle/banner-cb2a41b8.webp" />
   <summary>In this post, I’ll explore TigerBeetle’s strategy for delivering high-performance clients by seamlessly integrating its unique threading and memory model into each target ecosystem, such as Java, Dotnet, Go, and Node.js.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2023-01-30-series-seed-announcement</id>
   <title>Tigerbeetle Raises $6.4M to Power the Future of Financial Accounting Infrastructure</title>
   <published>2023-01-30T00:00:00Z</published>
   <updated>2023-01-30T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2023-01-30-series-seed-announcement" />
   <author><name>Joran Dirk Greef</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2023-01-30-series-seed-announcement/banner-8b18ac14.webp" />
   <summary>A textbook database problem
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2022-11-23-a-friendly-abstraction-over-iouring-and-kqueue</id>
   <title>A Programmer-Friendly I/O Abstraction Over io_uring and kqueue</title>
   <published>2022-11-23T00:00:00Z</published>
   <updated>2022-11-23T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2022-11-23-a-friendly-abstraction-over-iouring-and-kqueue" />
   <author><name>King Butcher</name></author><author><name>Phil Eaton</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2022-11-23-a-friendly-abstraction-over-iouring-and-kqueue/banner-58bff29f.webp" />
   <summary>Consider this tale of I/O and performance. We’ll start with blocking I/O, explore io_uring and kqueue, and take home an event loop very similar to some software you may find familiar.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2022-10-12-a-database-without-dynamic-memory</id>
   <title>A Database Without Dynamic Memory Allocation</title>
   <published>2022-10-12T00:00:00Z</published>
   <updated>2022-10-12T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2022-10-12-a-database-without-dynamic-memory" />
   <author><name>Phil Eaton</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2022-10-12-a-database-without-dynamic-memory/banner-601def78.webp" />
   <summary>Some folks who read TIGER_STYLE.md (the TigerBeetle coding guide) are surprised to learn that TigerBeetle allocates no memory after startup.
   </summary>
  </entry>
  <entry>
   <id>https://tigerbeetle.com/blog/2021-08-30-three-clocks-are-better-than-one</id>
   <title>Three Clocks are Better than One</title>
   <published>2021-08-30T00:00:00Z</published>
   <updated>2021-08-30T00:00:00Z</updated>
   <link rel="alternate" href="https://tigerbeetle.com/blog/2021-08-30-three-clocks-are-better-than-one" />
   <author><name>Joran Dirk Greef</name></author>
      <link rel="enclosure" type="image/webp" href="https://tigerbeetle.com/blog/2021-08-30-three-clocks-are-better-than-one/banner-e3a3939c.webp" />
   <summary>  “Whenever you find yourself on the side of the majority, it is time to pause and reflect.” - Mark Twain
   </summary>
  </entry>
</feed>
