1<!DOCTYPE html><html data-dpl-id="dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" lang="en" class="h-full"><head><meta charSet="utf-8"/><link rel="preconnect" href="/" crossorigin=""/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" imageSrcSet="https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=700&auto=format&q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1000&auto=format&q=75 1000w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1200&auto=format&q=75 1200w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1600&auto=format&q=75 1600w" imageSizes="(max-width: 767px) 100vw, 50vw" fetchPriority="high"/><link rel="stylesheet" href="/_next/static/chunks/1rrgvm9suprth.css?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/039aylglxiei5.css?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2trmj-7psg7wx.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9"/>
1<script src="/_next/static/chunks/3cjax0pm491q4.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/2ejk_26znfoeu.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/2kqd5us5a8yds.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/3nc6x0_y5iwnk.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/turbopack-06jjo0zxdpmq6.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/05l0tj7q-7v8s.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/32e6jm2mqjsm9.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<script src="/_next/static/chunks/0nhp28xh21ejb.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" async=""></script>
1<title>Why TigerBeetle is the most interesting database in the world â Amplify Partners</title><meta name="description" content="This read goes behind the scenes of how TigerBeetle came to be, the incredibly novel software theyâve built, and all of the wacky, wonderful things that make them so special."/><meta property="og:title" content="Why TigerBeetle is the most interesting database in the world â Amplify Partners"/><meta property="og:description" content="This read goes behind the scenes of how TigerBeetle came to be, the incredibly novel software theyâve built, and all of the wacky, wonderful things that make them so special."/><meta property="og:url" content="https://amplifypartners.com/blog-posts/why-tigerbeetle-is-the-most-interesting-database-in-the-world"/><meta property="og:image" content="https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?fm=jpg&w=1200&q=75"/><meta property="og:type" content="article"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Why TigerBeetle is the most interesting database in the world â Amplify Partners"/><meta name="twitter:description" content="This read goes behind the scenes of how TigerBeetle came to be, the incredibly novel software theyâve built, and all of the wacky, wonderful things that make them so special."/><meta name="twitter:image" content="https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?fm=jpg&w=1200&q=75"/><link rel="icon" href="/icon.png?icon.1k4w9i-9r9pb2.png" sizes="400x400" type="image/png"/>
1<script src="/_next/static/chunks/0cz1d0mv5g_q7.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" noModule=""></script>
1</head><body class="min-h-full flex flex-col"><div hidden=""><!--$--><!--/$--></div><div class="nav-wrapper"><nav class="navbar"><div class="navbar-container"><a class="navbar-logo" aria-label="Amplify Partners home" href="/"><svg width="100%" height="100%" viewBox="0 0 113 32" fill="none" xmlns="http://www.w3.org/2000/svg" aria-label="Amplify Partners"><path d="M95.4717 25.5319V23.7617H95.0292C93.7015 23.7617 93.293 23.5915 92.9866 23.2511C92.6802 22.9787 92.476 22.5362 92.476 21.4128V12.3039C92.476 11.2486 92.6462 10.9762 92.8504 10.772C93.0887 10.5337 93.2791 10.3635 94.3345 10.3635C95.5439 10.3635 96.1479 10.894 96.7282 12.1191L102.856 24.8851L101.869 27.5745C101.528 28.4936 101.018 29.2085 100.03 29.2085C99.1793 29.2085 98.7367 28.6979 98.3963 27.983C98.1239 27.4723 97.6814 26.8255 96.7963 26.8255C95.741 26.8255 95.0261 27.6766 95.0261 28.6638C95.0261 30.366 96.5239 32 98.941 32C100.711 32 101.801 31.2851 102.618 30.0936C103.06 29.5149 103.367 28.766 103.673 27.983L109.426 12.3234C109.971 10.8936 110.856 10.2808 112.149 10.2128V8.51064H105.784V10.2128H105.954C106.941 10.2128 107.554 10.8255 107.554 11.6426C107.554 12.017 107.452 12.4596 107.213 13.0723L104.592 19.983L101.222 12.9702C100.915 12.3574 100.813 11.9149 100.813 11.5404C100.813 10.7915 101.29 10.2128 102.243 10.2128H102.447V8.51064L92.476 8.51064C92.3058 7.25107 92.3058 6.29787 92.3058 5.65106C92.3058 4.5617 92.4419 3.71064 92.7143 3.09787C93.0207 2.41702 93.5653 1.87234 94.4164 1.87234C95.4959 1.87234 95.9156 2.70685 96.3203 3.51133C96.4515 3.77233 96.5812 4.03017 96.7313 4.25532C97.0717 4.69787 97.5143 5.17447 98.3994 5.17447C99.2164 5.17447 100.136 4.5617 100.136 3.37021C100.136 2.14468 98.7398 0 95.1994 0C92.51 0 90.5355 1.22553 89.5483 3.06383C88.9355 4.22128 88.7313 5.51489 88.7313 7.55745V8.51064H85.0887V10.5532H86.7909C87.8462 10.5532 88.1185 10.7234 88.3568 10.9617C88.5611 11.166 88.7313 11.4383 88.7313 12.4936V21.4128C88.7313 22.5362 88.527 22.9787 88.2207 23.2511C87.9143 23.5915 87.5058 23.7617 86.3483 23.7617L85.8285 23.7617C84.6711 23.7617 84.2626 23.5915 83.9562 23.251C83.6498 22.9787 83.4456 22.5361 83.4456 21.4127V8.51061H77.0456V10.2808H77.3179C78.4753 10.2808 78.8839 10.451 79.1902 10.7915C79.4966 11.0638 79.7009 11.5064 79.7009 12.6298V21.4127C79.7009 22.5361 79.4966 22.9787 79.1902 23.251C78.8839 23.5915 78.4753 23.7617 77.3179 23.7617L76.8015 23.7617C75.6781 23.7617 75.2696 23.5915 74.9292 23.251C74.6568 22.9787 74.4526 22.5361 74.4526 21.4127V1.7021H68.0185V3.47231H68.3249C69.4824 3.47231 69.8909 3.64253 70.1972 3.98295C70.5036 4.25529 70.7079 4.69784 70.7079 5.82125V21.4127C70.7079 22.5361 70.5036 22.9787 70.1972 23.251C69.8909 23.5915 69.4824 23.7617 68.3249 23.7617H68.0185V25.5319L95.4717 25.5319Z" fill="currentColor"></path><path d="M81.468 0.403121C79.8637 0.403121 78.5803 1.72667 78.5803 3.33098C78.5803 4.93528 79.8637 6.21872 81.468 6.21872C83.1124 6.21872 84.3959 4.93528 84.3959 3.33098C84.3959 1.72667 83.1124 0.403121 81.468 0.403121Z" fill="currentColor"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M50.0079 31.6595V29.8893H50.3143C51.4718 29.8893 51.8803 29.7191 52.1867 29.3786C52.493 29.1063 52.6973 28.6637 52.6973 27.5403V12.6297C52.6973 11.5063 52.493 11.0637 52.1867 10.7914C51.8803 10.451 51.4718 10.2808 50.3143 10.2808H50.0079V8.51056H56.1356V11.6425C57.1228 9.49779 59.2335 8.17013 61.7526 8.17013C66.2122 8.17013 68.9696 11.9489 68.9696 16.7829C68.9696 22.0935 66.076 25.8723 61.0377 25.8723C59.3696 25.8723 57.6675 25.4637 56.442 24.5786V27.5403C56.442 28.6637 56.6462 29.1063 56.9186 29.3786C57.259 29.7191 57.6675 29.8893 58.9611 29.8893H59.4377V31.6595H50.0079ZM57.7016 22.468C58.3824 23.4212 59.3356 24.068 60.7313 24.068C63.7271 24.068 64.7143 21.2425 64.7143 18.0425C64.7143 13.7531 63.1143 10.8935 60.425 10.8935C59.1654 10.8935 58.1101 11.4042 57.3611 12.4595C56.7143 13.4467 56.3399 14.8765 56.3399 16.6808V17.0212C56.3399 18.8935 56.6803 21.0382 57.7016 22.468Z" fill="currentColor"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M0 25.532V23.6937C1.8383 23.6937 2.89362 22.6724 3.74468 20.2213L10.3149 1.53196H11.8468L19.7787 21.2426C20.4733 22.9296 21.2286 23.6919 22.5938 23.6919C23.1051 23.6919 23.5067 23.4656 23.7 23.2509C24.0064 22.9786 24.2106 22.536 24.2106 21.4126V12.6297C24.2106 11.5063 24.0064 11.0637 23.7 10.7914C23.3936 10.4509 22.9851 10.2807 21.8276 10.2807H21.5553V8.51052H27.683V11.6765C28.534 9.73605 30.3042 8.17009 32.9936 8.17009C34.5255 8.17009 35.9213 8.64669 36.9425 9.70201C37.3851 10.2126 37.7596 10.7914 37.9978 11.6765C38.917 9.73605 40.7893 8.17009 43.5808 8.17009C44.9766 8.17009 46.4064 8.61265 47.4276 9.66797C48.3468 10.6552 48.8234 12.0509 48.8234 14.2637V21.4807C48.8234 22.3999 48.9255 22.8765 49.3 23.2509C49.7085 23.6595 50.2532 23.7616 51.0021 23.7616H51.2744V25.5318H43.0021V23.7616C43.9213 23.7616 44.3298 23.5914 44.6702 23.285C44.9425 22.9786 45.1468 22.536 45.1468 21.4126V14.8765C45.1468 13.2084 44.8404 12.4595 44.3638 11.9488C43.8191 11.3701 43.0702 11.0637 42.1851 11.0637C41.0957 11.0637 40.0744 11.6084 39.3936 12.4254C38.7127 13.3105 38.3723 14.468 38.3723 16.7829V21.4126C38.3723 22.536 38.5425 22.9786 38.8489 23.285C39.1553 23.5914 39.5979 23.7616 40.517 23.7616V25.5318H32.517V23.7616C33.4361 23.7616 33.8787 23.5914 34.1851 23.285C34.4915 22.9786 34.6617 22.536 34.6617 21.4126V14.8765C34.6617 13.2084 34.3553 12.4595 33.9127 11.9488C33.3681 11.3701 32.5851 11.0637 31.7 11.0637C30.6106 11.0637 29.5893 11.6084 28.9425 12.4254C28.2617 13.3105 27.9213 14.468 27.9213 16.7829V21.4126C27.9213 22.536 28.0915 22.9786 28.3979 23.285C28.7042 23.5914 29.1468 23.7616 30.0659 23.7616V25.5318L13.2766 25.532V23.6937C14.5702 23.6937 15.5234 23.2171 15.5234 22.0256C15.5234 21.6852 15.4213 21.1745 15.1149 20.3575L14.5362 18.8937H6.26383L6.05958 19.5405C5.82128 20.1873 5.54894 21.1064 5.54894 21.7873C5.54894 23.1149 6.33192 23.6937 7.69362 23.6937V25.532H0ZM6.91064 17.1235H13.8213L10.1447 7.89792L6.91064 17.1235Z" fill="currentColor"></path></svg></a><div class="navbar-links"><a class="nav-link" href="/portfolio/company">Portfolio</a><div class="nav-about-wrap"><div class="nav-about-header"><span class="nav-link">About Us</span></div><svg width="8" height="12" viewBox="0 0 8 14" fill="none" aria-hidden="true" class="nav-about-chevron"><path d="M1.5 1.5L6.5 7L1.5 12.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg><a class="nav-link" href="/about-amplify">About Amplify</a><a class="nav-link" href="/about-amplify?tab=how">Working With Us</a></div><a class="nav-link" href="/team">Team</a><a class="nav-link" href="/writing">Writing</a><a class="nav-link" href="/amplify-bio">Amplify Bio</a></div><button class="navbar-mobile-btn" aria-label="Open menu" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 30 26" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true"><path d="M4.06994 1.78533L8.068 3.64158L9.35309 7.99661M9.35309 7.99661L4.85527 10.6382M9.35309 7.99661L12.3516 7.28267L14.8504 6.8543L17.0055 7.38908M9.35309 7.99661L9.92424 10.7096L12.2088 13.0656M12.2088 13.0656C11.4235 14.66 8.75338 18.5915 6.9257 20.4191C5.83099 19.848 3.59874 18.2202 2.28509 17.9918L1 20.1336M12.2088 13.0656L16.4211 17.7062L13.7081 23.3463L14.9932 24.2744M12.2088 13.0656C13.3412 12.0684 15.4363 9.89493 17.0055 7.38908M17.0055 7.38908L18.1345 5.49782L18.7759 3.42258M17.0055 7.38908L19.1341 8.78194L21.3473 11.2807L24.4172 12.9228M24.4172 12.9228L22.9893 21.0617M24.4172 12.9228L25.7737 6.14036M17.0636 1C16.7067 1.99952 16.4925 2.78485 17.4206 3.21321C17.7844 3.38114 18.2888 3.4302 18.7759 3.42258M20.2764 1.71394L19.8537 3.00974C19.5624 3.07042 19.2828 3.41464 18.7759 3.42258M25.7737 6.14036C24.4172 5.78339 23.8461 4.28412 23.7033 2.28509M25.7737 6.14036C26.5352 6.25935 28.2011 5.85479 28.7722 3.28461M25.7737 6.14036L26.3448 4.21273L26.2735 1.57115" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div></nav></div><main class="post-page"><div class="post-hero-wrap"><div class="post-hero-inner"><div class="post-hero-grid"><div class="post-hero-img-wrap"><img src="https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1200&auto=format&q=75" srcSet="https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=700&auto=format&q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1000&auto=format&q=75 1000w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1200&auto=format&q=75 1200w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1600&auto=format&
1q=75 1600w" sizes="(max-width: 767px) 100vw, 50vw" alt="Why TigerBeetle is the most interesting database in the world" fetchPriority="high"/></div><div class="post-hero-text"><div class="post-hero-top"><div class="post-categories"><span class="post-category-tag">Portfolio Spotlight</span></div><h1 class="post-title">Why TigerBeetle is the most interesting database in the world</h1></div><div class="post-byline-wrap"><div class="post-byline"><span class="post-authors"><span><a class="post-authors-link" href="/authors/justin-gage">Justin Gage</a></span></span><button class="post-share-btn" aria-label="Copy link"><span>Share</span><svg width="20" height="20" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M8.83981 14.1154H6.0321C5.03183 14.1154 4.17919 13.7625 3.47419 13.0567C2.76919 12.3508 2.41669 11.4972 2.41669 10.4958C2.41669 9.4943 2.76919 8.64208 3.47419 7.93917C4.17919 7.23611 5.03183 6.88458 6.0321 6.88458H8.83981V7.96792H6.0321C5.33224 7.96792 4.7353 8.215 4.24127 8.70916C3.7471 9.20333 3.50002 9.80028 3.50002 10.5C3.50002 11.1997 3.7471 11.7967 4.24127 12.2908C4.7353 12.785 5.33224 13.0321 6.0321 13.0321H8.83981V14.1154ZM7.20835 11.0417V9.95833H12.7917V11.0417H7.20835ZM11.1602 14.1154V13.0321H13.9679C14.6678 13.0321 15.2647 12.785 15.7588 12.2908C16.2529 11.7967 16.5 11.1997 16.5 10.5C16.5 9.80028 16.2529 9.20333 15.7588 8.70916C15.2647 8.215 14.6678 7.96792 13.9679 7.96792H11.1602V6.88458H13.9679C14.9682 6.88458 15.8209 7.2375 16.5259 7.94333C17.2309 8.64917 17.5834 9.50278 17.5834 10.5042C17.5834 11.5057 17.2309 12.3579 16.5259 13.0608C15.8209 13.7639 14.9682 14.1154 13.9679 14.1154H11.1602Z" fill="currentColor"></path></svg></button></div><span class="post-date">09-30-2025</span></div></div></div></div></div><div class="post-body-wrap"><div class="post-body-inner"><div class="post-content"><div class="post-body"><blockquote> 2<p><em>Disclosure: TigerBeetle is an Amplify portfolio company.</em></p> 3</blockquote> 4<p>By many measures itâs safe to say that TigerBeetle is the most interesting database in the world. Like Costanza in Seinfeld, they seem to do the <em>opposite</em> of everyone else:</p> 5<ul> 6<li>Most teams write code fast. TigerBeetle tries to <strong>write code slow</strong>.</li> 7<li>Most teams treat testing as a necessary evil. TigerBeetle is <strong>built entirely on Deterministic Simulation Testing (DST)</strong>.</li> 8<li>Most teams build their software on top of loads of other software. TigerBeetle <strong>has zero dependencies</strong>.</li> 9</ul> 10<p>Thereâs even more. TigerBeetle enforces static memory allocation. They keep assertions enabled in production. They chose Viewstamped Replication over Raft, and even Zig instead of Rust!</p> 11<p>This read is going to go behind the scenes of how TigerBeetle came to be, the incredibly novel software theyâve built, and all of the wacky, wonderful things that make them so special. Based on extensive interviews with the TigerBeetle team, weâre going to cover a few topics in technical detail:</p> 12<ul> 13<li>Why transactional databases should think in debits and credits, not SQL</li> 14<li>An (actually) modern database: distributed by default, handling storage faults, and why TigerBeetle uses Zig</li> 15<li>VOPR, TigerBeetleâs Deterministic Simulation Testing cluster</li> 16<li>TigerStyle, and why you should use assertions</li> 17</ul> 18<p>Let's get to it.</p> 19<h2 id="why-we-need-a-database-that-thinks-in-debits-and-credits"><strong>Why we need a database that thinks in debits and credits</strong></h2> 20<p>TigerBeetleâs website calls it âThe Financial Transactions Database.â Its primitives are <strong>debits and credits</strong>, which are things you may be familiar with from your accounting requirement in college. And if youâre not a bank, youâre probably thinking this whole thing isnât really for you. But Joran (TigerBeetleâs creator) would tell you otherwise: financial transactions, i.e. debits and credits, are actually <em>exactly</em> what transactional SQL was originally designed for.</p> 21<p>Way back in 1985, Jim Gray (who would later win a Turing Award) wrote a seminal paper on transactions, titled <span class="paper-link"><a href="https://jimgray.azurewebsites.net/papers/AMeasureOfTransactionProcessingPower.pdf">A Measure of Transaction Processing Power</a><a href="https://jimgray.azurewebsites.net/papers/AMeasureOfTransactionProcessingPower.pdf" class="paper-badge paper-badge-paper" tabindex="-1" aria-hidden="true"><svg class="paper-badge-glyph" viewBox="0 0 12 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
21<path d="M1 1h6.4L11 4.6V13H1z"></path><path d="M7.4 1v3.6H11"></path><path d="M3.4 7.6h4.2M3.4 10.2h3"></path></svg><span class="paper-badge-label">PDF</span><svg class="paper-badge-arrow" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M2.2 7.8 7.8 2.2"></path><path d="M3.3 2.2h4.5v4.5"></path></svg><span class="paper-badge-tip">Paper · jimgray.azurewebsites.net</span></a></span>. If youâve heard of it before, itâs because in it, Gray defined a metric that 40 years later is <em>still</em> the most important measure for a database: <strong>TPS</strong>, or transactions per second. This would end up leading to such a fervent benchmark war among databases that an objective <em>council</em> â <a href="https://www.tpc.org/information/about/history5.asp">the TPC</a> â needed to be formed to moderate.</p> 22<figure class="post-figure"><img src="https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=1400&auto=format&q=75" srcSet="https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=700&auto=format&q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=1100&auto=format&q=75 1100w, https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=1400&auto=format&q=75 1400w, https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=2000&auto=format&q=75 2000w" sizes="(max-width: 768px) 100vw, 760px" alt="" loading="lazy"/></figure> 23<p><em>The TPC in action, deciding on whether a young database had gone to the Dark Side (Oracle).</em></p> 24<p>But what does the âTâ in TPS actually mean? What is a transaction?</p> 25<p>Your first guess might be a SQL transaction, but thatâs not it. Gray actually defined it as a <strong>business transaction</strong> derived from the real world. Which is the reason databases were invented in the first place: to power businesses. And indeed, <a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2005/04/tr-2005-39.doc">20 years later</a>, Gray continued to see the standard measure of transaction processing as a âDebitCredit:â</p> 26<blockquote> 27<p><em>âA database system to debit a bank account, do the standard double-entry bookkeeping and then reply to the terminal.â</em></p> 28</blockquote> 29<p>Mind you, SQL had already been around since the 70s at this point. And yet the luminary Gray still chose the debit/credit model â because it was the <em>canonical example</em> of an everyday transaction. Debit/credit is the lingua franca of <a href="https://www.youtube.com/watch?v=lGyMiW6PnKI&ab_channel=TuringAwardeeClips"><strong>what it means to transact</strong></a>. It is <em>not</em> just for accounting and banks. Itâs the reason for a database to provide guarantees like ACID in the first place.</p> 30<p>And yet, if you want to use a SQL database to implement debits and credits today, you are probably going to have a bad time. To handle one debit/credit, a typical system â like the <a href="https://mojaloop.io/">central bank switch</a> that Joran consulted on in 2020 â needs to query account balances, lock those rows, wait for decisions in code, then write back and record the debit/credit. All in all, youâre looking at <strong>10-20 SQL queries</strong> back and forth, while holding row locks across the network roundtrip time, <em>for each transaction</em>. This gets even worse when you consider the problem of hot rows, where many transactions often need to touch the same set of âhouse accountsâ.</p> 31<p>All the while (for better or worse), the world is moving faster and faster towards an âeverything is a transactionâ model. Countries like India and Brazil are doing billions of transactions per month in instant payments. With <a href="https://www.frbservices.org/financial-services/fednow">FedNow</a> in the U.S., weâre not far away from that reality either. Meanwhile, other sectors like energy, gaming, and cloud are all moving towards real-time billing. In less than a decade, the world has become at least three orders of magnitude more transactional. And yet the SQL databases we still use to power this are 20-30 years old. Can they hold up?</p> 32<p><strong>This is where TigerBeetle comes in</strong>. They designed a state-of-the-art database, from the ground up, to power the next era of transactions. In TigerBeetle, a debit/credit is a first class primitive and 8,190 of them can pack into a single 1MiB query via a one solitary roundtrip to the database. They call it <a href="https://www.youtube.com/watch?v=yKgfk8lTQuE">âThe 1000x Performance Idea,â</a> but in Joranâs words itâs ânothing specialâ.</p> 33<p>
33They say databases take a decade to build. But TigerBeetle is complete and pretty much <a href="https://jepsen.io/analyses/tigerbeetle-0.16.11">Jepsen-proof</a> after just 3 and a half years. In June 2025, Kyle Kingsbury showed he was unable to break TigerBeetleâs foundations (he found 1 correctness bug in the read query engine, not affecting durability), even while corrupting the whole thing on every machine in various places.</p> 34<p>The obvious question here â <strong>how</strong>? How did TigerBeetle ship a production-ready, Jepsen-passing consensus and storage engine in 3.5 years when it typically takes a decade or more?</p> 35<h2 id="an-actually-modern-database-distributed-by-default-why-tigerbeetle-uses-zig-and-handling-storage-faults"><strong>An (actually) modern database: distributed by default, why TigerBeetle uses Zig, and handling storage faults</strong></h2> 36<p>Imagine you wake up today and wisely decide to build a database from scratch. Instead of investing in the technology of 30 years ago â when the most popular relational databases today were built â you can pick <em>any</em> advancements in architecture, hardware, language, or research since then to implement. How would you build it? What would you utilize?</p> 37<h3 id="distributed-by-default"><strong>Distributed by default</strong></h3> 38<p>One thing youâd probably start with is the deployment model.</p> 39<p>When Postgres and MySQL were built, in a world of big iron (on-prem hardware), the dominant paradigm was <strong>single node</strong>. Now, in a world of shared cloud hardware, itâs <strong>distributed</strong>. Itâs not safe enough to store your transactions only on a single disk or server. A modern database needs to replicate your transactions, with strict serializability, across machines, for redundancy, fault tolerance and high availability. And yet some of the most popular OLTP databases in the world today are still highly dependent on a single node architecture. Automated failover, at least with zero data loss in the cut over, is not always baked in by default.</p> 40<p>So TigerBeetle built their database to be distributed by default. Doing that comes with some of the obvious things you need to do, like consensus. But the developer experience for running TigerBeetle distributed is very simple: you just install the binary on however many machines you want in the cluster. No async replication, no Zookeeper, etc. To make this possible, TigerBeetle invested heavily in their consensus protocol implementation, adopting the pioneering <span class="paper-link"><a href="https://pmg.csail.mit.edu/papers/vr.pdf">Viewstamped Replication</a><a href="https://pmg.csail.mit.edu/papers/vr.pdf" class="paper-badge paper-badge-paper" tabindex="-1" aria-hidden="true"><svg class="paper-badge-glyph" viewBox="0 0 12 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M1 1h6.4L11 4.6V13H1z"></path><path d="M7.4 1v3.6H11"></path><path d="M3.4 7.6h4.2M3.4 10.2h3"></path></svg><span class="paper-badge-label">PDF</span>
40<svg class="paper-badge-arrow" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M2.2 7.8 7.8 2.2"></path><path d="M3.3 2.2h4.5v4.5"></path></svg><span class="paper-badge-tip">Paper · pmg.csail.mit.edu</span></a></span> from MIT. This is part of why TigerBeetle has zero dependencies, apart from the Zig toolchain â they literally invested in all their core dependencies.</p> 41<h3 id="clock-fault-tolerance"><strong>Clock fault tolerance</strong></h3> 42<p>Distributed by default also shows up in some unlikely places. For example: have you ever thought of a clock fault model?</p> 43<p>Though itâs not technically required or advised for consensus â which uses logical clocks and not physical clocks â remember that TigerBeetle is a <em>transactions</em> database. The physical timestamps of transactions need to be accurate and comparable across different financial systems for auditing and compliance.</p> 44<p>And here, readers will note that Linux has several clocks: <code>CLOCK_MONOTONIC_RAW</code>, <code>CLOCK_MONOTONIC</code> and <code>CLOCK_BOOTTIME</code>. All have slight but important differences. Which is the best monotonic clock to use? (clue: It doesnât say <code>MONOTONIC</code> on the tin)</p> 45<p>The challenge is that physical imperfections in hardware clocks cause clocks to tick at different speeds, so that time passes faster or slower than it should. These kinds of âdriftâ errors eventually add up to significant âskewâ errors within a short space of time. Most of the time, Network Time Protocol (NTP) would correct for these errors. But if NTP silently stops working because of a partial network outage, then a highly available consensus cluster might otherwise be running blind, in the dark.</p> 46<p>But even this is something TigerBeetle thought about. They combine <em>the majority of clocks</em> in the cluster to construct a fault-tolerant clock called âcluster timeâ. This cluster time then gets used to bring a serverâs system time back into line if necessary, or shut down safely if TigerBeetle detects that there are too many faulty clocks (e.g. TigerBeetle can actually detect when something like Chrony, PTP, or NTP have stopped working and alert the operator).</p> 47<p>They do this by tracking offset clock times between different TigerBeetle servers, sampling them, and passing them through <a href="https://en.wikipedia.org/wiki/Marzullo%27s_algorithm">Marzulloâs algorithm</a> to estimate the most accurate possible interval (again, just to get a sense of whether clocks are being synced by the underlying clock sync protocol correctly).</p> 48<p>Small things like this are exactly why distributed by default is hard, and doesnât work as an add-on for older database models. You can read more about this in TigerBeetle's <a href="https://tigerbeetle.com/blog/2021-08-30-three-clocks-are-better-than-one/">3 clocks are better than one</a> blog post.</p> 49<p>â</p> 50<h3 id="handling-storage-faults"><strong>Handling storage faults</strong></h3> 51<p>Another piece of âdistributed by defaultâ that deserves its own header is how TigerBeetle handles <strong>storage faults</strong> (or even the fact it handles them at all). Traditional databases assume that if disks fail, they do so predictably with a nice error message. For example, even <a href="https://www.sqlite.org/atomiccommit.html">SQLiteâs docs</a> are clear that:</p> 52<blockquote> 53<p><em>SQLite does not add any redundancy to the database file for the purpose of detecting corruption or I/O errors. SQLite assumes that the data it reads is exactly the same data that it previously wrote.</em></p> 54</blockquote> 55<p>In reality, there are many more sinister possibilities: disks can silently return corrupt data, misdirect I/O (on the read or write path), or just suddenly get really slow (called <span class="paper-link"><a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2017/06/paper-1.pdf">gray failure</a>
55<a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2017/06/paper-1.pdf" class="paper-badge paper-badge-paper" tabindex="-1" aria-hidden="true"><svg class="paper-badge-glyph" viewBox="0 0 12 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M1 1h6.4L11 4.6V13H1z"></path><path d="M7.4 1v3.6H11"></path><path d="M3.4 7.6h4.2M3.4 10.2h3"></path></svg><span class="paper-badge-label">PDF</span><svg class="paper-badge-arrow" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M2.2 7.8 7.8 2.2"></path><path d="M3.3 2.2h4.5v4.5"></path></svg><span class="paper-badge-tip">Paper · microsoft.com</span></a></span> in the research), all without returning error codes.</p> 56<p>TigerBeetle is built to be storage fault tolerant:</p> 57<ul> 58<li>TigerBeetle uses <span class="paper-link"><a href="https://www.usenix.org/conference/fast18/presentation/alagappan">Protocol Aware Recovery</a><a href="https://www.usenix.org/conference/fast18/presentation/alagappan" class="paper-badge paper-badge-paper" tabindex="-1" aria-hidden="true"><svg class="paper-badge-glyph" viewBox="0 0 12 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M1 1h6.4L11 4.6V13H1z"></path><path d="M7.4 1v3.6H11"></path><path d="M3.4 7.6h4.2M3.4 10.2h3"></path></svg><span class="paper-badge-label">USENIX</span>
58<svg class="paper-badge-arrow" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M2.2 7.8 7.8 2.2"></path><path d="M3.3 2.2h4.5v4.5"></path></svg><span class="paper-badge-tip">USENIX proceedings</span></a></span> to remain available unless all copies of a piece of data get corrupted on every single replica.</li> 59<li>All data in TigerBeetle is immutable, checksummed, and hash-chained, providing a strong guarantee that no corruption or tampering happened.</li> 60<li>TigerBeetle puts as little software as possible between itself and the disk, including a custom page cache, writing data to disk with O_DIRECT, and even running on a raw block device directly (no filesystem necessary â to sidestep filesystem bugs <a href="https://news.ycombinator.com/item?id=36113828">which do tend to happen</a> from time to time).</li> 61<li>They built their own implementation of LSM instead of using an off-the-shelf one â they call it an <a href="https://www.youtube.com/watch?v=yBBpUMR8dHw">LSM Forest</a>, which is something like 20 different LSM trees.</li> 62</ul> 63<p>As far as Iâm aware TigerBeetle is the only distributed database that not only claims to be storage fault tolerant, but was also tested pretty hard and validated by Jepsen to be. If you have a local machine failure where even just a disk sector fails, then that storage engine is connected to the global consensus, and it can use the cluster to self heal. This is also a great example of why the modern database having access to modern research matters: <span class="paper-link"><a href="https://www.usenix.org/conference/fast18/presentation/alagappan">Protocol-Aware Recovery</a><a href="https://www.usenix.org/conference/fast18/presentation/alagappan" class="paper-badge paper-badge-paper" tabindex="-1" aria-hidden="true"><svg class="paper-badge-glyph" viewBox="0 0 12 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M1 1h6.4L11 4.6V13H1z"></path><path d="M7.4 1v3.6H11"></path><path d="M3.4 7.6h4.2M3.4 10.2h3"></path></svg><span class="paper-badge-label">USENIX</span>
63<svg class="paper-badge-arrow" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M2.2 7.8 7.8 2.2"></path><path d="M3.3 2.2h4.5v4.5"></path></svg><span class="paper-badge-tip">USENIX proceedings</span></a></span>, which enables TigerBeetle to survive disk failures like this, is fairly recent (2018) research.</p> 64<figure class="post-figure"><img src="https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=1400&auto=format&q=75" srcSet="https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=700&auto=format&q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=1100&auto=format&q=75 1100w, https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=1400&auto=format&q=75 1400w, https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=2000&auto=format&q=75 2000w" sizes="(max-width: 768px) 100vw, 760px" alt="" loading="lazy"/></figure> 65<h3 id="tigerbeetle-in-zig"><strong>TigerBeetle in Zig</strong></h3> 66<p>Another thing youâd think about when building a modern database from scratch is your choice of <strong>programming language</strong>. Postgres is written in C (c. 1970s), MySQL in C and C++ (1979), and MSSQL as well in C and C++. But programming languages have come a long way in the past 40 years. If you had your choice, what would you build a database in today?</p> 67<p>The answer would probably be Rust or Zig. And indeed, TigerBeetle is built 100% in Zig:</p> 68<ul> 69<li>You get the whole C ecosystem available to you, extended with a phenomenal toolchain and compiler.</li> 70<li>Itâs easy to write, and especially easy to read, in some cases as easy as TypeScript (just a lot faster).</li> 71<li>Zig lets you statically allocate memory, which is a core principle of TigerBeetle.</li> 72<li>Zig has a great developer experience and you can learn it quickly (which ergo means you can get into the TigerBeetle src quickly).</li> 73</ul> 74<p>Of course, as new systems languages, Zig and Rust are related, and some of the early Rust team now work at TigerBeetle, including <a href="https://matklad.github.io/">Matklad</a> (creator of <a href="https://rust-analyzer.github.io/">Rust Analyzer</a>) and <a href="https://brson.github.io/">Brian Anderson</a> (co-creator of Rust with Graydon). Theyâve <a href="https://matklad.github.io/2023/03/26/zig-and-rust.html">written extensively</a> about these languages and why Joran chose Zig in particular for TigerBeetle, given their design goals.</p> 75<p>And here, of course, TigerBeetle is fanatical about static memory allocation, which Iâll talk more about in the next section. Not using dynamic memory allocation is âhard modeâ in Rust (as matklad wrote about <a href="https://matklad.github.io/2022/10/06/hard-mode-rust.html">here</a>), but a breeze in Zig.</p> 76<p>â</p> 77<h2 id="deterministic-simulation-testing-and-the-vopr"><strong>Deterministic Simulation Testing and the VOPR</strong></h2> 78<p>Sometimes, Deterministic Simulation Testing (DST) feels like the most transformational technology that the fewest developers know about. Itâs a <a href="https://notes.eatonphil.com/2024-08-20-deterministic-simulation-testing.html">novel testing technique</a> made popular by the <a href="https://www.foundationdb.org/">FoundationDB</a> team (which now belongs to Apple); they used it to develop a more secure, bug-free distributed database in a shorter time span than arguably anyone had done before.</p> 79<p>The <a href="https://www.youtube.com/watch?v=cHA8vyZvkCs">fundamentals of DST</a> go something like this. In distributed systems, there are essentially infinite combinations of concurrency issues: anything from lost messages to unpredictable thread execution order. You simply cannot use old-school unit and integration tests, or your system will suck. Formal verification, a more academic discipline that works on formulaic proofs that a program runs as intended, is too expensive and slow. So what are you to do?</p> 80<p>The answer is a simulator that deterministically runs almost every possible scenario your system will face on a specific chronological timeline. The simulator accounts for external factors too, like issues with the OS, network, or disk, or simply different latencies. All in all, DST can give you the equivalent of yearsâ worth of testing in a very short time period (because time itself becomes deterministicâa while true loop); and DST is particularly well suited towards databases (I/O intensive, not compute intensive). If youâre familiar with Jepsen testing, think of it as <a href="https://antithesis.com/blog/is_something_bugging_you/">a subset of what DST can do</a>.</p> 81<p>TigerBeetle is one of the most pioneering startups on the planet when it comes to DST. Theyâve developed their own testing cluster â itâs nicknamed VOPR, short for Viewstamped Operation Replicator (<a href="https://www.youtube.com/watch?v=iRsycWRQrc8">
81after the WOPR simulator in the movie WarGames</a>). The VOPR constantly (and tirelessly) tests TigerBeetle under countless different conditions, covering everything from how nodes elect a leader to individual states and network faults. But it can simulate a whole distributed cluster virtually, all on a single thread.</p> 82<p>As far as your author is aware, TigerBeetleâs VOPR is the single largest DST cluster on the planet. <a href="https://us13.campaign-archive.com/?u=32cd932058e988b44c838f7bc&id=0c749f7b07">It runs on</a> 1,000 CPU cores, a number so unusually large that Hetzner sent them a special email asking if they were sure they wanted that many cores. The so-called VOPR-1000 is running 24x7x365, to catch rare conditions as far as possible before production. With time abstracted deterministically, and accelerated in the simulator by a factor of (roughly) 700x, this adds up to nearly 2 millennia of simulated runtime per day.</p> 83<p>â</p> 84<h3 id="but-what-if-dst-was-fun"><strong>But what if DST was fun?</strong></h3> 85<p>Yea, distributed systems are cool. But you know whatâs even cooler? Video games.</p> 86<p>TigerBeetle turned DST into a game that lets you play through different failure scenarios in how the system reacts. You can play it <a href="https://sim.tigerbeetle.com/">here</a>.</p> 87<figure class="post-figure"><img src="https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=1400&auto=format&q=75" srcSet="https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=700&auto=format&q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=1100&auto=format&q=75 1100w, https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=1400&auto=format&q=75 1400w, https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=2000&auto=format&q=75 2000w" sizes="(max-width: 768px) 100vw, 760px" alt="" loading="lazy"/></figure> 88<p>Whatâs perhaps even cooler is that this game is running an actual instance of the VOPR, simulating TigerBeetleâ¦in your browser. Itâs compiled to WebAssembly, and then TigerBeetleâs own engineers built a gaming frontend on top to visualize the real system</p> 89<p>You can read more about how and why TigerBeetle built the simulator in <a href="https://tigerbeetle.com/blog/2023-07-11-we-put-a-distributed-database-in-the-browser/">this blog post</a>.</p> 90<p>â</p> 91<h2 id="tigerstyle-and-the-power-of-ten"><strong>TigerStyle and The Power of Ten</strong></h2> 92<p>As you will continue to see with TigerBeetle, it is often not just the <em>what</em> theyâve built that catches the eye but also the <em>how</em>. Thereâs no better example than <strong>TigerStyle</strong>.</p> 93<p><a href="https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/TIGER_STYLE.md">TigerStyle</a> is TigerBeetleâs engineering methodology, public on GitHub for all to see. Hereâs how they describe it:</p> 94<blockquote> 95<p><em>âTigerBeetle's coding style is evolving. A collective give-and-take at the intersection of engineering and art. Numbers and human intuition. Reason and experience. First principles and knowledge. Precision and poetry. Just like music. A tight beat. A rare groove. Words that rhyme and rhymes that break. Biodigital jazz. This is what we've learned along the way. The best is yet to come.â</em></p> 96</blockquote> 97<p>Biodigital jazz is a term from <a href="https://en.wikipedia.org/wiki/Tron:_Legacy">Tron: Legacy</a>. In the context of the film, it represents the intertwining of human and digital elements, the chaotic yet structured nature of the âGridâ (the digital world), and the improvisational spirit of human potential within the confines of technology (I copied this from AI). For TigerBeetle, itâs an ethos of code; remembering to infuse everything they do with not just science, but art too.</p> 98<p>More practically, TigerStyle lays out engineering and code principles for TigerBeetle, many derived from the original <a href="https://spinroot.com/gerard/pdf/P10.pdf">Power of Ten</a>, NASAâs tenets for writing foolproof code. TigerStyle spans from the thematic, like simplicity and elegance, to the applied, like how to name things. Itâs even starting to impact other companies like Resonate and Turso; and <a href="https://youtu.be/tNZnLkRBYA8?t=11167">TigerStyle has even been discussed on Lex Fridman</a>. Here are a few highlights.</p> 99<h3 id="using-assertions-and-the-power-of-ten"><strong>Using assertions, and the Power of Ten</strong></h3> 100<p>Speaking of the Power of Tenâ¦one of them (Rule 5) is about <strong>assertions</strong>. The idea is simple: explicitly encode your expectations of code behavior <em>while</em> you are writing it, not after the fact. You write them simply in a single line as booleans: assert(a > b). TigerStyle calls for:</p> 101<ul> 102<li>Asserting all function arguments, return values, preconditions, and invariants. On average there should be at least 2 assertions per function.</li> 103<li>Using assertions <em>instead</em> of comments when the assertion is both important and surprising.</li> 104<li>Asserting the relationships between compile-time constants, so you can check a programâs design integrity before it even runs.</li> 105<li>Not just assert what <em>should</em> happen, but also the negative space that you donât expect â where interesting bugs can show up.</li> 106</ul> 107<p><a href="https://spinroot.com/gerard/pdf/P10.pdf">The Power of Ten</a> is an amazing artifact that covers so much more than just assertionsâ¦itâs a great resource for any modern programmer (and maybe we should train some LLMs on it too).</p> 108<h3 id="thinking-about-performance"><strong>Thinking about performance</strong></h3> 109<p>Much of TigerStyle centers around the idea that <em>writing</em> code is not the most important part of the cycle; instead, itâs <strong>reasoning about</strong> and <strong>designing</strong> the code. When it comes to performance, TigerStyle implores you to think about it from the start:</p> 110<blockquote> 111<p><em>âThe best time to solve performance, to get the huge 1000x wins, is in the design phase, which is precisely when we can't measure or profile.â</em></p> 112</blockquote> 113<p>You should be doing basic napkin math on what TigerStyle calls âthe four primary colorsâ â network, storage, memory, CPU â and how theyâll perform with respect to (âthe two texturesâ â art!) bandwidth and latency. The
113n, there are a few more tactical tips, like distinguishing between the control plane and data plane, batching accesses, and extracting hot loops into stand-alone functions to reduce dependence on the compiler.</p> 114<p>For more about TigerStyle, watch <a href="https://www.youtube.com/watch?v=w3WYdYyjek4&t=5s&ab_channel=TigerBeetle">Joranâs talk at Systems Distributed</a>.</p> 115<h2 id="try-it-out-for-yourself">Try it out for yourself</h2> 116<p>So is TigerBeetle a database? Yes. But itâs not much like any other database Iâve seen. Theyâve taken modern research and applied it to an age-old form, giving their database unprecedented performance and stability guarantees. Theyâve developed an art form around systems and storage engineering, and they havenât forgotten to have fun along the way. And thanks to their clever use of DST, they were able to build this thing to Jepsen standards in only a few years.</p> 117<p>You can get started with TigerBeetle <a href="https://tigerbeetle.com/#install">here</a> using a simple curl command.</p></div></div><div class="post-bottom-inner"><div class="post-bottom-icon"><svg xmlns="http://www.w3.org/2000/svg" width="30" height="26" viewBox="0 0 30 26" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true"><path d="M4.06994 1.78533L8.068 3.64158L9.35309 7.99661M9.35309 7.99661L4.85527 10.6382M9.35309 7.99661L12.3516 7.28267L14.8504 6.8543L17.0055 7.38908M9.35309 7.99661L9.92424 10.7096L12.2088 13.0656M12.2088 13.0656C11.4235 14.66 8.75338 18.5915 6.9257 20.4191C5.83099 19.848 3.59874 18.2202 2.28509 17.9918L1 20.1336M12.2088 13.0656L16.4211 17.7062L13.7081 23.3463L14.9932 24.2744M12.2088 13.0656C13.3412 12.0684 15.4363 9.89493 17.0055 7.38908M17.0055 7.38908L18.1345 5.49782L18.7759 3.42258M17.0055 7.38908L19.1341 8.78194L21.3473 11.2807L24.4172 12.9228M24.4172 12.9228L22.9893 21.0617M24.4172 12.9228L25.7737 6.14036M17.0636 1C16.7067 1.99952 16.4925 2.78485 17.4206 3.21321C17.7844 3.38114 18.2888 3.4302 18.7759 3.42258M20.2764 1.71394L19.8537 3.00974C19.5624 3.07042 19.2828 3.41464 18.7759 3.42258M25.7737 6.14036C24.4172 5.78339 23.8461 4.28412 23.7033 2.28509M25.7737 6.14036C26.5352 6.25935 28.2011 5.85479 28.7722 3.28461M25.7737 6.14036L26.3448 4.21273L26.2735 1.57115" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></div><div class="post-bottom-meta"><div class="post-bottom-section"><p class="post-bottom-label">Authors</p><p class="post-bottom-value"><span><a class="post-authors-link" href="/authors/justin-gage">Justin Gage</a></span></p></div></div><section class="cta-section" id="subscribe"><div class="container-lg"><div class="cta-inner"><button class="cta-mobile-trigger" aria-label="Join the newsletter"><span>Stay in touch</span><svg xmlns="http://www.w3.org/2000/svg" width="9" height="10" viewBox="0 0 9 10" fill="none" aria-hidden="true"><path d="M3.99986 1L7.99978 5.00007M7.99978 5.00007L3.99986 9M7.99978 5.00007H0" stroke="currentColor"></path></svg></button><form class="cta-form" action="https://amplifypartners.us20.list-manage.com/subscribe/post?u=8974b971ec317d8a98dbbf292&id=d830f06cdb&f_id=00e0a6eef0" method="post"><input type="email" id="email" required="" placeholder="Want more writing like this?" class="cta-input" name="Email"/><button type="submit" class="cta-btn"><span>Subscribe</span><svg xmlns="http://www.w3.org/2000/svg" width="9" height="10" viewBox="0 0 9 10" fill="none" aria-hidden="true"><path d="M3.99986 1L7.99978 5.00007M7.99978 5.00007L3.99986 9M7.99978 5.00007H0" stroke="currentColor"></path></svg></button></form></div></div></section></div></div></div><section class="post-more-writing"><div class="post-more-inner"><p class="writing-more-label">More writing from Justin</p><div class="writing-grid"><a class="writing-grid-card" href="/blog-posts/the-infrastructure-behind-runway-characters"><div class="writing-grid-image"><img src="https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=600&auto=format&q=75" srcSet="https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=300&auto=format&
117q=75 300w, https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=450&auto=format&q=75 450w, https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=600&auto=format&q=75 600w, https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=900&auto=format&q=75 900w, https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=1400&auto=format&q=75 1400w" sizes="(max-width: 767px) 100vw, 25vw" alt="The infrastructure behind Runway Characters" loading="lazy"/></div><div class="writing-grid-body"><h3 class="writing-grid-title">The infrastructure behind Runway Characters</h3><p class="writing-grid-desc">The story of how Runwayâs research and engineering teams built the worldâs first autoregressive video model for their Characters product.</p></div></a><a class="writing-grid-card" href="/blog-posts/announcing-the-amplify-writing-fellowship"><div class="writing-grid-image"><img src="https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=600&auto=format&q=75" srcSet="https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=300&auto=format&
117q=75 300w, https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=450&auto=format&q=75 450w, https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=600&auto=format&q=75 600w, https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=900&auto=format&q=75 900w, https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=1400&auto=format&q=75 1400w" sizes="(max-width: 767px) 100vw, 25vw" alt="Announcing the Amplify writing fellowship" loading="lazy"/></div><div class="writing-grid-body"><h3 class="writing-grid-title">Announcing the Amplify writing fellowship</h3><p class="writing-grid-desc">We're bringing together a small group of writers with technical backgrounds to explore specific thematic areas and publish their research.</p></div></a><a class="writing-grid-card" href="/blog-posts/exe-dev-and-the-perfect-little-computer"><div class="writing-grid-image"><img src="https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=600&auto=format&q=75" srcSet="https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=300&auto=format&
117q=75 300w, https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=450&auto=format&q=75 450w, https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=600&auto=format&q=75 600w, https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=900&auto=format&q=75 900w, https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=1400&auto=format&q=75 1400w" sizes="(max-width: 767px) 100vw, 25vw" alt="exe.dev and the perfect little computer" loading="lazy"/></div><div class="writing-grid-body"><h3 class="writing-grid-title">exe.dev and the perfect little computer</h3><p class="writing-grid-desc">Infrastructure for the new agent age, and announcing our investment in exe.dev.</p></div></a><a class="writing-grid-card" href="/blog-posts/every-token-everywhere-all-at-once"><div class="writing-grid-image"><img src="https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=600&auto=format&q=75" srcSet="https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=300&auto=format&
117q=75 300w, https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=450&auto=format&q=75 450w, https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=600&auto=format&q=75 600w, https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=900&auto=format&q=75 900w, https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=1400&auto=format&q=75 1400w" sizes="(max-width: 767px) 100vw, 25vw" alt="Every token, everywhere, all at once" loading="lazy"/></div><div class="writing-grid-body"><h3 class="writing-grid-title">Every token, everywhere, all at once</h3><p class="writing-grid-desc">The research and engineering history behind diffusion models for text and Inception's 10x speed leap over autoregressive models.</p></div></a></div></div></section></main><footer class="footer"><div class="container-lg"><div class="footer-inner"><div class="footer-top"><div class="footer-col"><a class="footer-logo-mark" aria-label="Amplify Partners" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 65 50" fill="none" aria-label="Amplify Partners"><path d="M0.361328 50L17.9085 0H22.7593L5.21212 50H0.361328Z" fill="currentColor"></path><path d="M27.6097 0L10.0625 50H14.9133L32.4605 0H27.6097Z" fill="currentColor"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M19.7715 50L37.298 0H41.1988L58.0073 40.5674C59.4257 44.0426 61.0569 45.5319 64.603 45.5319V50H41.9789V45.5319C44.8158 45.5319 46.8016 44.539 46.8016 42.0567C46.8016 41.3475 46.5888 40.2837 45.9505 38.5816L45.1704 36.5248H29.3548L29.2129 37.0213C28.8583 37.9433 28.291 40 28.291 41.5603C28.291 44.4681 30.2059 45.5319 33.1846 45.5319V50H19.7715ZM30.9151 32.1277H43.3264L36.5888 15.8865L30.9151 32.1277Z" fill="currentColor"></path></svg></a><p class="footer-link footer-address">Menlo Park<br/>800 Menlo Ave, Suite 220<br/>Menlo Park<br/>CA 94025<br/><br/>San Francisco<br/>457 Bryant St<br/>San Francisco<br/>CA 94107</p></div><div class="footer-col"><div class="footer-logo-spacer" aria-hidden="true"></div><a class="footer-link" href="/about-amplify?mission">Our Mission</a><a class="footer-link" href="/portfolio/company">Portfolio</a><a class="footer-link" href="/team">Our Team</a><a class="footer-link" href="/amplify-bio">Amplify Bio</a><a class="footer-link" href="/privacy-policy">Privacy</a></div><div class="footer-col"><div class="footer-logo-spacer" aria-hidden="true"></div><a class="footer-link" href="/writing">Writing</a><a class="footer-link" href="/writing-fellowship">Writing Fellowship</a><a target="_blank" rel="noopener noreferrer" class="footer-link" href="http://talent.amplifypartners.com/">Work at an Amplify company</a><a class="footer-link" href="/legal-for-startups">Startup Legal Hub</a><a class="footer-link" href="/barrchives">Barrchives Podcast</a></div></div><div class="footer-bottom"><a target="_blank" rel="noopener noreferrer" class="footer-link" href="https://x.com/AmplifyPartners">X</a><a target="_blank" rel="noopener noreferrer" class="footer-link" href="https://www.linkedin.com/company/amplify-partners/">LinkedIn</a><span class="footer-copyright">© 2025 Amplify Partners. All rights reserved.</span></div></div></div></footer><!--$--><!--/$-->
117<script src="/_next/static/chunks/2trmj-7psg7wx.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9" id="_R_" async=""></script>
117<script>(self.__next_f=self.__next_f||[]).push([0])</script>
117<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[722106,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"default\"]\n3:I[339756,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"default\"]\n4:I[837457,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"default\"]\n6:I[897367,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[897367,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"ViewportBoundary\"]\nc:I[897367,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"MetadataBoundary\"]\ne:I[168027,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"default\",1]\n:HL[\"/_next/static/chunks/1rrgvm9suprth.css?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"style\"]\n:HC[\"/\",\"\"]\n:HL[\"/_next/static/chunks/039aylglxiei5.css?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"style\"]\n"])</script>
117<script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"blog-posts\",\"why-tigerbeetle-is-the-most-interesting-database-in-the-world\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"blog-posts\",{\"children\":[[\"slug\",\"why-tigerbeetle-is-the-most-interesting-database-in-the-world\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1rrgvm9suprth.css?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/039aylglxiei5.css?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/05l0tj7q-7v8s.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/32e6jm2mqjsm9.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"async\":true,\"nonce\":\"$undefined\"}
117],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0nhp28xh21ejb.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,\"$@9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1rrgvm9suprth.css?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\n"])</script>
117<script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\n"])</script>
117<script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
117<script>self.__next_f.push([1,"10:I[27201,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"IconMark\"]\n8:null\n"])</script>
117<script>self.__next_f.push([1,"d:[[\"$\",\"title\",\"0\",{\"children\":\"Why TigerBeetle is the most interesting database in the world â Amplify Partners\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"This read goes behind the scenes of how TigerBeetle came to be, the incredibly novel software theyâve built, and all of the wacky, wonderful things that make them so special.\"}],[\"$\",\"meta\",\"2\",{\"property\":\"og:title\",\"content\":\"Why TigerBeetle is the most interesting database in the world â Amplify Partners\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:description\",\"content\":\"This read goes behind the scenes of how TigerBeetle came to be, the incredibly novel software theyâve built, and all of the wacky, wonderful things that make them so special.\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:url\",\"content\":\"https://amplifypartners.com/blog-posts/why-tigerbeetle-is-the-most-interesting-database-in-the-world\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:image\",\"content\":\"https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?fm=jpg\u0026w=1200\u0026q=75\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"7\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:title\",\"content\":\"Why TigerBeetle is the most interesting database in the world â Amplify Partners\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:description\",\"content\":\"This read goes behind the scenes of how TigerBeetle came to be, the incredibly novel software theyâve built, and all of the wacky, wonderful things that make them so special.\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:image\",\"content\":\"https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?fm=jpg\u0026w=1200\u0026q=75\"}],[\"$\",\"link\",\"11\",{\"rel\":\"icon\",\"href\":\"/icon.png?icon.1k4w9i-9r9pb2.png\",\"sizes\":\"400x400\",\"type\":\"image/png\"}],[\"$\",\"$L10\",\"12\",{}]]\n"])</script>
117<script>self.__next_f.push([1,"11:I[407988,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/05l0tj7q-7v8s.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/32e6jm2mqjsm9.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/0nhp28xh21ejb.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"default\"]\n12:I[522016,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/05l0tj7q-7v8s.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/32e6jm2mqjsm9.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/0nhp28xh21ejb.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"\"]\n13:I[
117158787,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/05l0tj7q-7v8s.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/32e6jm2mqjsm9.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/0nhp28xh21ejb.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"default\"]\n:HL[\"https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1200\u0026auto=format\u0026q=75\",\"image\",{\"imageSrcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=700\u0026auto=format\u0026q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1000\u0026auto=format\u0026q=75 1000w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1200\u0026auto=format\u0026q=75 1200w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1600\u0026auto=format\u0026q=75 1600w\",\"imageSizes\":\"(max-width: 767px) 100vw, 50vw\",\"fetchPriority\":\"high\"}]\n"])</script>
117<script>self.__next_f.push([1,"5:[[\"$\",\"$L11\",null,{\"variant\":\"$undefined\"}],[\"$\",\"main\",null,{\"className\":\"post-page\",\"children\":[[\"$\",\"div\",null,{\"className\":\"post-hero-wrap\",\"children\":[\"$\",\"div\",null,{\"className\":\"post-hero-inner\",\"children\":[\"$\",\"div\",null,{\"className\":\"post-hero-grid\",\"children\":[[\"$\",\"div\",null,{\"className\":\"post-hero-img-wrap\",\"children\":[\"$\",\"img\",null,{\"src\":\"https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1200\u0026auto=format\u0026q=75\",\"srcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=700\u0026auto=format\u0026q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1000\u0026auto=format\u0026q=75 1000w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1200\u0026auto=format\u0026q=75 1200w, https://cdn.sanity.io/images/kcrxf13s/production/b5d955f3eb061e14e8511bf8a955461163f438b5-1088x1346.png?w=1600\u0026auto=format\u0026q=75 1600w\",\"sizes\":\"(max-width: 767px) 100vw, 50vw\",\"alt\":\"Why TigerBeetle is the most interesting database in the world\",\"fetchPriority\":\"high\"}]}],[\"$\",\"div\",null,{\"className\":\"post-hero-text\",\"children\":[[\"$\",\"div\",null,{\"className\":\"post-hero-top\",\"children\":[[\"$\",\"div\",null,{\"className\":\"post-categories\",\"children\":[[\"$\",\"span\",\"portfolio-spotlight\",{\"className\":\"post-category-tag\",\"children\":\"Portfolio Spotlight\"}]]}],[\"$\",\"h1\",null,{\"className\":\"post-title\",\"children\":\"Why TigerBeetle is the most interesting database in the world\"}]]}],[\"$\",\"div\",null,{\"className\":\"post-byline-wrap\",\"children\":[[\"$\",\"div\",null,{\"className\":\"post-byline\",\"children\":[[\"$\",\"span\",null,{\"className\":\"post-authors\",\"children\":[[\"$\",\"span\",\"justin-gage\",{\"children\":[[\"$\",\"$L12\",null,{\"href\":\"/authors/justin-gage\",\"className\":\"post-authors-link\",\"children\":\"Justin Gage\"}],\"\"]}]]}],[\"$\",\"$L13\",null,{}]]}],[\"$\",\"span\",null,{\"className\":\"post-date\",\"children\":\"09-30-2025\"}],null]}]]}]]}]}]}],[\"$\",\"div\",null,{\"className\":\"post-body-wrap\",\"children\":[null,[\"$\",\"div\",null,{\"className\":\"post-body-inner\",\"children\":[[\"$\",\"div\",null,{\"className\":\"post-content\",\"children\":[\"$\",\"div\",null,{\"className\":\"post-body\",\"children\":[[\"$\",\"blockquote\",\"blockquote-0\",{\"children\":[\"\\n\",[\"$\",\"p\",\"p-0\",{\"children\":[\"$\",\"em\",\"em-0\",{\"children\":\"Disclosure: TigerBeetle is an Amplify portfolio company.\"}]}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",\"p-0\",{\"children\":[\"By many measures itâs safe to say that TigerBeetle is the most interesting database in the world. Like Costanza in Seinfeld, they seem to do the \",[\"$\",\"em\",\"em-0\",{\"children\":\"opposite\"}],\" of everyone else:\"]}],\"\\n\",[\"$\",\"ul\",\"ul-0\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":[\"Most teams write code fast. TigerBeetle tries to \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"write code slow\"}],\".\"]}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":[\"Most teams treat testing as a necessary evil. TigerBeetle is \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"built entirely on Deterministic Simulation Testing (DST)\"}],\".\"]}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":[\"Most teams build their software on top of loads of other software. TigerBeetle \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"has zero dependencies\"}],\".\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",\"p-1\",{\"children\":\"Thereâs even more. TigerBeetle enforces static memory allocation. They keep assertions enabled in production. They chose Viewstamped Replication over Raft, and even Zig instead of Rust!\"}],\"\\n\",[\"$\",\"p\",\"p-2\",{\"children\":\"This read is going to go behind the scenes of how TigerBeetle came to be, the incredibly novel software theyâve built, and all of the wacky, wonderful things that make them so special. Based on extensive interviews with the TigerBeetle team, weâre going to cover a few topics in technical detail:\"}],\"\\n\",[\"$\",\"ul\",\"ul-1\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"Why transactional databases should think in debits and credits, not SQL\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"An (actually) modern database: distributed by default, handling storage faults, and why TigerBeetle uses Zig\"}],\"\\n\",\"$L14\",\"\\n\",\"$L15\",\"\\n\"]}],\"\\n\",\"$L16\",\"\\n\",\"$L17\",\"\\n\",\"$L18\",\"\\n\",\"$L19\",\"\\n\",\"$L1a\",\"\\n\",\"$L1b\",\"\\n\",\"$L1c\",\"\\n\",\"$L1d\",\"\\n\",\"$L1e\",\"\\n\",\"$L1f\",\"\\n\",\"$L20\",\"\\n\",\"$L21\",\"\\n\",\"$L22\",\"\\n\",\"$L23\",\"\\n\",\"$L24\",\"\\n\",\"$L25\",\"\\n\",\"$L26\",\"\\n\",\"$L27\",\"\\n\",\"$L28\",\"\\n\",\"$L29\",\"\\n\",\"$L2a\",\"\\n\",\"$L2b\",\"\\n\",\"$L2c\",\"\\n\",\"$L2d\",\"\\n\",\"$L2e\",\"\\n\",\"$L2f\",\"\\n\",\"$L30\",\"\\n\",\"$L31\",\"\\n\",\"$L32\",\"\\n\",\"$L33\",\"\\n\",\"$L34\",\"\\n\",\"$L35\",\"\\n\",\"$L36\",\"\\n\",\"$L37\",\"\\n\",\"$L38\",\"\\n\",\"$L39\",\"\\n\",\"$L3a\",\"\\n\",\"$L3b\",\"\\n\",\"$L3c\",\"\\n\",\"$L3d\",\"\\n\",\"$L3e\",\"\\n\",\"$L3f\",\"\\n\",\"$L40\",\"\\n\",\"$L41\",\"\\n\",\"$L42\",\"\\n\",\"$L43\",\"\\n\",\"$L44\",\"\\n\",\"$L45\",\"\\n\",\"$L46\",\"\\n\",\"$L47\",\"\\n\",\"$L48\",\"\\n\",\"$L49\",\"\\n\",\"$L4a\",\"\\n\",\"$L4b\",\"\\n\",\"$L4c\",\"\\n\",\"$L4d\",\"\\n\",\"$L4e\",\"\\n\",\"$L4f\",\"\\n\",\"$L50\",\"\\n\",\"$L51\",\"\\n\",\"$L52\",\"\\n\",\"$L53\",\"\\n\",\"$L54\",\"\\n\",\"$L55\",\"\\n\",\"$L56\",\"\\n\",\"$L57\",\"\\n\",\"$L58\",\"\\n\",\"$L59\",\"\\n\",\"$L5a\",\"\\n\",\"$L5b\",\"\\n\",\"$L5c\",\"\\n\",\"$L5d\",\"\\n\",\"$L5e\",\"\\n\",\"$L5f\",\"\\n\",\"$L60\",\"\\n\",\"$L61\",\"\\n\",\"$L62\"]}]}],\"$L63\"]}]]}],\"$L64\"]}],\"$L65\"]\n"])</script>
117<script>self.__next_f.push([1,"66:I[269821,[\"/_next/static/chunks/2yl1jv4w6po1z.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1j-c-c55upv-j.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/1ntn7efqc-iiw.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/05l0tj7q-7v8s.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/32e6jm2mqjsm9.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\",\"/_next/static/chunks/0nhp28xh21ejb.js?dpl=dpl_7NGjUh15BdncHBsqYrf9PMWccuy9\"],\"default\"]\n14:[\"$\",\"li\",\"li-2\",{\"children\":\"VOPR, TigerBeetleâs Deterministic Simulation Testing cluster\"}]\n15:[\"$\",\"li\",\"li-3\",{\"children\":\"TigerStyle, and why you should use assertions\"}]\n16:[\"$\",\"p\",\"p-3\",{\"children\":\"Let's get to it.\"}]\n17:[\"$\",\"h2\",\"h2-0\",{\"id\":\"why-we-need-a-database-that-thinks-in-debits-and-credits\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Why we need a database that thinks in debits and credits\"}]}]\n18:[\"$\",\"p\",\"p-4\",{\"children\":[\"TigerBeetleâs website calls it âThe Financial Transactions Database.â Its primitives are \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"debits and credits\"}],\", which are things you may be familiar with from your accounting requirement in college. And if youâre not a bank, youâre probably thinking this whole thing isnât really for you. But Joran (TigerBeetleâs creator) would tell you otherwise: financial transactions, i.e. debits and credits, are actually \",[\"$\",\"em\",\"em-0\",{\"children\":\"exactly\"}],\" what transactional SQL was originally designed for.\"]}]\n"])</script>
117<script>self.__next_f.push([1,"19:[\"$\",\"p\",\"p-5\",{\"children\":[\"Way back in 1985, Jim Gray (who would later win a Turing Award) wrote a seminal paper on transactions, titled \",[\"$\",\"span\",\"a-0\",{\"className\":\"paper-link\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://jimgray.azurewebsites.net/papers/AMeasureOfTransactionProcessingPower.pdf\",\"title\":\"$undefined\",\"children\":\"A Measure of Transaction Processing Power\"}],[\"$\",\"a\",null,{\"href\":\"https://jimgray.azurewebsites.net/papers/AMeasureOfTransactionProcessingPower.pdf\",\"className\":\"paper-badge paper-badge-paper\",\"tabIndex\":-1,\"aria-hidden\":\"true\",\"children\":[[[\"$\",\"svg\",null,{\"className\":\"paper-badge-glyph\",\"viewBox\":\"0 0 12 14\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.4\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M1 1h6.4L11 4.6V13H1z\"}],[\"$\",\"path\",null,{\"d\":\"M7.4 1v3.6H11\"}],[\"$\",\"path\",null,{\"d\":\"M3.4 7.6h4.2M3.4 10.2h3\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-label\",\"children\":\"PDF\"}]],[\"$\",\"svg\",null,{\"className\":\"paper-badge-arrow\",\"viewBox\":\"0 0 10 10\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M2.2 7.8 7.8 2.2\"}],[\"$\",\"path\",null,{\"d\":\"M3.3 2.2h4.5v4.5\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-tip\",\"children\":\"Paper · jimgray.azurewebsites.net\"}]]}],\"$undefined\"]}],\". If youâve heard of it before, itâs because in it, Gray defined a metric that 40 years later is \",[\"$\",\"em\",\"em-0\",{\"children\":\"still\"}],\" the most important measure for a database: \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"TPS\"}],\", or transactions per second. This would end up leading to such a fervent benchmark war among databases that an objective \",[\"$\",\"em\",\"em-1\",{\"children\":\"council\"}],\" â \",[\"$\",\"a\",\"a-1\",{\"href\":\"https://www.tpc.org/information/about/history5.asp\",\"title\":\"$undefined\",\"children\":\"the TPC\"}],\" â needed to be formed to moderate.\"]}]\n"])</script>
117<script>self.__next_f.push([1,"1a:[\"$\",\"figure\",\"p-6,img-0\",{\"className\":\"post-figure\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=1400\u0026auto=format\u0026q=75\",\"srcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=700\u0026auto=format\u0026q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=1100\u0026auto=format\u0026q=75 1100w, https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=1400\u0026auto=format\u0026q=75 1400w, https://cdn.sanity.io/images/kcrxf13s/production/b63f0719299431a63c11db906e3a0df2e17a8f6f-1280x720.png?w=2000\u0026auto=format\u0026q=75 2000w\",\"sizes\":\"(max-width: 768px) 100vw, 760px\",\"alt\":\"\",\"loading\":\"lazy\"}],\"\"]}]\n1b:[\"$\",\"p\",\"p-7\",{\"children\":[\"$\",\"em\",\"em-0\",{\"children\":\"The TPC in action, deciding on whether a young database had gone to the Dark Side (Oracle).\"}]}]\n1c:[\"$\",\"p\",\"p-8\",{\"children\":\"But what does the âTâ in TPS actually mean? What is a transaction?\"}]\n1d:[\"$\",\"p\",\"p-9\",{\"children\":[\"Your first guess might be a SQL transaction, but thatâs not it. Gray actually defined it as a \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"business transaction\"}],\" derived from the real world. Which is the reason databases were invented in the first place: to power businesses. And indeed, \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.microsoft.com/en-us/research/wp-content/uploads/2005/04/tr-2005-39.doc\",\"title\":\"$undefined\",\"children\":\"20 years later\"}],\", Gray continued to see the standard measure of transaction processing as a âDebitCredit:â\"]}]\n1e:[\"$\",\"blockquote\",\"blockquote-1\",{\"children\":[\"\\n\",[\"$\",\"p\",\"p-0\",{\"children\":[\"$\",\"em\",\"em-0\",{\"children\":\"âA database system to debit a bank account, do the standard double-entry bookkeeping and then reply to the terminal.â\"}]}],\"\\n\"]}]\n1f:[\"$\",\"p\",\"p-10\",{\"children\":[\"Mind you, SQL had already been around since the 70s at this point. And yet the luminary Gray still chose the debit/credit model â because it was the \",[\"$\",\"em\",\"em-0\",{\"children\":\"canonical example\"}],\" of an everyday transaction. Debit/credit is the lingua franca of \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.youtube.com/watch?v=lGyMiW6PnKI\u0026ab_channel=TuringAwardeeClips\",\"title\":\"$undefined\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"what it means to transact\"}]}],\". It is \",[\"$\",\"em\",\"em-1\",{\"children\":\"not\"}],\" just for accounting and banks. Itâs the reason for a database to provide guarantees like ACID in the first place.\"]}]\n20:[\"$\",\"p\",\"p-11\",{\"children\":[\"And yet, if you want to use a SQL database to implement debits and credits today, you are probably going to have a bad time. To handle one debit/credit, a typical system â like the \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://mojaloop.io/\",\"title\":\"$undefined\",\"children\":\"central bank switch\"}],\" that Joran consulted on in 2020 â needs to query account balances, lock those rows, wait for decisions in code, then write back and record the debit/credit. All in all, youâre looking at \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"10-20 SQL queries\"}],\" back and forth, while holding row locks across the network roundtrip time, \",[\"$\",\"em\",\"em-0\",{\"children\":\"for each transaction\"}],\". This gets even worse when you consider the problem of hot rows, where many transactions often need to touch the same set of âhouse accountsâ.\"]}]\n21:[\"$\",\"p\",\"p-12\",{\"children\":[\"All the while (for better or worse), the world is moving faster and faster towards an âeverything is a transactionâ model. Countries like India and Brazil are doing billions of transactions per month in instant payments. With \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.frbservices.org/financial-services/fednow\",\"title\":\"$undefined\",\"children\":\"FedNow\"}],\" in the U.S., weâre not far away from that reality either. Meanwhile, other sectors like energy, gaming, and cloud are all moving towards real-time billing. In less than a decade, the world has become at least three orders of magnitude more "])</script>
117<script>self.__next_f.push([1,"transactional. And yet the SQL databases we still use to power this are 20-30 years old. Can they hold up?\"]}]\n22:[\"$\",\"p\",\"p-13\",{\"children\":[[\"$\",\"strong\",\"strong-0\",{\"children\":\"This is where TigerBeetle comes in\"}],\". They designed a state-of-the-art database, from the ground up, to power the next era of transactions. In TigerBeetle, a debit/credit is a first class primitive and 8,190 of them can pack into a single 1MiB query via a one solitary roundtrip to the database. They call it \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.youtube.com/watch?v=yKgfk8lTQuE\",\"title\":\"$undefined\",\"children\":\"âThe 1000x Performance Idea,â\"}],\" but in Joranâs words itâs ânothing specialâ.\"]}]\n23:[\"$\",\"p\",\"p-14\",{\"children\":[\"They say databases take a decade to build. But TigerBeetle is complete and pretty much \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://jepsen.io/analyses/tigerbeetle-0.16.11\",\"title\":\"$undefined\",\"children\":\"Jepsen-proof\"}],\" after just 3 and a half years. In June 2025, Kyle Kingsbury showed he was unable to break TigerBeetleâs foundations (he found 1 correctness bug in the read query engine, not affecting durability), even while corrupting the whole thing on every machine in various places.\"]}]\n24:[\"$\",\"p\",\"p-15\",{\"children\":[\"The obvious question here â \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"how\"}],\"? How did TigerBeetle ship a production-ready, Jepsen-passing consensus and storage engine in 3.5 years when it typically takes a decade or more?\"]}]\n25:[\"$\",\"h2\",\"h2-1\",{\"id\":\"an-actually-modern-database-distributed-by-default-why-tigerbeetle-uses-zig-and-handling-storage-faults\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"An (actually) modern database: distributed by default, why TigerBeetle uses Zig, and handling storage faults\"}]}]\n26:[\"$\",\"p\",\"p-16\",{\"children\":[\"Imagine you wake up today and wisely decide to build a database from scratch. Instead of investing in the technology of 30 years ago â when the most popular relational databases today were built â you can pick \",[\"$\",\"em\",\"em-0\",{\"children\":\"any\"}],\" advancements in architecture, hardware, language, or research since then to implement. How would you build it? What would you utilize?\"]}]\n27:[\"$\",\"h3\",\"h3-0\",{\"id\":\"distributed-by-default\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Distributed by default\"}]}]\n28:[\"$\",\"p\",\"p-17\",{\"children\":\"One thing youâd probably start with is the deployment model.\"}]\n29:[\"$\",\"p\",\"p-18\",{\"children\":[\"When Postgres and MySQL were built, in a world of big iron (on-prem hardware), the dominant paradigm was \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"single node\"}],\". Now, in a world of shared cloud hardware, itâs \",[\"$\",\"strong\",\"strong-1\",{\"children\":\"distributed\"}],\". Itâs not safe enough to store your transactions only on a single disk or server. A modern database needs to replicate your transactions, with strict serializability, across machines, for redundancy, fault tolerance and high availability. And yet some of the most popular OLTP databases in the world today are still highly dependent on a single node architecture. Automated failover, at least with zero data loss in the cut over, is not always baked in by default.\"]}]\n"])</script>
117<script>self.__next_f.push([1,"2a:[\"$\",\"p\",\"p-19\",{\"children\":[\"So TigerBeetle built their database to be distributed by default. Doing that comes with some of the obvious things you need to do, like consensus. But the developer experience for running TigerBeetle distributed is very simple: you just install the binary on however many machines you want in the cluster. No async replication, no Zookeeper, etc. To make this possible, TigerBeetle invested heavily in their consensus protocol implementation, adopting the pioneering \",[\"$\",\"span\",\"a-0\",{\"className\":\"paper-link\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://pmg.csail.mit.edu/papers/vr.pdf\",\"title\":\"$undefined\",\"children\":\"Viewstamped Replication\"}],[\"$\",\"a\",null,{\"href\":\"https://pmg.csail.mit.edu/papers/vr.pdf\",\"className\":\"paper-badge paper-badge-paper\",\"tabIndex\":-1,\"aria-hidden\":\"true\",\"children\":[[[\"$\",\"svg\",null,{\"className\":\"paper-badge-glyph\",\"viewBox\":\"0 0 12 14\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.4\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M1 1h6.4L11 4.6V13H1z\"}],[\"$\",\"path\",null,{\"d\":\"M7.4 1v3.6H11\"}],[\"$\",\"path\",null,{\"d\":\"M3.4 7.6h4.2M3.4 10.2h3\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-label\",\"children\":\"PDF\"}]],[\"$\",\"svg\",null,{\"className\":\"paper-badge-arrow\",\"viewBox\":\"0 0 10 10\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M2.2 7.8 7.8 2.2\"}],[\"$\",\"path\",null,{\"d\":\"M3.3 2.2h4.5v4.5\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-tip\",\"children\":\"Paper · pmg.csail.mit.edu\"}]]}],\"$undefined\"]}],\" from MIT. This is part of why TigerBeetle has zero dependencies, apart from the Zig toolchain â they literally invested in all their core dependencies.\"]}]\n"])</script>
117<script>self.__next_f.push([1,"2b:[\"$\",\"h3\",\"h3-1\",{\"id\":\"clock-fault-tolerance\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Clock fault tolerance\"}]}]\n2c:[\"$\",\"p\",\"p-20\",{\"children\":\"Distributed by default also shows up in some unlikely places. For example: have you ever thought of a clock fault model?\"}]\n2d:[\"$\",\"p\",\"p-21\",{\"children\":[\"Though itâs not technically required or advised for consensus â which uses logical clocks and not physical clocks â remember that TigerBeetle is a \",[\"$\",\"em\",\"em-0\",{\"children\":\"transactions\"}],\" database. The physical timestamps of transactions need to be accurate and comparable across different financial systems for auditing and compliance.\"]}]\n2e:[\"$\",\"p\",\"p-22\",{\"children\":[\"And here, readers will note that Linux has several clocks: \",[\"$\",\"code\",\"code-0\",{\"children\":\"CLOCK_MONOTONIC_RAW\"}],\", \",[\"$\",\"code\",\"code-1\",{\"children\":\"CLOCK_MONOTONIC\"}],\" and \",[\"$\",\"code\",\"code-2\",{\"children\":\"CLOCK_BOOTTIME\"}],\". All have slight but important differences. Which is the best monotonic clock to use? (clue: It doesnât say \",[\"$\",\"code\",\"code-3\",{\"children\":\"MONOTONIC\"}],\" on the tin)\"]}]\n2f:[\"$\",\"p\",\"p-23\",{\"children\":\"The challenge is that physical imperfections in hardware clocks cause clocks to tick at different speeds, so that time passes faster or slower than it should. These kinds of âdriftâ errors eventually add up to significant âskewâ errors within a short space of time. Most of the time, Network Time Protocol (NTP) would correct for these errors. But if NTP silently stops working because of a partial network outage, then a highly available consensus cluster might otherwise be running blind, in the dark.\"}]\n30:[\"$\",\"p\",\"p-24\",{\"children\":[\"But even this is something TigerBeetle thought about. They combine \",[\"$\",\"em\",\"em-0\",{\"children\":\"the majority of clocks\"}],\" in the cluster to construct a fault-tolerant clock called âcluster timeâ. This cluster time then gets used to bring a serverâs system time back into line if necessary, or shut down safely if TigerBeetle detects that there are too many faulty clocks (e.g. TigerBeetle can actually detect when something like Chrony, PTP, or NTP have stopped working and alert the operator).\"]}]\n31:[\"$\",\"p\",\"p-25\",{\"children\":[\"They do this by tracking offset clock times between different TigerBeetle servers, sampling them, and passing them through \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://en.wikipedia.org/wiki/Marzullo%27s_algorithm\",\"title\":\"$undefined\",\"children\":\"Marzulloâs algorithm\"}],\" to estimate the most accurate possible interval (again, just to get a sense of whether clocks are being synced by the underlying clock sync protocol correctly).\"]}]\n32:[\"$\",\"p\",\"p-26\",{\"children\":[\"Small things like this are exactly why distributed by default is hard, and doesnât work as an add-on for older database models. You can read more about this in TigerBeetle's \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://tigerbeetle.com/blog/2021-08-30-three-clocks-are-better-than-one/\",\"t
117itle\":\"$undefined\",\"children\":\"3 clocks are better than one\"}],\" blog post.\"]}]\n33:[\"$\",\"p\",\"p-27\",{\"children\":\"â\"}]\n34:[\"$\",\"h3\",\"h3-2\",{\"id\":\"handling-storage-faults\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Handling storage faults\"}]}]\n35:[\"$\",\"p\",\"p-28\",{\"children\":[\"Another piece of âdistributed by defaultâ that deserves its own header is how TigerBeetle handles \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"storage faults\"}],\" (or even the fact it handles them at all). Traditional databases assume that if disks fail, they do so predictably with a nice error message. For example, even \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.sqlite.org/atomiccommit.html\",\"title\":\"$undefined\",\"children\":\"SQLiteâs docs\"}],\" are clear that:\"]}]\n36:[\"$\",\"blockquote\",\"blockquote-2\",{\"children\":[\"\\n\",[\"$\",\"p\",\"p-0\",{\"children\":[\"$\",\"em\",\"em-0\",{\"children\":\"SQLite does not add any redundancy to the database file for the purpose of detecting corruption or I/O errors. SQLite assumes that the data it reads is exactly the same data that it previously wrote.\"}]}],\"\\n\"]}]\n"])</script>
117<script>self.__next_f.push([1,"37:[\"$\",\"p\",\"p-29\",{\"children\":[\"In reality, there are many more sinister possibilities: disks can silently return corrupt data, misdirect I/O (on the read or write path), or just suddenly get really slow (called \",[\"$\",\"span\",\"a-0\",{\"className\":\"paper-link\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://www.microsoft.com/en-us/research/wp-content/uploads/2017/06/paper-1.pdf\",\"title\":\"$undefined\",\"children\":\"gray failure\"}],[\"$\",\"a\",null,{\"href\":\"https://www.microsoft.com/en-us/research/wp-content/uploads/2017/06/paper-1.pdf\",\"className\":\"paper-badge paper-badge-paper\",\"tabIndex\":-1,\"aria-hidden\":\"true\",\"children\":[[[\"$\",\"svg\",null,{\"className\":\"paper-badge-glyph\",\"viewBox\":\"0 0 12 14\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.4\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M1 1h6.4L11 4.6V13H1z\"}],[\"$\",\"path\",null,{\"d\":\"M7.4 1v3.6H11\"}],[\"$\",\"path\",null,{\"d\":\"M3.4 7.6h4.2M3.4 10.2h3\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-label\",\"children\":\"PDF\"}]],[\"$\",\"svg\",null,{\"className\":\"paper-badge-arrow\",\"viewBox\":\"0 0 10 10\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M2.2 7.8 7.8 2.2\"}],[\"$\",\"path\",null,{\"d\":\"M3.3 2.2h4.5v4.5\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-tip\",\"children\":\"Paper · microsoft.com\"}]]}],\"$undefined\"]}],\" in the research), all without returning error codes.\"]}]\n"])</script>
117<script>self.__next_f.push([1,"38:[\"$\",\"p\",\"p-30\",{\"children\":\"TigerBeetle is built to be storage fault tolerant:\"}]\n"])</script>
117<script>self.__next_f.push([1,"39:[\"$\",\"ul\",\"ul-2\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":[\"TigerBeetle uses \",[\"$\",\"span\",\"a-0\",{\"className\":\"paper-link\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://www.usenix.org/conference/fast18/presentation/alagappan\",\"title\":\"$undefined\",\"children\":\"Protocol Aware Recovery\"}],[\"$\",\"a\",null,{\"href\":\"https://www.usenix.org/conference/fast18/presentation/alagappan\",\"className\":\"paper-badge paper-badge-paper\",\"tabIndex\":-1,\"aria-hidden\":\"true\",\"children\":[[[\"$\",\"svg\",null,{\"className\":\"paper-badge-glyph\",\"viewBox\":\"0 0 12 14\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.4\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M1 1h6.4L11 4.6V13H1z\"}],[\"$\",\"path\",null,{\"d\":\"M7.4 1v3.6H11\"}],[\"$\",\"path\",null,{\"d\":\"M3.4 7.6h4.2M3.4 10.2h3\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-label\",\"children\":\"USENIX\"}]],[\"$\",\"svg\",null,{\"className\":\"paper-badge-arrow\",\"viewBox\":\"0 0 10 10\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M2.2 7.8 7.8 2.2\"}],[\"$\",\"path\",null,{\"d\":\"M3.3 2.2h4.5v4.5\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-tip\",\"children\":\"USENIX proceedings\"}]]}],\"$undefined\"]}],\" to remain available unless all copies of a piece of data get corrupted on every single replica.\"]}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"All data in TigerBeetle is immutable, checksummed, and hash-chained, providing a strong guarantee that no corruption or tampering happened.\"}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":[\"TigerBeetle puts as little software as possible between itself and the disk, including a custom page cache, writing data to disk with O_DIRECT, and even running on a raw block device directly (no filesystem necessary â to sidestep filesystem bugs \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://news.ycombinator.com/item?id=36113828\",\"title\":\"$undefined\",\"children\":\"which do tend to happen\"}],\" from time to time).\"]}],\"\\n\",[\"$\",\"li\",\"li-3\",{\"children\":[\"They built their own implementation of LSM instead of using an off-the-shelf one â they call it an \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.youtube.com/watch?v=yBBpUMR8dHw\",\"title\":\"$undefined\",\"children\":\"LSM Forest\"}],\", which is something like 20 different LSM trees.\"]}],\"\\n\"]}]\n"])</script>
117<script>self.__next_f.push([1,"3a:[\"$\",\"p\",\"p-31\",{\"children\":[\"As far as Iâm aware TigerBeetle is the only distributed database that not only claims to be storage fault tolerant, but was also tested pretty hard and validated by Jepsen to be. If you have a local machine failure where even just a disk sector fails, then that storage engine is connected to the global consensus, and it can use the cluster to self heal. This is also a great example of why the modern database having access to modern research matters: \",[\"$\",\"span\",\"a-0\",{\"className\":\"paper-link\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://www.usenix.org/conference/fast18/presentation/alagappan\",\"title\":\"$undefined\",\"children\":\"Protocol-Aware Recovery\"}],[\"$\",\"a\",null,{\"href\":\"https://www.usenix.org/conference/fast18/presentation/alagappan\",\"className\":\"paper-badge paper-badge-paper\",\"tabIndex\":-1,\"aria-hidden\":\"true\",\"children\":[[[\"$\",\"svg\",null,{\"className\":\"paper-badge-glyph\",\"viewBox\":\"0 0 12 14\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.4\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M1 1h6.4L11 4.6V13H1z\"}],[\"$\",\"path\",null,{\"d\":\"M7.4 1v3.6H11\"}],[\"$\",\"path\",null,{\"d\":\"M3.4 7.6h4.2M3.4 10.2h3\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-label\",\"children\":\"USENIX\"}]],[\"$\",\"svg\",null,{\"className\":\"paper-badge-arrow\",\"viewBox\":\"0 0 10 10\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"1.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M2.2 7.8 7.8 2.2\"}],[\"$\",\"path\",null,{\"d\":\"M3.3 2.2h4.5v4.5\"}]]}],[\"$\",\"span\",null,{\"className\":\"paper-badge-tip\",\"children\":\"USENIX proceedings\"}]]}],\"$undefined\"]}],\", which enables TigerBeetle to survive disk failures like this, is fairly recent (2018) research.\"]}]\n"])</script>
117<script>self.__next_f.push([1,"3b:[\"$\",\"figure\",\"p-32,img-0\",{\"className\":\"post-figure\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=1400\u0026auto=format\u0026q=75\",\"srcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=700\u0026auto=format\u0026q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=1100\u0026auto=format\u0026q=75 1100w, https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=1400\u0026auto=format\u0026q=75 1400w, https://cdn.sanity.io/images/kcrxf13s/production/d53d9a8792627afd37b246c1bd72169dc43804a3-652x500.png?w=2000\u0026auto=format\u0026q=75 2000w\",\"sizes\":\"(max-width: 768px) 100vw, 760px\",\"alt\":\"\",\"loading\":\"lazy\"}],\"\"]}]\n3c:[\"$\",\"h3\",\"h3-3\",{\"id\":\"tigerbeetle-in-zig\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"TigerBeetle in Zig\"}]}]\n3d:[\"$\",\"p\",\"p-33\",{\"children\":[\"Another thing youâd think about when building a modern database from scratch is your choice of \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"programming language\"}],\". Postgres is written in C (c. 1970s), MySQL in C and C++ (1979), and MSSQL as well in C and C++. But programming languages have come a long way in the past 40 years. If you had your choice, what would you build a database in today?\"]}]\n3e:[\"$\",\"p\",\"p-34\",{\"children\":\"The answer would probably be Rust or Zig. And indeed, TigerBeetle is built 100% in Zig:\"}]\n3f:[\"$\",\"ul\",\"ul-3\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"You get the whole C ecosystem available to you, extended with a phenomenal toolchain and compiler.\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":\"Itâs easy to write, and especially easy to read, in some cases as easy as TypeScript (just a lot faster).\"}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":\"Zig lets you statically allocate memory, which is a core principle of TigerBeetle.\"}],\"\\n\",[\"$\",\"li\",\"li-3\",{\"children\":\"Zig has a great developer experience and you can learn it quickly (which ergo means you can get into the TigerBeetle src quickly).\"}],\"\\n\"]}]\n40:[\"$\",\"p\",\"p-35\",{\"children\":[\"Of course, as new systems languages, Zig and Rust are related, and some of the early Rust team now work at TigerBeetle, including \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://matklad.github.io/\",\"title\":\"$undefined\",\"children\":\"Matklad\"}],\" (creator of \",[\"$\",\"a\",\"a-1\",{\"href\":\"https://rust-analyzer.github.io/\",\"title\":\"$undefined\",\"children\":\"Rust Analyzer\"}],\") and \",[\"$\",\"a\",\"a-2\",{\"href\":\"https://brson.github.io/\",\"title\":\"$undefined\",\"children\":\"Brian Anderson\"}],\" (co-creator of Rust with Graydon). Theyâve \",[\"$\",\"a\",\"a-3\",{\"href\":\"https://matklad.github.io/2023/03/26/zig-and-rust.html\",\"title\":\"$undefined\",\"children\":\"written extensively\"}],\" about these languages and why Joran chose Zig in particular for TigerBeetle, given their design goals.\"]}]\n41:[\"$\",\"p\",\"p-36\",{\"children\":[\"And here, of course, TigerBeetle is fanatical about static memory allocation, which Iâll talk more about in the next section. Not using dynamic memory allocation is âhard modeâ in Rust (as matklad wrote about \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://matklad.github.io/2022/10/06/hard-mode-rust.html\",\"title\":\"$undefined\",\"children\":\"here\"}],\"), but a breeze in Zig.\"]}]\n42:[\"$\",\"p\",\"p-37\",{\"children\":\"â\"}]\n43:[\"$\",\"h2\",\"h2-2\",{\"id\":\"deterministic-simulation-testing-and-the-vopr\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Deterministic Simulation Testing and the VOPR\"}]}]\n44:[\"$\",\"p\",\"p-38\",{\"children\":[\"Sometimes, Deterministic Simulation Testing (DST) feels like the most transformational technology that the fewest developers know about. Itâs a \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://notes.eatonphil.com/2024-08-20-deterministic-simulation-testing.html\",\"title\":\"$undefined\",\"children\":\"novel testing technique\"}],\" made popular by the \",[\"$\",\"a\",\"a-1\",{\"href\":\"https://www.foundationdb.org/\",\"t
117itle\":\"$undefined\",\"children\":\"FoundationDB\"}],\" team (which now belongs to Apple); they used it to develop a more secure, bug-free distributed"])</script>
117<script>self.__next_f.push([1," database in a shorter time span than arguably anyone had done before.\"]}]\n45:[\"$\",\"p\",\"p-39\",{\"children\":[\"The \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.youtube.com/watch?v=cHA8vyZvkCs\",\"title\":\"$undefined\",\"children\":\"fundamentals of DST\"}],\" go something like this. In distributed systems, there are essentially infinite combinations of concurrency issues: anything from lost messages to unpredictable thread execution order. You simply cannot use old-school unit and integration tests, or your system will suck. Formal verification, a more academic discipline that works on formulaic proofs that a program runs as intended, is too expensive and slow. So what are you to do?\"]}]\n46:[\"$\",\"p\",\"p-40\",{\"children\":[\"The answer is a simulator that deterministically runs almost every possible scenario your system will face on a specific chronological timeline. The simulator accounts for external factors too, like issues with the OS, network, or disk, or simply different latencies. All in all, DST can give you the equivalent of yearsâ worth of testing in a very short time period (because time itself becomes deterministicâa while true loop); and DST is particularly well suited towards databases (I/O intensive, not compute intensive). If youâre familiar with Jepsen testing, think of it as \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://antithesis.com/blog/is_something_bugging_you/\",\"title\":\"$undefined\",\"children\":\"a subset of what DST can do\"}],\".\"]}]\n47:[\"$\",\"p\",\"p-41\",{\"children\":[\"TigerBeetle is one of the most pioneering startups on the planet when it comes to DST. Theyâve developed their own testing cluster â itâs nicknamed VOPR, short for Viewstamped Operation Replicator (\",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.youtube.com/watch?v=iRsycWRQrc8\",\"title\":\"$undefined\",\"children\":\"after the WOPR simulator in the movie WarGames\"}],\"). The VOPR constantly (and tirelessly) tests TigerBeetle under countless different conditions, covering everything from how nodes elect a leader to individual states and network faults. But it can simulate a whole distributed cluster virtually, all on a single thread.\"]}]\n48:[\"$\",\"p\",\"p-42\",{\"children\":[\"As far as your author is aware, TigerBeetleâs VOPR is the single largest DST cluster on the planet. \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://us13.campaign-archive.com/?u=32cd932058e988b44c838f7bc\u0026id=0c749f7b07\",\"title\":\"$undefined\",\"children\":\"It runs on\"}],\" 1,000 CPU cores, a number so unusually large that Hetzner sent them a special email asking if they were sure they wanted that many cores. The so-called VOPR-1000 is running 24x7x365, to catch rare conditions as far as possible before production. With time abstracted deterministically, and accelerated in the simulator by a factor of (roughly) 700x, this adds up to nearly 2 millennia of simulated runtime per day.\"]}]\n49:[\"$\",\"p\",\"p-43\",{\"children\":\"â\"}]\n4a:[\"$\",\"h3\",\"h3-4\",{\"id\":\"but-what-if-dst-was-fun\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"But what if DST was fun?\"}]}]\n4b:[\"$\",\"p\",\"p-44\",{\"children\":\"Yea, distributed systems are cool. But you know whatâs even cooler? Video games.\"}]\n4c:[\"$\",\"p\",\"p-45\",{\"children\":[\"TigerBeetle turned DST into a game that lets you play through different failure scenarios in how the system reacts. You can play it \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://sim.tigerbeetle.com/\",\"title\":\"$undefined\",\"children\":\"here\"}],\".\"]}]\n4d:[\"$\",\"figure\",\"p-46,img-0\",{\"className\":\"post-figure\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=1400\u0026auto=format\u0026q=75\",\"srcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=700\u0026auto=format\u0026q=75 700w, https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=1100\u0026auto=format\u0026q=75 1100w, https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a8497-1600x816.png?w=1400\u0026auto=format\u0026q=75 1400w, https://cdn.sanity.io/images/kcrxf13s/production/c4be3d5ef85613018654bf378818d4ac477a84"])</script>
117<script>self.__next_f.push([1,"97-1600x816.png?w=2000\u0026auto=format\u0026q=75 2000w\",\"sizes\":\"(max-width: 768px) 100vw, 760px\",\"alt\":\"\",\"loading\":\"lazy\"}],\"\"]}]\n4e:[\"$\",\"p\",\"p-47\",{\"children\":\"Whatâs perhaps even cooler is that this game is running an actual instance of the VOPR, simulating TigerBeetleâ¦in your browser. Itâs compiled to WebAssembly, and then TigerBeetleâs own engineers built a gaming frontend on top to visualize the real system\"}]\n4f:[\"$\",\"p\",\"p-48\",{\"children\":[\"You can read more about how and why TigerBeetle built the simulator in \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://tigerbeetle.com/blog/2023-07-11-we-put-a-distributed-database-in-the-browser/\",\"title\":\"$undefined\",\"children\":\"this blog post\"}],\".\"]}]\n50:[\"$\",\"p\",\"p-49\",{\"children\":\"â\"}]\n51:[\"$\",\"h2\",\"h2-3\",{\"id\":\"tigerstyle-and-the-power-of-ten\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"TigerStyle and The Power of Ten\"}]}]\n52:[\"$\",\"p\",\"p-50\",{\"children\":[\"As you will continue to see with TigerBeetle, it is often not just the \",[\"$\",\"em\",\"em-0\",{\"children\":\"what\"}],\" theyâve built that catches the eye but also the \",[\"$\",\"em\",\"em-1\",{\"children\":\"how\"}],\". Thereâs no better example than \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"TigerStyle\"}],\".\"]}]\n53:[\"$\",\"p\",\"p-51\",{\"children\":[[\"$\",\"a\",\"a-0\",{\"href\":\"https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/TIGER_STYLE.md\",\"title\":\"$undefined\",\"children\":\"TigerStyle\"}],\" is TigerBeetleâs engineering methodology, public on GitHub for all to see. Hereâs how they describe it:\"]}]\n54:[\"$\",\"blockquote\",\"blockquote-3\",{\"children\":[\"\\n\",[\"$\",\"p\",\"p-0\",{\"children\":[\"$\",\"em\",\"em-0\",{\"children\":\"âTigerBeetle's coding style is evolving. A collective give-and-take at the intersection of engineering and art. Numbers and human intuition. Reason and experience. First principles and knowledge. Precision and poetry. Just like music. A tight beat. A rare groove. Words that rhyme and rhymes that break. Biodigital jazz. This is what we've learned along the way. The best is yet to come.â\"}]}],\"\\n\"]}]\n55:[\"$\",\"p\",\"p-52\",{\"children\":[\"Biodigital jazz is a term from \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://en.wikipedia.org/wiki/Tron:_Legacy\",\"title\":\"$undefined\",\"children\":\"Tron: Legacy\"}],\". In the context of the film, it represents the intertwining of human and digital elements, the chaotic yet structured nature of the âGridâ (the digital world), and the improvisational spirit of human potential within the confines of technology (I copied this from AI). For TigerBeetle, itâs an ethos of code; remembering to infuse everything they do with not just science, but art too.\"]}]\n56:[\"$\",\"p\",\"p-53\",{\"children\":[\"More practically, TigerStyle lays out engineering and code principles for TigerBeetle, many derived from the original \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://spinroot.com/gerard/pdf/P10.pdf\",\"title\":\"$undefined\",\"children\":\"Power of Ten\"}],\", NASAâs tenets for writing foolproof code. TigerStyle spans from the thematic, like simplicity and elegance, to the applied, like how to name things. Itâs even starting to impact other companies like Resonate and Turso; and \",[\"$\",\"a\",\"a-1\",{\"href\":\"https://youtu.be/tNZnLkRBYA8?t=11167\",\"title\":\"$undefined\",\"children\":\"TigerStyle has even been discussed on Lex Fridman\"}],\". Here are a few highlights.\"]}]\n57:[\"$\",\"h3\",\"h3-5\",{\"id\":\"using-assertions-and-the-power-of-ten\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Using assertions, and the Power of Ten\"}]}]\n58:[\"$\",\"p\",\"p-54\",{\"children\":[\"Speaking of the Power of Tenâ¦one of them (Rule 5) is about \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"assertions\"}],\". The idea is simple: explicitly encode your expectations of code behavior \",[\"$\",\"em\",\"em-0\",{\"children\":\"while\"}],\" you are writing it, not after the fact. You write them simply in a single line as booleans: assert(a \u003e b). TigerStyle calls for:\"]}]\n59:[\"$\",\"ul\",\"ul-4\",{\"children\":[\"\\n\",[\"$\",\"li\",\"li-0\",{\"children\":\"Asserting all function arguments, return values, preconditions, and invariants. On average there should be at least 2 assertions per function.\"}],\"\\n\",[\"$\",\"li\",\"li-1\",{\"children\":[\"Usin"])</script>
117<script>self.__next_f.push([1,"g assertions \",[\"$\",\"em\",\"em-0\",{\"children\":\"instead\"}],\" of comments when the assertion is both important and surprising.\"]}],\"\\n\",[\"$\",\"li\",\"li-2\",{\"children\":\"Asserting the relationships between compile-time constants, so you can check a programâs design integrity before it even runs.\"}],\"\\n\",[\"$\",\"li\",\"li-3\",{\"children\":[\"Not just assert what \",[\"$\",\"em\",\"em-0\",{\"children\":\"should\"}],\" happen, but also the negative space that you donât expect â where interesting bugs can show up.\"]}],\"\\n\"]}]\n5a:[\"$\",\"p\",\"p-55\",{\"children\":[[\"$\",\"a\",\"a-0\",{\"href\":\"https://spinroot.com/gerard/pdf/P10.pdf\",\"title\":\"$undefined\",\"children\":\"The Power of Ten\"}],\" is an amazing artifact that covers so much more than just assertionsâ¦itâs a great resource for any modern programmer (and maybe we should train some LLMs on it too).\"]}]\n5b:[\"$\",\"h3\",\"h3-6\",{\"id\":\"thinking-about-performance\",\"children\":[\"$\",\"strong\",\"strong-0\",{\"children\":\"Thinking about performance\"}]}]\n5c:[\"$\",\"p\",\"p-56\",{\"children\":[\"Much of TigerStyle centers around the idea that \",[\"$\",\"em\",\"em-0\",{\"children\":\"writing\"}],\" code is not the most important part of the cycle; instead, itâs \",[\"$\",\"strong\",\"strong-0\",{\"children\":\"reasoning about\"}],\" and \",[\"$\",\"strong\",\"strong-1\",{\"children\":\"designing\"}],\" the code. When it comes to performance, TigerStyle implores you to think about it from the start:\"]}]\n5d:[\"$\",\"blockquote\",\"blockquote-4\",{\"children\":[\"\\n\",[\"$\",\"p\",\"p-0\",{\"children\":[\"$\",\"em\",\"em-0\",{\"children\":\"âThe best time to solve performance, to get the huge 1000x wins, is in the design phase, which is precisely when we can't measure or profile.â\"}]}],\"\\n\"]}]\n5e:[\"$\",\"p\",\"p-57\",{\"children\":\"You should be doing basic napkin math on what TigerStyle calls âthe four primary colorsâ â network, storage, memory, CPU â and how theyâll perform with respect to (âthe two texturesâ â art!) bandwidth and latency. Then, there are a few more tactical tips, like distinguishing between the control plane and data plane, batching accesses, and extracting hot loops into stand-alone functions to reduce dependence on the compiler.\"}]\n5f:[\"$\",\"p\",\"p-58\",{\"children\":[\"For more about TigerStyle, watch \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://www.youtube.com/watch?v=w3WYdYyjek4\u0026t=5s\u0026ab_channel=TigerBeetle\",\"title\":\"$undefined\",\"children\":\"Joranâs talk at Systems Distributed\"}],\".\"]}]\n60:[\"$\",\"h2\",\"h2-4\",{\"id\":\"try-it-out-for-yourself\",\"children\":\"Try it out for yourself\"}]\n61:[\"$\",\"p\",\"p-59\",{\"children\":\"So is TigerBeetle a database? Yes. But itâs not much like any other database Iâve seen. Theyâve taken modern research and applied it to an age-old form, giving their database unprecedented performance and stability guarantees. Theyâve developed an art form around systems and storage engineering, and they havenât forgotten to have fun along the way. And thanks to their clever use of DST, they were able to build this thing to Jepsen standards in only a few years.\"}]\n62:[\"$\",\"p\",\"p-60\",{\"children\":[\"You can get started with TigerBeetle \",[\"$\",\"a\",\"a-0\",{\"href\":\"https://tigerbeetle.com/#install\",\"title\":\"$undefined\",\"children\":\"here\"}],\" using a simple curl command.\"]}]\n"])</script>
117<script>self.__next_f.push([1,"63:[\"$\",\"div\",null,{\"className\":\"post-bottom-inner\",\"children\":[null,[\"$\",\"div\",null,{\"className\":\"post-bottom-icon\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"30\",\"height\":\"26\",\"viewBox\":\"0 0 30 26\",\"fill\":\"none\",\"preserveAspectRatio\":\"xMidYMid meet\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"path\",null,{\"d\":\"M4.06994 1.78533L8.068 3.64158L9.35309 7.99661M9.35309 7.99661L4.85527 10.6382M9.35309 7.99661L12.3516 7.28267L14.8504 6.8543L17.0055 7.38908M9.35309 7.99661L9.92424 10.7096L12.2088 13.0656M12.2088 13.0656C11.4235 14.66 8.75338 18.5915 6.9257 20.4191C5.83099 19.848 3.59874 18.2202 2.28509 17.9918L1 20.1336M12.2088 13.0656L16.4211 17.7062L13.7081 23.3463L14.9932 24.2744M12.2088 13.0656C13.3412 12.0684 15.4363 9.89493 17.0055 7.38908M17.0055 7.38908L18.1345 5.49782L18.7759 3.42258M17.0055 7.38908L19.1341 8.78194L21.3473 11.2807L24.4172 12.9228M24.4172 12.9228L22.9893 21.0617M24.4172 12.9228L25.7737 6.14036M17.0636 1C16.7067 1.99952 16.4925 2.78485 17.4206 3.21321C17.7844 3.38114 18.2888 3.4302 18.7759 3.42258M20.2764 1.71394L19.8537 3.00974C19.5624 3.07042 19.2828 3.41464 18.7759 3.42258M25.7737 6.14036C24.4172 5.78339 23.8461 4.28412 23.7033 2.28509M25.7737 6.14036C26.5352 6.25935 28.2011 5.85479 28.7722 3.28461M25.7737 6.14036L26.3448 4.21273L26.2735 1.57115\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"}]}]}],[\"$\",\"div\",null,{\"className\":\"post-bottom-meta\",\"children\":[[\"$\",\"div\",null,{\"className\":\"post-bottom-section\",\"children\":[[\"$\",\"p\",null,{\"className\":\"post-bottom-label\",\"children\":\"Authors\"}],[[\"$\",\"p\",\"justin-gage\",{\"className\":\"post-bottom-value\",\"children\":[[\"$\",\"span\",\"justin-gage\",{\"children\":[[\"$\",\"$L12\",null,{\"href\":\"/authors/justin-gage\",\"className\":\"post-authors-link\",\"children\":\"Justin Gage\"}],\"\"]}]]}]]]}],false,null]}],[\"$\",\"$L66\",null,{\"variant\":\"post\"}]]}]\n"])</script>
117<script>self.__next_f.push([1,"64:[\"$\",\"section\",null,{\"className\":\"post-more-writing\",\"children\":[\"$\",\"div\",null,{\"className\":\"post-more-inner\",\"children\":[[\"$\",\"p\",null,{\"className\":\"writing-more-label\",\"children\":\"More writing from Justin\"}],[\"$\",\"div\",null,{\"className\":\"writing-grid\",\"children\":[[\"$\",\"$L12\",\"JXmke4KmnpBv7IhAyOgmJ8\",{\"href\":\"/blog-posts/the-infrastructure-behind-runway-characters\",\"className\":\"writing-grid-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"writing-grid-image\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=600\u0026auto=format\u0026q=75\",\"srcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=300\u0026auto=format\u0026q=75 300w, https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=450\u0026auto=format\u0026q=75 450w, https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=600\u0026auto=format\u0026q=75 600w, https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=900\u0026auto=format\u0026q=75 900w, https://cdn.sanity.io/images/kcrxf13s/production/af080bf497622ec72a6601f1a9349632cf2dfc95-1456x1088.jpg?w=1400\u0026auto=format\u0026q=75 1400w\",\"sizes\":\"(max-width: 767px) 100vw, 25vw\",\"alt\":\"The infrastructure behind Runway Characters\",\"loading\":\"lazy\"}],null]}],[\"$\",\"div\",null,{\"className\":\"writing-grid-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"writing-grid-title\",\"children\":\"The infrastructure behind Runway Characters\"}],[\"$\",\"p\",null,{\"className\":\"writing-grid-desc\",\"children\":\"The story of how Runwayâs research and engineering teams built the worldâs first autoregressive video model for their Characters product.\"}]]}]]}],[\"$\",\"$L12\",\"JXmke4KmnpBv7IhAyOgk0U\",{\"href\":\"/blog-posts/announcing-the-amplify-writing-fellowship\",\"className\":\"writing-grid-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"writing-grid-image\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=600\u0026auto=format\u0026q=75\",\"srcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=300\u0026auto=format\u0026q=75 300w, https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=450\u0026auto=format\u0026q=75 450w, https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=600\u0026auto=format\u0026q=75 600w, https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=900\u0026auto=format\u0026q=75 900w, https://cdn.sanity.io/images/kcrxf13s/production/49187abd9e2339ed6efa393396437ab8fdd756e3-1088x1456.jpg?w=1400\u0026auto=format\u0026q=75 1400w\",\"sizes\":\"(max-width: 767px) 100vw, 25vw\",\"alt\":\"Announcing the Amplify writing fellowship\",\"loading\":\"lazy\"}],null]}],[\"$\",\"div\",null,{\"className\":\"writing-grid-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"writing-grid-title\",\"children\":\"Announcing the Amplify writing fellowship\"}],[\"$\",\"p\",null,{\"className\":\"writing-grid-desc\",\"children\":\"We're bringing together a small group of writers with technical backgrounds to explore specific thematic areas and publish their research.\"}]]}]]}],[\"$\",\"$L12\",\"yCI02xKbYgk1bUSaiq8H33\",{\"href\":\"/blog-posts/exe-dev-and-the-perfect-little-computer\",\"className\":\"writing-grid-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"writing-grid-image\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=600\u0026auto=format\u0026q=75\",\"srcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=300\u0026auto=format\u0026q=75 300w, https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=450\u0026auto=format\u0026q=75 450w, https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=600\u0026auto=format\u0026q=75 600w, https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=900\u0026auto=format\u0026q=75 900w, https://cdn.sanity.io/images/kcrxf13s/production/7fa1f627f00ee3134dbc468bf6debbdab2b73dcf-1088x1456.webp?w=1400\u0026auto=format\u0026q=75 1400w\",\"sizes\":\"(max-width: 767px) 100v
117w, 25vw\",\"alt\":\"exe.dev and the perfect little computer\",\"loading\":\"lazy\"}],null]}],\"$L67\"]}],\"$L68\"]}]]}]}]\n"])</script>
117<script>self.__next_f.push([1,"65:[\"$\",\"footer\",null,{\"className\":\"footer\",\"children\":[\"$\",\"div\",null,{\"className\":\"container-lg\",\"children\":[\"$\",\"div\",null,{\"className\":\"footer-inner\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-top\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-col\",\"children\":[[\"$\",\"$L12\",null,{\"href\":\"/\",\"className\":\"footer-logo-mark\",\"aria-label\":\"Amplify Partners\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"100%\",\"height\":\"100%\",\"viewBox\":\"0 0 65 50\",\"fill\":\"none\",\"aria-label\":\"Amplify Partners\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M0.361328 50L17.9085 0H22.7593L5.21212 50H0.361328Z\",\"fill\":\"currentColor\"}],[\"$\",\"path\",null,{\"d\":\"M27.6097 0L10.0625 50H14.9133L32.4605 0H27.6097Z\",\"fill\":\"currentColor\"}],[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M19.7715 50L37.298 0H41.1988L58.0073 40.5674C59.4257 44.0426 61.0569 45.5319 64.603 45.5319V50H41.9789V45.5319C44.8158 45.5319 46.8016 44.539 46.8016 42.0567C46.8016 41.3475 46.5888 40.2837 45.9505 38.5816L45.1704 36.5248H29.3548L29.2129 37.0213C28.8583 37.9433 28.291 40 28.291 41.5603C28.291 44.4681 30.2059 45.5319 33.1846 45.5319V50H19.7715ZM30.9151 32.1277H43.3264L36.5888 15.8865L30.9151 32.1277Z\",\"fill\":\"currentColor\"}]]}]}],[\"$\",\"p\",null,{\"className\":\"footer-link footer-address\",\"children\":[\"Menlo Park\",[\"$\",\"br\",null,{}],\"800 Menlo Ave, Suite 220\",[\"$\",\"br\",null,{}],\"Menlo Park\",[\"$\",\"br\",null,{}],\"CA 94025\",[\"$\",\"br\",null,{}],[\"$\",\"br\",null,{}],\"San Francisco\",[\"$\",\"br\",null,{}],\"457 Bryant St\",[\"$\",\"br\",null,{}],\"San Francisco\",[\"$\",\"br\",null,{}],\"CA 94107\"]}]]}],[\"$\",\"div\",null,{\"className\":\"footer-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-logo-spacer\",\"aria-hidden\":\"true\"}],[\"$\",\"$L12\",null,{\"href\":\"/about-amplify?mission\",\"className\":\"footer-link\",\"children\":\"Our Mission\"}],[\"$\",\"$L12\",null,{\"href\":\"/portfolio/company\",\"className\":\"footer-link\",\"children\":\"Portfolio\"}],[\"$\",\"$L12\",null,{\"href\":\"/team\",\"className\":\"footer-link\",\"children\":\"Our Team\"}],[\"$\",\"$L12\",null,{\"href\":\"/amplify-bio\",\"className\":\"footer-link\",\"children\":\"Amplify Bio\"}],[\"$\",\"$L12\",null,{\"href\":\"/privacy-policy\",\"className\":\"footer-link\",\"children\":\"Privacy\"}]]}],[\"$\",\"div\",null,{\"className\":\"footer-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-logo-spacer\",\"aria-hidden\":\"true\"}],[\"$\",\"$L12\",null,{\"href\":\"/writing\",\"className\":\"footer-link\",\"children\":\"Writing\"}],[\"$\",\"$L12\",null,{\"href\":\"/writing-fellowship\",\"className\":\"footer-link\",\"children\":\"Writing Fellowship\"}],[\"$\",\"$L12\",null,{\"href\":\"http://talent.amplifypartners.com/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"footer-link\",\"children\":\"Work at an Amplify company\"}],[\"$\",\"$L12\",null,{\"href\":\"/legal-for-startups\",\"className\":\"footer-link\",\"children\":\"Startup Legal Hub\"}],[\"$\",\"$L12\",null,{\"href\":\"/barrchives\",\"className\":\"footer-link\",\"children\":\"Barrchives Podcast\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"footer-bottom\",\"children\":[[\"$\",\"$L12\",null,{\"href\":\"https://x.com/AmplifyPartners\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"footer-link\",\"children\":\"X\"}],[\"$\",\"$L12\",null,{\"href\":\"https://www.linkedin.com/company/amplify-partners/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"footer-link\",\"children\":\"LinkedIn\"}],[\"$\",\"span\",null,{\"className\":\"footer-copyright\",\"children\":\"© 2025 Amplify Partners. All rights reserved.\"}]]}]]}]}]}]\n"])</script>
117<script>self.__next_f.push([1,"67:[\"$\",\"div\",null,{\"className\":\"writing-grid-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"writing-grid-title\",\"children\":\"exe.dev and the perfect little computer\"}],[\"$\",\"p\",null,{\"className\":\"writing-grid-desc\",\"children\":\"Infrastructure for the new agent age, and announcing our investment in exe.dev.\"}]]}]\n"])</script>
117<script>self.__next_f.push([1,"68:[\"$\",\"$L12\",\"JXmke4KmnpBv7IhAyOfaTW\",{\"href\":\"/blog-posts/every-token-everywhere-all-at-once\",\"className\":\"writing-grid-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"writing-grid-image\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=600\u0026auto=format\u0026q=75\",\"srcSet\":\"https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=300\u0026auto=format\u0026q=75 300w, https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=450\u0026auto=format\u0026q=75 450w, https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=600\u0026auto=format\u0026q=75 600w, https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=900\u0026auto=format\u0026q=75 900w, https://cdn.sanity.io/images/kcrxf13s/production/c13640b802ed586e1c02906990875b7de74b1516-1088x1016.png?w=1400\u0026auto=format\u0026q=75 1400w\",\"sizes\":\"(max-width: 767px) 100vw, 25vw\",\"alt\":\"Every token, everywhere, all at once\",\"loading\":\"lazy\"}],null]}],[\"$\",\"div\",null,{\"className\":\"writing-grid-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"writing-grid-title\",\"children\":\"Every token, everywhere, all at once\"}],[\"$\",\"p\",null,{\"className\":\"writing-grid-desc\",\"children\":\"The research and engineering history behind diffusion models for text and Inception's 10x speed leap over autoregressive models.\"}]]}]]}]\n"])</script>
117</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.