<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Payments Engineer Playbook]]></title><description><![CDATA[The only publication on Earth tailor-made for the builders of money software.]]></description><link>https://news.alvaroduran.com</link><image><url>https://substackcdn.com/image/fetch/$s_!8YPL!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png</url><title>The Payments Engineer Playbook</title><link>https://news.alvaroduran.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 20 Apr 2026 03:05:27 GMT</lastBuildDate><atom:link href="https://news.alvaroduran.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Alvaro Duran Barata]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[alvaroduran@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[alvaroduran@substack.com]]></itunes:email><itunes:name><![CDATA[Alvaro Duran]]></itunes:name></itunes:owner><itunes:author><![CDATA[Alvaro Duran]]></itunes:author><googleplay:owner><![CDATA[alvaroduran@substack.com]]></googleplay:owner><googleplay:email><![CDATA[alvaroduran@substack.com]]></googleplay:email><googleplay:author><![CDATA[Alvaro Duran]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Nobody Got Fired for Uber's $8 Million Ledger Mistake?]]></title><description><![CDATA[LedgerStore became a case study for DynamoDB, and system design publications keep praising it to this day. But the design was abandoned 3 years after it went live.]]></description><link>https://news.alvaroduran.com/p/nobody-got-fired-for-ubers-8-million</link><guid isPermaLink="false">https://news.alvaroduran.com/p/nobody-got-fired-for-ubers-8-million</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 15 Apr 2026 11:52:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!t-tn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t-tn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t-tn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!t-tn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!t-tn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!t-tn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t-tn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2673923,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/193967466?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t-tn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!t-tn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!t-tn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!t-tn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14a8fa04-8488-4534-a1a8-63158b84137a_1920x1080.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Uber has rewritten its ledger systems five times in the last ten years. And at least one of those rewrites, if not all, could have been avoided.</p><p>That&#8217;s because the root of each generation of money software at Uber was driven from bad incentives. Each started with a brand new proposal, approved as the definitive solution; in time, a fatal flaw was surfaced; and finally, a new proposal came along to replace it.</p><p>Every rewrite was someone&#8217;s promotion project.</p><p>At least one of them could&#8217;ve been avoided: the one where Uber moved to DynamoDB. In 2017, Uber launched their new payment platform on it, and the critical factor that everyone involved seemed to miss was that <em>DynamoDB is a consumption-priced database</em>.</p><p>You pay for every read, and every write.</p><p>With each trip generating multiple ledger entries, and Uber as a whole processing 15 million trips per day, it didn&#8217;t matter that DynamoDB was great because of high throughput at global scale. The proverbial bean counter should&#8217;ve stopped this madness from happening.</p><p>Within 2 years, the cost became prohibitely expensive:</p><blockquote><p>At Uber&#8217;s scale, DynamoDB became expensive. Hence, we started keeping only 12 weeks of data (i.e., hot data) in DynamoDB and started using Uber&#8217;s blobstore, TerraBlob, for older data (i.e., cold data). TerraBlob is similar to AWS S3. For a long-term solution, we wanted to use LSG.</p><p>&#8212; <a href="https://www.uber.com/us/en/blog/migrating-from-dynamodb-to-ledgerstore/">Migrating a Trillion Entries of Uber&#8217;s Ledger Data from DynamoDB to LedgerStore</a></p></blockquote><p>A redesign that gets replaced 2 years later is a catastrophe.</p><p>And yet, history remembers Uber&#8217;s ledger on top of DynamoDB as a masterpiece. As late as 2024, <a href="https://blog.bytebytego.com/p/trillions-of-indexes-how-ubers-ledgerstore">ByteByteGo has an article praising it</a>.</p><p>And that&#8217;s what concerns me. Uber&#8217;s design was a failure, but nobody seems to remember it that way.</p><p>That ends today.</p><p>I&#8217;m Alvaro Duran, and this is <em>The Payments Engineer Playbook</em>, <strong>the only newsletter on Earth tailor-made for engineers of money software</strong>. Every week, more than 2,000 subscribers from companies like Stripe, Coinbase and Modern Treasury get a dive deep on how to build software that moves money around. Not to pass interviews, but to <strong>do their job exceptionally well</strong>.</p><p>When money is on the line, stakes are sky high and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting insights from it.</p><p>Here&#8217;s what you can expect in today&#8217;s article:</p><ul><li><p>Why DynamoDB works for payments but breaks when you use it as a ledger</p></li><li><p>The napkin math that would have saved Uber millions of dollars</p></li><li><p>And one shocking conclusion from all of this</p></li></ul><p>Enough intro, let&#8217;s dive in.</p><h2>The Consistency Trap</h2><p>But first: is DynamoDB a bad choice for financial software?</p><p>Not necessarily. I&#8217;ve already <a href="https://news.alvaroduran.com/p/what-makes-dynamodb-a-good-database?utm_source=publication-search">covered DynamoDB as a potential data store for payment systems</a>, and it has many features that are worth it: zero-downtime migrations, low latency for a global audience, and built-in replication and failover.</p><p>If you&#8217;re accepting payments at scale around the globe, DynamoDB is a great choice.</p><p>It is because DynamoDB, while not enforcing full linearizability across partitions, can guarantee consistency within a Region. DynamoDB gives you strong consistency on a per-partition basis, but not across partitions &#8212; and for a global-scale payments system, that&#8217;s a trade-off worth making.</p><p>PostgreSQL can; DynamoDB cannot.</p><p>This is quite a property when it comes to payments, because they are independent from each other. You can interleave the authentication of one with the capture of another. There&#8217;s no need to maintain full linearizability across your data; causal consistency is enough. DynamoDB trades off the linearizability that you don&#8217;t actually need for all those nice features I mentioned earlier, which means that for large enterprises that serve customers all over the world in high volume and frequency, DynamoDB is better than PostgreSQL.</p><p>But a ledger isn&#8217;t a payments system.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;74364874-0ee5-4051-8a57-9ddff7c841cb&quot;,&quot;caption&quot;:&quot;You don&#8217;t know what a ledger is for.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;You Don't Know What a Ledger Is For&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-03-18T17:37:21.316Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!SsFp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/you-dont-know-what-a-ledger-is-for&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:191347022,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>A ledger cannot simply say &#8220;hey, this account and that account can be dealt with independently&#8221;. The scope of a ledger system is The World; a data store that can&#8217;t enforce full linearizability isn&#8217;t going to cut it, no matter how good at throughput and latency it is.</p><p>In other words: DynamoDB works well in payments because payments can give up global consistency for better availability. But ledgers can&#8217;t give up global consistency, even if that means they get worse availability.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;79f609a6-3796-460f-90ce-f9542dcf6863&quot;,&quot;caption&quot;:&quot;I find the expression &#8220;best tool for the job&#8221; disappointing.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Best Payments Database Is the One You Aren't Using&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-03-19T10:03:34.811Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c10b46dd-8362-4ba5-99d3-c731928763af_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/the-best-payments-database-is-the&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:159326319,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:2,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h2>The Napkin Math (Because Someone Has To Do It At Some Point)</h2><p><a href="https://aws.amazon.com/dynamodb/pricing/">DynamoDB capacity pricing</a> is based on two main models: Provisioned and On-demand. You can buy reads and writes in bulk, buy reads and writes when you need them, or both.</p><p>And then, there&#8217;s the storage and add-on features. For most, throughput is the real deal, and storage is just the cream on top of the invoice. But for data-heavy applications, such as ledgers, storage can become the dominant cost. That&#8217;s why reserving capacity is important, but it demands from you some predictive abilities, or at least making an educated guess about how much you&#8217;re going to need in advance, because you&#8217;re going to get a discount of more than 50 percent if you do it right.</p><p>If you use DynamoDB at scale, you need to do some napkin math.</p><p>In 2017, Uber was doing around 11 million trips a day. Assuming 10 entries per trip and 5 WCUs per entry<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>, that&#8217;s 550 million writes per day, and at $1.25 per million writes, that&#8217;s $687 per day.</p><p>$687 per day doesn&#8217;t sound like a lot. But <em>that&#8217;s $250K a year, just in writes</em>.</p><p>With 3x annual growth, the math is unsustainable: by year 3, we&#8217;re talking $2.25 million a year. I don&#8217;t have visibility into reads, indexes and global tables, but at Uber&#8217;s scale, the read side likely costs as much as the write side.</p><p>Which means that Uber was burning 5 million dollars in a freaking ledger.</p><p>Based on Uber&#8217;s data, by 2020 they had accumulated <a href="https://www.uber.com/us/en/blog/migrating-from-dynamodb-to-ledgerstore/">1.2 petabytes</a> of data. That, at $0.25 per gigabyte is 300K <em>per month</em>. And assuming the same 3x annual growth from 2017 to 2020 with a final size of 1.2 petabytes, that&#8217;s a cumulative cost of $3.5 million.</p><p>No wonder they switched to storing only the last 12 weeks of data in Dynamo, and stored the rest on premises.</p><p>Add the writes to the storage, and you&#8217;re looking at <strong>an 8 million dollar bill for a ledger</strong> that didn&#8217;t need to exist on DynamoDB in the first place.</p><h2>Somebody Should Have Been Fired For This</h2><p>What do you do with an 8 million dollar bill? You turn it into a case study.</p><p>Since 2020, Uber has migrated away from DynamoDB into their own internal ledger, called LSG (Ledger Store...Gateway?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>), built on top of their own internal distributed database called <a href="https://www.uber.com/es/en/blog/schemaless-sql-database/?uclick_id=09609eaf-c5d1-4c8d-9d33-3fd6ee101ed3">DocStore</a>:</p><blockquote><p>Docstore is a general-purpose multi-model database that provides a strict serializability consistency model on a partition level and can scale horizontally to serve high volume workloads. Features such as Transaction, Materialized View, Associations, and Change Data Capture combined with modeling flexibility and rich query support, significantly improve developer productivity, and reduce the time to market for new applications at Uber.</p><p>&#8212; <a href="https://www.uber.com/es/en/blog/schemaless-sql-database/?uclick_id=09609eaf-c5d1-4c8d-9d33-3fd6ee101ed3">Evolving Schemaless into a Distributed SQL Database</a></p></blockquote><p>Why not use an open-source alternative? Because Uber builds in-house. That&#8217;s what Uber does.</p><p>You could argue that DocStore provided the features they needed in a way no other alternative could. But <a href="https://www.uber.com/es/en/blog/dynamodb-to-docstore-migration/">you would be wrong!</a></p><blockquote><p>Our homegrown Docstore was a perfect match for our database requirements, except for Change Data Capture (CDC) a.k.a., streaming functionality. [...] We decided to build a streaming framework for Docstore (project name &#8220;Flux&#8221;) and used that for LedgerStore&#8217;s Manifest generation.</p><p>&#8212; <a href="https://www.uber.com/es/en/blog/dynamodb-to-docstore-migration/">How Uber Migrated Financial Data from DynamoDB to Docstore</a></p></blockquote><p>So let me get this straight: DynamoDB was a bad choice because it was expensive, which is something you could have figured out in advance. You then decided to move everything to an internal data store that had been built for something else<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>, that was available when you decided to build on top of DynamoDB. And that internal data store wasn&#8217;t good on its own, so you had to build a streaming framework to complete the migration.</p><p>And nobody got fired for this?</p><p>But nobody was optimizing for cost. They were optimizing for their next promotion. Each rewrite was a new proposal, a new design doc, a new system to put on a resume. The incentive was never to pick the boring, correct choice &#8212; it was to pick the complex, impressive one.</p><p>This isn&#8217;t Metaverse-levels of disaster, but relative to Uber&#8217;s scale, gets pretty close.</p><h2>Catastrophes Disguised as Case Studies</h2><p>What bothers me the most is this: by 2019, it was painfully obvious that Uber had made a terrible decision when they built LedgerStore on top of DynamoDB.</p><p>And yet, when AWS invited Uber to present at re:Invent 2019, they said yes.</p><p>I&#8217;ve <a href="https://news.alvaroduran.com/p/cringey-but-true-how-uber-tests-payments">written about Uber&#8217;s testing practices before</a>, and praised them for it &#8212; the article hit the front of Hacker News.</p><p>But let&#8217;s call a spade a spade: when you actively disguise an atrocious decision as a case study for a database technology, you&#8217;re no less fraudulent than one of those hedge fund managers talking their book on TV.</p><p>It is the technological equivalent of an arsonist writing a fire safety manual.</p><p>On a second level, there&#8217;s the publications that regurgitated this case study without looking at the full picture: <a href="https://blog.bytebytego.com/p/trillions-of-indexes-how-ubers-ledgerstore">ByteByteGo</a> has an article on LedgerStore praising &#8220;The cost savings from this migration&#8221; with yearly savings &#8220;exceeding $6 million due to reduced spend on DynamoDB&#8221;.</p><p>I can&#8217;t possibly comment on this.</p><p>When you&#8217;re tasked with building a system of any kind, not just ledgers, the technology is never enough. If you&#8217;re building a system that makes the economics of your company impossible, <em>you&#8217;re better off not building it</em>.</p><p>Focusing solely on the technical requirements, and not seeing the costs, is a disservice to the business that employs you.</p><p>Uber didn&#8217;t make a ledger mistake. It set the wrong incentives.</p><p>And it paid millions of dollars for it.</p><p>This was <em>The Payments Engineer Playbook</em>. I&#8217;ll see you next week.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/p/nobody-got-fired-for-ubers-8-million?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Feel free to share this article with a system designer about to make a costly mistake.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/p/nobody-got-fired-for-ubers-8-million?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.alvaroduran.com/p/nobody-got-fired-for-ubers-8-million?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>At the risk of making this article become an interview question for McKinsey, here are my assumptions: A single ride must generate entries for the rider charge, the driver payout, the commission, taxes, insurance, payment processor fees, currency conversions... the right order of magnitude seems to be 10. The 5 WCUs is way shakier, but makes the math easy enough without having to use 10 WCU, which would be too much capacity for a single entry.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><a href="https://www.uber.com/us/en/blog/migrating-from-dynamodb-to-ledgerstore/">One article</a> uses the LSG acronym, referencing <a href="https://www.uber.com/es/en/blog/dynamodb-to-docstore-migration/">another article</a> that doesn&#8217;t use it, and calls the new service LedgerStore, even though the name was already used for <a href="https://www.youtube.com/watch?v=iN6mhI5hFt4">the ledger built on top of DynamoDB</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Project Mezzanine, something so old (2014), the article no longer exists, and Wayback Machine didn&#8217;t archive it, but summarized <a href="https://www.uber.com/es/en/blog/schemaless-part-one-mysql-datastore/?uclick_id=09609eaf-c5d1-4c8d-9d33-3fd6ee101ed3">in this article</a> as &#8220;how we migrated Uber&#8217;s core trips data from a single Postgres instance&#8221;.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Ledger Transactions Don't Have to Be Atomic]]></title><description><![CDATA[Up-in-the-airness, and looking at ledgers through the lens of Sagas]]></description><link>https://news.alvaroduran.com/p/ledger-transactions-dont-have-to</link><guid isPermaLink="false">https://news.alvaroduran.com/p/ledger-transactions-dont-have-to</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 08 Apr 2026 15:33:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5ZRJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5ZRJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1433419,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/193553859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5ZRJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4929e989-6677-4280-9567-9850a6c58862_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Financial transactions aren&#8217;t database transactions.</p><p>Sure, they are <em>the inspiration for</em> database transactions. Turing Award-winner <a href="https://en.wikipedia.org/wiki/Jim_Gray_%28computer_scientist%29">Jim Gray</a> defined the standard measure of database transaction processing <a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2005/04/tr-2005-39.pdf">in terms of debits and credits</a>. They also follow a layman&#8217;s intuition that, when money leaves an account, it immediately arrives at another.</p><p>But that&#8217;s not what usually happens.</p><p>When you make a transfer from your bank account, those funds almost always <em>take some time to arrive</em>. It may be a few seconds, or a business day, or a whole month (if your bank is settling payments made to you in Brazil<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>). </p><p>What happens during that time is <em>treasury</em>. Whoever is holding the funds in transit can use them as a (very) short-term collateral. It can deposit them and earn some interest, it can use them to improve their cash-flow, it can do as they please, as long as the funds arrive where they&#8217;re supposed to, when they&#8217;re supposed to.</p><p>That&#8217;s not how database transactions work at all.</p><p>Nevertheless, modeling ledger transactions as atomic units can work fine. You wrap debits and credits, make sure they&#8217;re double-entry safe, and work under the assumption that all those entries are all pending, or all posted. And if something goes wrong, you archive those entries, knowing that you don&#8217;t have to do anything else. It&#8217;s clean, safe, and predictable.</p><p>You may very well do that; Stripe doesn&#8217;t.</p><p>Stripe processes billions of events per day through a system they call <a href="https://stripe.dev/blog/ledger-stripe-system-for-tracking-and-validating-money-movement">Ledger</a>. And in Ledger, they don&#8217;t assume that both sides of a money movement arrive together. After all, they don&#8217;t have to come from the same service, or in the same order. Each event is its own thing, with its own timestamp, source system, and moment of arrival; the only thing they share is an identifier.</p><p>That&#8217;s one limitation we already saw in stock markets: the risk of quickness versus completeness.</p><blockquote><p>This risk is central to stock market systems. In order to scale, multiple matching engines are running in parallel, processing massive amounts of buy and sell orders with low latency. As soon as two orders are crossed (a buy order matches a sell order for a given price), there&#8217;s an execution, and that information gets disseminated quickly and fairly.</p><p>But what if something <em>bad</em> happens? What if regulators step in and ask &#8220;what happened here <em>first</em>&#8221;?</p><p>Like, two buy orders for the same price get sent at the same time by two traders, but one gets crossed and the other doesn&#8217;t, or does at a higher price.</p><p>How can you be sure that you were fair to both orders? Which one is &#8220;technically first&#8221;?</p><p>That, weirdly enough, is an ambiguous question. Because you haven&#8217;t clarified which notion of time is being used to sort the orders.</p></blockquote><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;21a03b2e-3086-49e9-8e91-2f5c63f24caa&quot;,&quot;caption&quot;:&quot;I find Feynman&#8217;s quote that &#8220;nobody understands quantum mechanics&#8221; a bit silly.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;From Stock Markets To Ledgers, Part III: Time&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-11-19T11:17:05.154Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9363d0b6-94f3-4ab7-8fbe-e37880e0951b_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-f5f&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:179234238,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>It&#8217;s not that transactions in a ledger can&#8217;t be atomic; they can. It&#8217;s that you don&#8217;t need them to.</p><p>And the real question is: <strong>what are you missing out when you force transactions to be atomic?</strong></p><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>, <strong>the only newsletter on Earth tailor-made for engineers of money software</strong>. Every week, more than 2,000 subscribers from companies like Stripe, Coinbase and Modern Treasury get a dive deep on how to build software that moves money around. Not to pass interviews, but to <strong>do their job exceptionally well</strong>.</p><p>When money is on the line, stakes are sky high and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting insights from it.</p><p>Here&#8217;s what you can expect in today&#8217;s article:</p><ul><li><p>Why computer science trained us to think of transactions as atomic, and why that assumption breaks down in distributed ledgers</p></li><li><p>How Stripe&#8217;s Ledger posts individual entries instead of atomic transactions, and gets away with it</p></li><li><p>The trade-offs between atomic and non-atomic models, and when to pick which</p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/ledger-transactions-dont-have-to">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Luxury Playbook for Online Businesses]]></title><description><![CDATA[Introducing a different kind of playbook for a different kind of startup]]></description><link>https://news.alvaroduran.com/p/what-approach-to-building-an-online</link><guid isPermaLink="false">https://news.alvaroduran.com/p/what-approach-to-building-an-online</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 01 Apr 2026 09:00:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9azf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9azf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9azf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9azf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9azf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9azf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9azf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1501249,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/192743904?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9azf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9azf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9azf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9azf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57f62ac0-1a28-44f0-af5c-525c810083cf_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There&#8217;s a playbook for building successful companies that contradicts everything Paul Graham ever wrote.</p><p>Most business advice, what circulates on X, on Hacker News, and on Youtube, is modeled on <a href="https://paulgraham.com/articles.html">PG&#8217;s essays</a>. &#8220;A startup is a company designed to grow fast&#8221; (<a href="https://paulgraham.com/growth.html">Startup = Growth</a>); &#8220;the main value of whatever you launch with is as a pretext for engaging users&#8221;; &#8220;put a big piece of paper on your wall and every day plot the number of users&#8221; (<a href="https://paulgraham.com/13sentences.html">Startups in 13 Sentences</a>).</p><p>But the reality is that there are companies out there designed to grow slow, to launch late, and to deliberately restrict sales, that not only survive, but thrive.</p><p>The tech industry business model feels played out. Silicon Valley is both a place and <a href="https://en.wikipedia.org/wiki/Silicon_Valley_(TV_series)">a comedy show</a>. It has grown so much that we now have a term for the point when these platforms have gone too far: <strong>enshittification</strong>.</p><blockquote><p>Here is how platforms die: first, they are good to their users; then they abuse their users to make things better for their business customers; finally, they abuse those business customers to claw back all the value for themselves. Then, they die. I call this <em>enshittification</em>, and it is a seemingly inevitable consequence arising from the combination of the ease of changing how a platform allocates value, combined with the nature of a &#8220;two-sided market&#8221;, where a platform sits between buyers and sellers, hold each hostage to the other, raking off an ever-larger share of the value that passes between them.</p><p>&#8212; Cory Doctorow, <a href="https://www.wired.com/story/tiktok-platforms-cory-doctorow/">The &#8216;Enshittification&#8217; of TikTok</a></p></blockquote><p>But as far as I can tell, nobody has articulated an alternative way of building online businesses. There&#8217;s a collective aloofness in the industry about this: &#8220;sure, enshittification is bad,&#8221; they seem to say, &#8220;but it&#8217;s the only way to build a startup.&#8221;</p><p>PG&#8217;s advice is battle tested: if you ignore his essays, you&#8217;re probably going to fail. But I argue that you can do something else: <strong>not to ignore PG, but to deliberately disobey him</strong>.</p><p>Let us call that approach <em>The Luxury Playbook</em>.</p><p>I&#8217;m <a href="https://es.linkedin.com/in/alvaroduranbarata">Alvaro Duran</a>, and you know I like playbooks. This article of <em>The Payments Engineer Playbook</em>, however, isn&#8217;t about the technology that moves money around. Today is April Cools: <a href="https://www.aprilcools.club/">a celebration of what doesn&#8217;t fit the mold</a>, so instead, I&#8217;m discussing business strategy.</p><p>But not your usual MBA pablum.</p><p>Since most startup founders learn how to build businesses from tech adjacent media, they usually treat PG&#8217;s advice as gospel. Thus, alternative approaches are poorly understood and underutilized in tech, and <strong>for exactly that reason, can be a secret weapon </strong>for those who wield them.</p><p>This is tricky advice, though. Most investors won&#8217;t understand it either, so funding will be more difficult. This article therefore has two main goals:</p><ul><li><p>To make you understand The Luxury Playbook and apply it to your company.</p></li><li><p>To be a reference for investors who want to fund companies using this approach.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">To receive new articles and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Enough intro, let&#8217;s dive in.</p><h2>Make Something People Want, and then what?</h2><p>It is impossible to build a successful business if you don&#8217;t make something people want.</p><p>That&#8217;s why both luxury brands and startups are, initially, very much alike. They both reject building for &#8220;everyone&#8221;, because that&#8217;s the same as building for no one. And both are designed to amplify the intensity of their founders.</p><p>Startups call it &#8220;founder mode&#8221;. But luxury founders go as far as naming their companies after them: Ferrari, Herm&#232;s, Yves Saint Laurent, Beats by Dr. Dre.</p><p>So the startup and the luxury brand agree on the starting conditions: make something real, stay close to it, and find Product Market Fit.</p><p>What separates them is what happens next.</p><p>The startup, once PMF is achieved, treats it as a milestone. From then on, it&#8217;s all about growth, speed, and distribution. The luxury brand, however, treats PMF as a horizon. Startups leave product market fit behind; luxury brands never fully reach it.</p><h2>Luxury As The Anti-Playbook</h2><p>You probably don&#8217;t dream of buying a <a href="https://en.wikipedia.org/wiki/Birkin_bag">Birkin bag</a>.</p><p>But Samantha from <em>Sex and the City</em> can&#8217;t simply pay $4,000<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> to get it. It&#8217;s not that she can&#8217;t afford it; it&#8217;s that she has to wait 5 years.</p><div id="youtube2-GDKmQP_vDOY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;GDKmQP_vDOY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/GDKmQP_vDOY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Luxury seems to operate in a completely different universe: rising prices famously spur demand (economists call these <a href="https://en.wikipedia.org/wiki/Veblen_good">Veblen goods</a>), websites do not show the price of the items, and physical shops are empty most of the time, usually because there&#8217;s a bouncer at the door.</p><p>Paul Graham&#8217;s advice is widespread <em>because it makes sense</em>. People understand in their bones that the right product must win, that being close to the users is a good thing, and that charts going up and to the right are indications of valuable companies.</p><p>On the other hand, Ferrari cars are uncomfortable, way too expensive, and you have to wait a few years to get one. </p><p>And yet, every kid wants a red car for Christmas, and every man wants a red Ferrari when they turn 40.</p><h3>Different concepts of value</h3><p>Luxury brands aren&#8217;t built to maximize growth. But that doesn&#8217;t mean they don&#8217;t make sense. Growth, for startups, vindicates the product. It&#8217;s evidence that a lot of people value what they&#8217;re selling.</p><p>Luxury brands, however, maximize the desirability of the product. It is very much the way consultants sell their services, and it&#8217;s not a coincidence. Luxury products have delayed gratification built in, which justifies the price in the mind of the buyer.</p><p>Startups make something PEOPLE want; luxury brands make something people WANT.</p><h3>Move fast, or never break things</h3><p>A <a href="https://en.wikipedia.org/wiki/Cartier_Tank">Cartier Tank watch</a> you buy today is largely unchanged to the one introduced in 1918.</p><p>Startups iterate and move fast. Their founders understand that every iteration is both a product to sell and a quest for market data; continuous change refines it, adapts to the changing environment, and sharpens the model of its ideal customer.</p><p>Luxury sees frequent change as instability, and the product as a promise. The Rolex you&#8217;ve waited years to buy isn&#8217;t just for yourself; in time, your kid will grow up, and you&#8217;ll give it to them, as if to pass the baton.</p><p>Startups move fast; luxury brands make timeless things.</p><h3>Feedback as contamination</h3><p>Startups iterate quickly, because the point is to gather feedback.</p><p>Their founders have gaps in their knowledge. These gaps are hard to spot, because your brain papers over them with assumptions. It is best to find paying customers, and figure out as much as you can from them, invade their privacy if required, so that the product feels tailor made to the ideal customer.</p><p>Luxury brands could not care less about that.</p><p>Obsessive attention to users is anathema in luxury. The creative genius is the source of all product decisions, and customers have little to say about that. A luxury brand dominates their customers the way a parent dominates their kids: &#8220;this is what is best for them, even if they don&#8217;t like it at first.&#8221;</p><p>Startups build bottom-up; luxury brands build top-down </p><h3>The value of friction</h3><p>Stripe&#8217;s entire thesis was to accept payments &#8220;in 7 lines of code&#8221;.</p><p>Nascent companies often position themselves against a big, but well-known competitor. Inertia and status quo are their biggest barriers to growth, and friction is the conversion killer. Startups, therefore, iterate on the way users interact with their product and remove friction every step of the way.</p><p>You can&#8217;t have startups without User Experience.</p><p>Luxury, on the other hand, embraces friction. <strong>A dream is the negation of the obstacle to attain the desire</strong>, but the obstacle must be there, and it must hurt. It is precisely the fact that not many people can have what you&#8217;re buying that makes it valuable. It says something about why you&#8217;re not just like anybody else.</p><p>Startups search for a moat in their business; luxury brands build a moat in their products.</p><h2>What this means for online businesses</h2><p>The luxury logic can&#8217;t be confined just to handbags, watches and sports cars. </p><p>One of the reasons I&#8217;ve been obsessed with luxury recently is because I have a thesis of my own: that luxury can be applied to online businesses, and digital products.</p><p>Since in digital markets the marginal cost of selling a product is near zero, everything naturally drifts towards commoditization. Things are free to sell, so we might as well give you cat videos for free, and aggressively pay for it with ads.</p><p>But this can&#8217;t be the only way to build successful businesses online. <strong>I have a visceral reaction to pointless ads</strong>. So, I&#8217;ve been mulling over this idea of online businesses that eschew commoditization.</p><p>And that brought me to luxury.</p><p>Luxury is taste, and there isn&#8217;t anything as tasteless as advertising. Therefore, online luxury brands, if they exist, build on the ideas I&#8217;ve described:</p><ul><li><p>Maximize the desirability of the product, not the user count</p></li><li><p>Move slowly, and expand their offering only when it adds to the overall experience</p></li><li><p>Manufacture scarcity, even when the Internet has removed it</p></li></ul><p>And you know what? I believe they exist, even if they don&#8217;t call themselves luxury. In fact, I believe that the first luxury digital product that has ever existed was the Bloomberg Terminal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6qof!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6qof!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6qof!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6qof!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6qof!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6qof!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Getting Started - How do I use Bloomberg - Research Guides at Singapore ...&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Getting Started - How do I use Bloomberg - Research Guides at Singapore ..." title="Getting Started - How do I use Bloomberg - Research Guides at Singapore ..." srcset="https://substackcdn.com/image/fetch/$s_!6qof!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6qof!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6qof!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6qof!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6369cf1e-612d-47d9-b4a5-50b2fb8ef5ec_1024x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Terminal is an informational product, accessed online, that signals that your financial company means business, and that it&#8217;s profitable enough to afford the price tag: $30,000 per user per year.</p><p>Why so expensive? Well, why not? Wall Street pays a premium for high-quality business information, delivered instantly, and that&#8217;s become even more true over time.</p><p>The Terminal is complex, intentionally dense, not optimized for casual users. And yet, sales from the Terminal account for <a href="https://web.archive.org/web/20120105091916/http://www.wallstreetandtech.com/trading-technology/229400082">more than 85 percent of the company&#8217;s revenue</a>. The product itself is largely unchanged since its inception in 1982. Sure, &#8220;if it ain&#8217;t broke, don&#8217;t fix it.&#8221; But that sounds a lot like a Cartier watch.</p><p>Bloomberg made financial data feel like a professional credential. A founder following Paul Graham&#8217;s advice would have never invented the Bloomberg Terminal.</p><p>Superhuman is a more recent and interesting case. It launched with a wait-list, onboarding gatekeeping, and a high price for an email client.</p><p>That scarcity worked as a growth mechanism in the early days; everyone wanted in, precisely because not everyone could get in.</p><p>And yes, eventually Superhuman abandoned scarcity in order to keep growing. But that doesn&#8217;t invalidate the luxury approach. Superhuman simply abandoned it.</p><p>What does a digital product that remains faithful to The Luxury Playbook look like?</p><h2>Beyond Y Combinator</h2><p>Graham&#8217;s advice is not wrong. Making something people want is a valid way of building startups.</p><p>But I&#8217;m just tired of it. I&#8217;m tired of the same kind of CEO, selling their product onstage, sporting a black turtleneck in my memory, even when they actually dressed in something else.</p><p>I&#8217;m tired of a business model that puts the online user at odds with the company in order to build a business moat. Of treating users as the product, then customers as the product, then even the shareholders as the product.</p><p>The Startup Playbook feels played out at this point.</p><p>It&#8217;s time for companies to test if The Luxury Playbook makes sense for them. It&#8217;s not that the odds are in their favor anyway. So they might as well try something different.</p><blockquote><p>In a big company, you can do what all the other big companies are doing. But a startup can't do what all the other startups do. I don't think a lot of people realize this, even in startups.</p><p>&#8212; Paul Graham, <a href="https://paulgraham.com/avg.html">Beating the Averages</a></p></blockquote><p>The choice between the two playbooks is a choice about the kind of value you want to create in the world. The Luxury Playbook is the natural consequence of people <a href="https://www.are.na/editorial/notes-on-taste">taking taste more serious</a>ly.</p><p>Go make your taste a differentiator.</p><p>This is it for this week in The Payments Engineer Playbook. I&#8217;ll see you next week.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/p/what-approach-to-building-an-online?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading The Payments Engineer Playbook! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/p/what-approach-to-building-an-online?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.alvaroduran.com/p/what-approach-to-building-an-online?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><p><strong>PS</strong>: You&#8217;ve come this far, I have some secret to share with you.</p><p>I&#8217;ve written this article with a not-so-secret question in mind: <em>how can I turn my newsletter into a luxury brand?</em></p><p>And after writing it, I&#8217;m convinced that newsletters are the perfect playground for building luxury brands online. This, as I said, is somewhat uncharted territory, and that&#8217;s why the most well-known publications out there are funded with ads, not with paid subscribers.</p><p>In this new model, newsletter articles are more like bottles in a wine cellar. That&#8217;s why they&#8217;re paywalled: because subscribers are the newsletter&#8217;s patrons.</p><p>I&#8217;m deliberately turning <em>The Payments Engineer Playbook</em> into something much more exclusive and much more valuable for a smaller set of highly interested individuals. <em>The Playbook</em> is the only newsletter on Earth tailor-made for engineers who build money software, and I want to speak to those who want to do their job exceptionally well.</p><p>For that reason, I&#8217;m putting together a Flagship Membership.</p><p>It&#8217;s going to be expensive, and it&#8217;s going to demand work from you. But it&#8217;s going to be worth your money and your time.</p><p>If you&#8217;re interested, please <a href="https://forms.gle/QgLyWcgZ7cMjdXF58">write down your name and your email in this form</a>, and I&#8217;ll be in touch.</p><p>I&#8217;ll see you around.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>It&#8217;s around 45,000 nowadays.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Why Ledgers Are More Than Data Warehouses of Money]]></title><description><![CDATA[And why integrity, not double-entry, is the foundation of financial software]]></description><link>https://news.alvaroduran.com/p/why-ledgers-are-more-than-data-warehouses</link><guid isPermaLink="false">https://news.alvaroduran.com/p/why-ledgers-are-more-than-data-warehouses</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 25 Mar 2026 10:01:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vkW_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vkW_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vkW_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vkW_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vkW_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vkW_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vkW_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2076656,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/192044590?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vkW_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vkW_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vkW_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vkW_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf82565d-64cc-404c-b708-4a2b4f9b2698_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Data warehouses are poor implementations of ledgers.</p><p>You may think that, since all a ledger does sometimes is store money data, you can do away with all the complexity that ledgers require (namely, append-only tables) and use a data warehouse to store all your company&#8217;s financial data.</p><p>This is a mistake. The purpose of a ledger isn&#8217;t simply to store financial data.</p><p>A ledger that only stores data is doomed to fail because, in finance, the history is as important as the end state. When auditors and financial analysts look at a company&#8217;s finance, they want to make sure that the numbers don&#8217;t simply look good, but also tell a good story.</p><p>A bad history with a good look has a name: fraud.</p><p>The purpose of a ledger isn&#8217;t to store money data, but to store its history. We call that integrity: the ability to see what the ledger looked like, and query its accounts&#8217; balances, <em>now and at any point in the past</em>.</p><p>Actually, accountants often get this backwards: it is integrity that leads to double-entry, not the other way around.</p><p>Ledgers, first, have integrity, and then they enforce double-entry.</p><p>This is <em>The Payments Engineer Playbook</em>, <strong>the only newsletter on Earth tailor-made for engineers of money software</strong>. Every week, more than 2,000 subscribers from companies like Stripe, Coinbase and Modern Treasury get a dive deep on how to build software that moves money around. Not to pass interviews, but to <strong>do their job exceptionally well</strong>.</p><p>When money is on the line, stakes are sky high and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting insights from it.</p><p>Here&#8217;s what you can expect in today&#8217;s article:</p><ul><li><p>Why immutability is a tool to verify integrity</p></li><li><p>Why double entry is its natural consequence</p></li><li><p>How to achieve consistent historic reads even when you apply compensating entries</p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/why-ledgers-are-more-than-data-warehouses">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[You Don't Know What a Ledger Is For]]></title><description><![CDATA[You think you do, but you don't]]></description><link>https://news.alvaroduran.com/p/you-dont-know-what-a-ledger-is-for</link><guid isPermaLink="false">https://news.alvaroduran.com/p/you-dont-know-what-a-ledger-is-for</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 18 Mar 2026 17:37:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SsFp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SsFp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SsFp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SsFp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SsFp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SsFp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SsFp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1830216,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/191347022?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SsFp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SsFp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SsFp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SsFp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1893fc-b380-4027-9f46-ffab15ff1435_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You don&#8217;t know what a ledger is for.</p><p>You think you do, but you don&#8217;t. You&#8217;re aware that ledgers &#8220;keep accountants happy&#8221; and that &#8220;keep track of money across the business.&#8221; But your company has been doing just fine without one, so it&#8217;s not entirely clear why all of a sudden it would need one.</p><p>If you don&#8217;t know what a ledger is for, then having one is pointless.</p><p><strong>Not knowing what a ledger is for has disastrous consequences</strong>, whether you&#8217;re a manager or an executive. Managers who don&#8217;t know what ledgers are for can&#8217;t get their projects approved; executives who don&#8217;t know what ledgers are for build ineffective ones.</p><p>Vague awareness of what a ledger is for isn&#8217;t enough. Only when you know <em>precisely</em> how a ledger fits within the context of your business, the project gets approved, the engineers understand the goal, and the resulting system is very effective, unlocking new avenues of growth and better financial planning and analysis.</p><p>But you don&#8217;t know what a ledger is for.</p><p>Let&#8217;s change that.</p><p>This is <em>The Payments Engineer Playbook</em>, <strong>the only newsletter on Earth tailor-made for engineers of money software</strong>. Every week, more than 2,000 subscribers from companies like Stripe, Coinbase and Modern Treasury get a dive deep on how to build software that moves money around. Not to pass interviews, but to <strong>do their job exceptionally well</strong>.</p><p>When money is on the line, stakes are sky high and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting insights from it.</p><p>Here&#8217;s what you can expect in today&#8217;s article:</p><ul><li><p>Why ledgers suddenly go from pointless to top priority at many startups</p></li><li><p>The Accounting-Engineering tension at the core of every ledger</p></li><li><p>Why all ledgers have to fulfill at least one of 4 use cases</p></li><li><p>How to know if your company needs one</p></li></ul><p>Enough intro, let&#8217;s dive in.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">To receive new articles every week, become a subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Money is a Skill</h2><p>Money requires judgement, accuracy, and ownership.</p><p>Knowing how much you have in the bank is good, but not enough. The skill of money means acquiring the capacity to understand how money was used in the past, what insights to gather from that usage now, and how to make the most of what you have in the future.</p><p>In other words: the skill of money is about cash flow, budgeting and ROI. And these subskills are built incrementally.</p><p><strong>In the beginning, startups don&#8217;t require ledgers at all</strong>, because the only metric that matters is &#8220;the runway&#8221;. Just as airplanes need a runway of a minimum length to take off, startups must have enough cash to reach Product-Market Fit. The only money skill that matters at this stage is &#8220;how much time can I buy with the expenses I have right now?&#8221;.</p><p>The 70 percent of startups that don&#8217;t get to achieve PMF don&#8217;t get to build a ledger either.</p><p>The startups that live to tell the tale <strong>face a more sophisticated money problem</strong>: how to make the most with what they have. Past survival, every post-PMF startup&#8217;s CEO has to allocate their money in such a way that the company achieves explosive growth. Sales are no longer founder led, employees cannot simply &#8220;do things that don&#8217;t scale&#8221;, and engineers have to titrate up the software used to satisfy customers&#8217; needs.</p><p>Given the opportunities opened by product-market fit, the money skill that matters is &#8220;how much money do I allocate on each opportunity to achieve the most growth?&#8221;.</p><p>This is <strong>the part where, all of a sudden, knowing where the money goes, and what for, becomes necessary</strong>. And, depending on the complexity of the money flows, whether having everything on a spreadsheet will cut it, or whether a fully-fledged system is required.</p><p>What ends up happening is often a mix of the two: money inflows are tracked in a PSP dashboard, and the codebase preserves some data regarding transactions on their database, with some basic reporting built on top. This is good: the last thing you want is to waste everybody&#8217;s time getting strict with your finances at the expense of the startup&#8217;s actual goals.</p><p>However, there&#8217;s a point when startups can no longer ignore their finances anymore, because profit starts to become as important as revenue. Past a threshold, and every startup has it, ROI suddenly creeps into every conversation with investors.</p><p>Growth isn&#8217;t the only thing that matters. And, by then, if you don&#8217;t have a ledger in place, you&#8217;ll be falling behind.</p><h2>The Accounting - Engineer Tension</h2><p>At scale, there&#8217;s a tension between correctness and edge cases.</p><p>When a company starts handling a large volume of transactions, across multiple accounts, currencies, or business units, tracking balances manually with a spreadsheet becomes <strong>inefficient, error prone and opaque</strong>. At that point, a ledger system provides a structured, auditable way to record everything money-wise, ensuring accuracy, clarity and compliance.</p><p>Some companies never reach this stage though. That&#8217;s why most of us don&#8217;t need a ledger to manage our finances: there&#8217;s X amount in the bank, we know the outstanding credit card debt, and your precise portfolio balance doesn&#8217;t really matter in your daily life. In simpler businesses with few accounts and minimal volume, building a ledger is unwarranted.</p><p>If a spreadsheet is enough, <strong>use a spreadsheet</strong>. Ledger adoption is a matter of timing and scale.</p><p>Spreadsheets work because they&#8217;re simple, and simplicity is a great tool for correctness. Having your finances right in front of you is the best way to spot errors and missteps. It is not the lack of features what makes a spreadsheet inferior to a ledger system. Rather, it is the complexity and the scale of the business that makes a simple, but human dependent tool, unwieldy.</p><p>This is the tension between the Accounting and Engineering systems within the ledger: accounting is focused on correctness and precision; engineering is focused on scale and throughput. A ledger system provides (and demands) both. If manual work at low scale is sufficient, choose the spreadsheet.</p><p>This tension is also the biggest reason why ledgers don&#8217;t get adopted until late: its necessity is felt by accountants, not engineers.</p><h2>When to ditch the spreadsheet and build a ledger</h2><p>Here&#8217;s a good framework for deciding whether to build a ledger for your company:</p><p>1. <strong>Transaction Volume</strong>: Your company is approaching 1,000 transactions per month</p><p>2. <strong>Audit Readiness</strong>: Your company takes around 40 hours of man-work to close the book for the quarter.</p><p>3. <strong>Error rates</strong>: Your company consistently has at least 1 percent discrepancy rate (as in &#8220;1 in 100 transactions aren&#8217;t correct down to the cent).</p><p>4. <strong>Reconciliation Effort</strong>: Your company&#8217;s finance team spends 20 percent of their day in reconciliation.</p><p>5. <strong>Forecasted Growth</strong>: Your company&#8217;s transaction volume is projected to grow more than 50 percent in the next year.</p><p>These indicators are different manifestations of the same need, and often reinforce each other. They&#8217;re symptoms of scale, and signal that your company will soon need a more rigorous approach to its finances.</p><h2>A ledger isn&#8217;t an accounting tool</h2><p>Ledgers aren&#8217;t compliance checkboxes.</p><p>A ledger is a system that builds the skill of money in your company. In the beginning, it may look like a ledger answers the question &#8220;where did money go?&#8221;.</p><p>But the trick is that, when built correctly, a ledger ends up answering &#8220;where should money go next?&#8221;.</p><p>Startups that treat money as a skill build ledgers slightly before they need them. Their executives are aware of the usefulness of spreadsheets, but can look into the future and see the necessity for budgeting and ROI conversations.</p><p>In other words: they see beyond revenue growth, and the inevitable refocus to profit.</p><p>This is it for this week in <em>The Payments Engineer Playbook</em>. I&#8217;ll see you next week.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/p/you-dont-know-what-a-ledger-is-for?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">This article is public so feel free to share it with a colleague.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/p/you-dont-know-what-a-ledger-is-for?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.alvaroduran.com/p/you-dont-know-what-a-ledger-is-for?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[How to Explain Accounting To Payments Engineers]]></title><description><![CDATA[The limitations of the use of UML-like diagrams to model financial transactions]]></description><link>https://news.alvaroduran.com/p/how-to-explain-accounting-to-payments</link><guid isPermaLink="false">https://news.alvaroduran.com/p/how-to-explain-accounting-to-payments</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 11 Mar 2026 12:31:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xz12!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xz12!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xz12!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xz12!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xz12!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xz12!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xz12!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1930582,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/190601596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xz12!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xz12!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xz12!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xz12!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3b3d92a-5b9c-421f-94b6-3a96ea6f21bc_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m not a visual learner.</p><p>When I onboard into a new team, and I go through all the available documentation, the hardest part for me is understanding the system diagrams. These invariably consist of many boxes representing entities, or even individual services, linked to each other by interactions (HTTP or SSE requests, Kafka queues, you name it) represented by arrows. They always leave me more confused than before.</p><p>I&#8217;m not a visual learner. But the thing is: neither are you.</p><p>The biggest clue I have as to why is the fact that nobody seems to be bothered when I ask further clarifications about the diagram. Elaboration is expected. Despite the thoroughness of the engineer who spent all that time putting those diagrams together, it is never enough: a meeting to make those diagrams resonate is assumed to be needed.</p><p>Diagrams never seem to be enough. At best, they make meetings shorter. At worst, they waste everybody&#8217;s time.</p><h3>The  Cognitive Style of the Miro board</h3><p>Arrows and boxes aren&#8217;t completely useless, though.</p><p>They&#8217;re very effective for conveying flow, which is why they get used all the time by people already onboarded. Diagrams are good reminders for how components interact, aiding in high level system design. You&#8217;re able to see all at once.</p><p>But the more sophisticated, multivariate, and formal your task is, the more damaging the arrows and boxes become.</p><p>That description fits accounting like a glove: although cash is intuitive and simple, it is only a fraction of what a ledger has to keep track of. Accounting is the process of tracking ownership, not money, over time. And ownership isn&#8217;t concrete enough to be stored in boxes, and moved with arrows.</p><p>Arrows and boxes serve engineers when they map code flows. No argument there. But their visual emphasis is misleading when it comes to accounting.</p><p>This week, we&#8217;re looking at the limitations of arrows and boxes to explain accounting to engineers. I should know: a significant part of my job consists of clarifying accounting to engineers, from the very junior to the CTO. And, being an engineer myself, I initially used arrows and boxes to try to convey how to represent common use cases in accounting terms.</p><p>No longer. When you step into accounting, arrows and boxes are glorified squiggles.</p><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>. You&#8217;re already subscribed to free newsletters that &#8220;teach&#8221; you how to get a job as a software engineer.</p><p>But you don&#8217;t want to get a job; you already have one. What you want is to learn <strong>how to do your job exceptionally well</strong>. Especially as a payments engineer, where stakes are sky high, and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting insights from it.</p><p>Here&#8217;s what you can expect in today&#8217;s article:</p><ul><li><p>The shift from &#8220;moving money&#8221; to &#8220;transferring ownership&#8221;</p></li><li><p>Why using arrows to represent balance changes is confusing</p></li><li><p>The &#8220;arrow from the outside&#8221; misconception</p></li><li><p>And a better alternative to diagrams to explain accounting </p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/how-to-explain-accounting-to-payments">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Why Ledgers Must be Immutable]]></title><description><![CDATA[Ledgers are a &#8220;get your shit together&#8221; tool.]]></description><link>https://news.alvaroduran.com/p/why-ledgers-must-be-immutable</link><guid isPermaLink="false">https://news.alvaroduran.com/p/why-ledgers-must-be-immutable</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 04 Mar 2026 17:16:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!j6KV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j6KV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j6KV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j6KV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j6KV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j6KV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j6KV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2171647,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/189889349?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j6KV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j6KV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j6KV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j6KV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcc7a719-3e37-4557-9da4-7749d540a922_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ledgers are a &#8220;get your shit together&#8221; tool.</p><p>The goal isn&#8217;t to record account balances, or where money comes and goes. A ledger&#8217;s purpose is <strong>to make the company trustworthy</strong>. All the strictness and the weird complexity isn&#8217;t to make life harder for engineers, or to prevent software bugs, but to keep accountants and auditors happy.</p><p>If a ledger can&#8217;t be trusted, neither can the company.</p><p>In order to interact with your ledger, all the other services have to make sure that they&#8217;re sending the right data in the right way. Sure, you can create a translation layer between the other services and the ledger, but that defeats its purpose: a service that initiates, validates, or completes money movements must be, implicitly, as strict as the ledger.</p><p>And the way that strictness is enforced is with a ledger that tolerates no bullshit through its interfaces.</p><p>All the strictness and complexity isn&#8217;t there to slow you down. It&#8217;s to create consistency, traceability, and proof.</p><ul><li><p>Proof that every money movement is intentional</p></li><li><p>Proof that nothing can quietly disappear</p></li><li><p>Proof that what the company says in aggregate matches the collection of what every transaction whispers individually</p></li></ul><p>A ledger is discipline encoded in software.</p><p>This week, we&#8217;re looking at the most fundamental building block of ledgers: <strong>immutability</strong>. In most engineers&#8217; mind, it translates to &#8220;append-only&#8221;. And sure, append-only databases are immutable because you can&#8217;t UPDATE or DELETE rows on them.</p><p>But that&#8217;s only the beginning of what immutability means for a ledger.</p><p>Here&#8217;s what you can expect in today&#8217;s article:</p><ul><li><p>A practical definition of immutability for ledgers (and why you can have it with mutable databases)</p></li><li><p>The difference between Journaling and Posting ledger entries, and why it matters</p></li><li><p>Why git is a nice metaphor for what a ledger&#8217;s immutability is about</p></li><li><p>And for the database nerds, <em>read skews</em>, and why are relevant</p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/why-ledgers-must-be-immutable">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Accounting For Multi-Currency Ledgers]]></title><description><![CDATA[How to break the rules of money and get away with it]]></description><link>https://news.alvaroduran.com/p/accounting-for-multi-currency-ledgers</link><guid isPermaLink="false">https://news.alvaroduran.com/p/accounting-for-multi-currency-ledgers</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 25 Feb 2026 12:42:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pyQD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pyQD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pyQD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!pyQD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!pyQD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!pyQD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pyQD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2757167,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/189130381?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pyQD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!pyQD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!pyQD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!pyQD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e1d64e-edaa-4ca8-b3de-69f558f123ab_1920x1080.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The biggest obstacle to multi-currency ledgers is a misunderstanding of what the balance rules really are.</p><p>Currencies can&#8217;t be balanced; you&#8217;re comparing apples to oranges. In theory you can balance them using comprehensive exchange rate lists, so that currencies can be comparable. In practice, this never works: it&#8217;s like trying to join database tables by timestamps. <a href="https://duckdb.org/docs/stable/guides/sql_features/asof_join">ASOF joins</a> might work, but time series data is never aligned perfectly. Slight delays between cause and effect can make the reconciliation process unwieldy.</p><p>What we need is to reinterpret the balancing process when multiple currencies are in play.</p><p>I&#8217;ve hinted at this idea in <a href="https://news.alvaroduran.com/p/ledgers-of-catan">Ledgers of Catan</a>, but the reality is that virtually every company that deals with more than one currency compiles a list of exchange rates (or gets one from an external provider) and uses that as a &#8220;best effort&#8221; to reconcile numbers, accepting that a compensation will be needed at the end of the period.</p><p>They&#8217;re doing ASOF joins with their money.</p><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>. You&#8217;re already subscribed to free newsletters that &#8220;teach&#8221; you how to get a job as a software engineer.</p><p>But you don&#8217;t want to get a job; you already have one. What you want is to learn <strong>how to do your job exceptionally well</strong>. Especially as a payments engineer, where stakes are sky high, and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting insights from it.</p><p>In this article, I&#8217;m going to use a multi-currency wallet company as a practical example of how to balance multiple currencies without the strictness of the rule that &#8220;every transaction must be balanced&#8221; that every accountant uses in practice. This is dangerous territory: nobody does it.</p><p>But you&#8217;ll see that it can be done, and that it makes sense.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/accounting-for-multi-currency-ledgers">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Modern Treasury's Stablecoin Sandwich]]></title><description><![CDATA[After acquiring Beam, Modern Treasury wants to become the developer-first API for moving money in any form.]]></description><link>https://news.alvaroduran.com/p/modern-treasurys-stablecoin-sandwich</link><guid isPermaLink="false">https://news.alvaroduran.com/p/modern-treasurys-stablecoin-sandwich</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Thu, 19 Feb 2026 11:10:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uUsJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uUsJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uUsJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!uUsJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!uUsJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!uUsJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uUsJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4442211,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/188365037?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uUsJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!uUsJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!uUsJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!uUsJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1c06cb4-5139-4f32-915b-6c7f0f2b2250_1920x1080.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Stablecoins will have truly achieved adoption when we no longer need to talk about stablecoins.</p><p>When you pay with your credit card, the last thing you want to know about is the infrastructure involved in it. What you want to see is the green light, the check mark, the &#8220;Accepted&#8221; message. The end user of a card doesn&#8217;t even want to think about the payment at all.</p><p>The best payment experience is the one where you think that the money was instantly transferred. Even when it wasn&#8217;t.</p><p>The biggest promise that stablecoins are making is that it won&#8217;t change anything in the real world. That stablecoin&#8217;s actual goal isn&#8217;t to upend the payments industry, but to clean house. Ideally, using stablecoins to move money around might change the players, but leave everything else the same.</p><p>Sweeping clean the messy back, but leaving the facade alone.</p><p>On another level, the same thing has to happen to payments engineers. <strong>Stablecoins have to feel exactly like ACH, FedNow and Wire</strong>: battle-tested protocols for transferring money that, to some extent, are interchangeable.</p><p>So, <em>apropos</em> of their <a href="https://www.moderntreasury.com/newsroom/press-releases/modern-treasury-launches-payments">launching of a new integrated PSP for fiat and stablecoins</a>, I sat down with <a href="https://www.linkedin.com/in/samaarons/">Sam Aarons</a>, CTO and co-founder of Modern Treasury, and <a href="https://www.linkedin.com/in/dan-mottice/">Dan Mottice</a>, founder of Beam, and now Head of Stablecoins at Modern Treasury following <a href="https://fortune.com/crypto/2025/10/22/modern-treasury-beam-stablecoin-startup-acquisition-40-million-all-stock/">Beam&#8217;s acquisition</a>.</p><p>The team at Modern Treasury and I have been circling each other for quite some time since I published <a href="https://news.alvaroduran.com/p/how-modern-treasury-invented-event">an article on their approach to ledger authorization using events</a> a while ago.</p><p>Finally, the timing and the topic have aligned completely. As I told them, I wanted to have a conversation so that we could talk shop and have a good time, with complete freedom to write an article afterwards that was valuable to readers.</p><p>This article is the result of that conversation.</p><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>. It is <strong>the only newsletter on Earth tailor-made for engineers of money software</strong>. Every week, we investigate the technology that moves money around, so that you become a smarter, more skillful and more successful payments engineer.</p><p>And we do that by cutting off one sliver of it, and extracting insights from it.</p><p>This week&#8217;s article is the first interview-based article I&#8217;ve done in The Playbook. Following <a href="https://news.alvaroduran.com/p/stablecoins-for-skeptics">my skeptic take on stablecoins</a>, I sat with two of the engineering leaders of Modern Treasury to put my skepticism at ease, and see what the future holds for payments as this interesting piece of tech gains adoption.</p><p>Enough intro, let&#8217;s dive in.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">To receive new articles and support The Payments Engineer Playbook, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>A new form of liquidity</h2><p>Seems like I hit the nail on the head a couple of weeks back when I said that stablecoins were the international transfer method that you would&#8217;ve come up with <a href="https://news.alvaroduran.com/p/tigerbeetles-stablecoin-mistake">if you really didn&#8217;t want to deal with banks at all</a>:</p><blockquote><p>The good thing about crypto, and the reason why the transaction costs are so low, is because there&#8217;s nothing central about it. The recipient may be on the other side of the world, and they have the same level of access and visibility to it as you. It may be slow, but not SWIFT slow. And it&#8217;s way cheaper.</p><p>So what we probably need is something that&#8217;s crypto-like, to retain the global aspect of such a ledger, but without the volatility of cryptocurrencies. One way to do that is to have a blockchain that distributes the value of a predefined pool of resources, something that doesn&#8217;t change in value against a fiat currency.</p><p>So that&#8217;s what stablecoins really are. And they&#8217;re now facilitating <a href="https://www.mckinsey.com/industries/financial-services/our-insights/the-stable-door-opens-how-tokenized-cash-enables-next-gen-payments">$30bn of transactions daily</a>.</p></blockquote><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5894951a-d46b-4627-97ad-6101cb0823f7&quot;,&quot;caption&quot;:&quot;You&#8217;ve heard this one already: &#8220;skate where the puck is going, not where it has been&#8221;.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;TigerBeetle's Stablecoin Mistake&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-21T11:32:24.318Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8aa71a66-867a-4985-aaf7-d023ac567cf2_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/tigerbeetles-stablecoin-mistake&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:185167359,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>When I mentioned this to Sam and Dan, they both laughed. &#8220;We internally call that <strong>Stablecoin Sandwich</strong>.&#8221;</p><p>It&#8217;s so visual: you have fiat on both ends of the transfer, but there&#8217;s a black box in the middle, responsible for moving value from left to right, in which your Canadian dollars get converted to stablecoins by an on-ramp partner, and then into dollars by an off-ramp partner. Modern Treasury then can send those dollars with traditional rails like ACH or FedNow.</p><p>Fiat on both sides, with stablecoins in the middle.</p><p>The stablecoin sandwich is what bridges the crypto and the fiat world. It&#8217;s what makes stablecoins &#8220;feel&#8221; like fiat, even though they aren&#8217;t.</p><p>Cross-border payments have been clunky since time immemorial. SWIFT, or more generally <em>correspondent banking</em>, was devised when most &#8220;long distance&#8221; transfers were made by flying checks in bags all over the US. Western Union, or <em>money transmission</em>, was the first private approach to solve cross-border transfers, by setting up a massive enterprise with agents in multiple countries around the world on the ground.</p><p>Then came Wise, whose founders realized that money didn&#8217;t need to move cross-border at all. <em>Payment aggregation</em> simulates &#8220;sending money&#8221; by finding and crossing supply and demand for foreign currency within the country of origin and destination separately.</p><p>Still, there&#8217;s always a company in the middle. <strong>Unlike other cross-border transfer methods,</strong> <strong>stablecoins are interoperable</strong>: the blockchain is publicly accessible, and moving money on top can be done without the need for intermediaries.</p><p>Stablecoins are a bit more difficult to use, and that&#8217;s why you may benefit from using <em>liquidity providers</em> to make things easier. But you don&#8217;t need them, not in the sense that you need banks to send money via ACH.</p><p>And not needing a bank is precisely what Modern Treasury is aiming at.</p><h2>No bank? No problem</h2><p>It&#8217;s not that banks are a problem. It&#8217;s that dealing with them makes everything <a href="https://www.moderntreasury.com/newsroom/press-releases/modern-treasury-launches-payments">way slower</a>:</p><blockquote><p>Too many companies are held back by unreliable payments infrastructure and slow, complex bank integrations. With Payments, we&#8217;re giving teams a faster path to market than BaaS or securing their own bank sponsorships.</p><p>&#8212; Matt Marcus, CEO of Modern Treasury, on <a href="https://www.moderntreasury.com/newsroom/press-releases/modern-treasury-launches-payments">the Payments announcement</a></p></blockquote><p>MT&#8217;s strategy is to move from nothing to providing financial services as fast as possible. But <a href="https://news.alvaroduran.com/t/orchestration">payment orchestration</a> and <a href="https://news.alvaroduran.com/t/ledgers">ledgering</a> are just the technical steps; non-technical steps like bank partnerships and compliance with regulators across countries are also required.</p><p>There are two ways to approach this problem.</p><p>One is to Bring Your Own Bank, an acronym that I keep seeing in the fintech space even though it <a href="https://en.wikipedia.org/wiki/BYOB">was first used elsewhere</a>. With BYOB, you handle the non-technical side of things yourself, and bring a technical partner like Modern Treasury or a BaaS into the mix. BYOB sounds complex, but it&#8217;s sometimes the only option available. Most BaaS work exclusively with one bank, coupling your choice of BaaS with your choice of bank.</p><p>On the other hand, an integrated PSP handles everything for you. Modern Treasury&#8217;s PSP handles most of the paperwork and the banking relationships, and you deal with MT directly.</p><p>You trade control for go-to-market speed.</p><p>Problem is, in the beginning, you may not have support for some features, even when you&#8217;ve done everything you could to start. That&#8217;s where stablecoins come in. Since no bank is required, you could theoretically start transferring value in stablecoins right away.</p><p>This was the missing piece in the PSP puzzle that is now available thanks to stablecoins. But there are more things you can do with them.</p><h2>The Flow and The Meta-flow of Funds</h2><p>Yes, cryptocurrencies were built on speculative use cases. But that&#8217;s a boring form of skepticism.</p><p>Given where crypto has evolved to, stablecoins represent a maturing phase of decentralized finance. One that acknowledges that fiat isn&#8217;t going away, and attempts to bridge some of the functionality that&#8217;s useful about blockchain (decentralization, trust-less value transfer) to the world of the normies.</p><p>There&#8217;s the flow of funds, and there&#8217;s the meta-flow: moving more of fiat into usable crypto.</p><ul><li><p>Bank accounts become crypto wallets that store stablecoins. You can now hoard dollars, even when you can&#8217;t hold them.</p></li><li><p>Treasury management becomes &#8220;hybridized&#8221;: moving actual dollars may be difficult, or incur taxes, but moving stablecoins isn&#8217;t.</p></li></ul><p>Yes, there was a time when private keys were much more exposed and easier to steal; the industry is now aware of this problem. Blockchain is trustless, but you can trust someone with your keys and never have to fend off hackers anymore.</p><p>That&#8217;s not the thing you must be alert about stablecoins.</p><h2>The Skeptic&#8217;s Last Question</h2><div id="youtube2-uBiY2fMeM1U" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;uBiY2fMeM1U&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/uBiY2fMeM1U?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Stablecoins are cheaper and faster than fiat. They&#8217;re not volatile like Bitcoin, and are even programmable, so you don&#8217;t have to deal with lawyers, but with transparent code.</p><p>So what&#8217;s the catch?</p><p>In what way are stablecoins inferior to the traditional way of moving money across countries, that accounts for more than 99 percent of the total flow of funds right now?</p><p>The answer is: usability.</p><p>&#8220;Stablecoins are unforgiving&#8221; is how Sam put it. There&#8217;s no takesies-backesies in the crypto world. That&#8217;s what removes banks from the equation. In ACH, you <a href="https://www.moderntreasury.com/journal/what-happens-when-you-ach-a-dead-person">get your funds returned when you send money to a dead person</a>; in crypto, <strong>you have to ensure that everything is correct in advance</strong>, because once you hit Pay, there&#8217;s no going back.</p><p>In a world where the rules are written in code, comments are for information, not control.</p><p>&#8220;The plus side of this&#8221;, Sam followed up, &#8220;is that some players may like this trade-off, which wasn&#8217;t available for them before&#8221;.</p><h2>Stablecoins are consistent payments experience</h2><p>For crypto to become usable, developers must not have to use a different set of APIs to deal with them.</p><p>This echoes an idea that I&#8217;ve continually come back to: the mistake that <a href="https://news.alvaroduran.com/p/stripe-made-the-obvious-choice-when">Stripe made when they assumed that all payments were card payments</a>:</p><blockquote><p>Payments are deceptive.</p><p>Representing a Payment with a single object sounds simple, but that&#8217;s because <strong>you&#8217;re moving the complexity elsewhere</strong>. The Token/Charge architecture was the obvious choice, but it made integrating other payment methods way more difficult.</p><p>And that could work if all you need is credit card payments. But that is less likely than it used to be.</p><p>In time, Stripe&#8217;s engineers understood that 7 lines of code wasn&#8217;t everything. They <strong>looked at the problem as a whole</strong>, and asked how they could make adding new payment methods easier.</p><p>That, in the end, is what&#8217;s <strong>making developers more productive</strong>. Which was Stripe&#8217;s goal all along.</p></blockquote><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5b318942-6ac0-4ca5-ba5f-6d188e0ab664&quot;,&quot;caption&quot;:&quot;Stripe spent 2 years rewriting their payments API. They realized they had made a big mistake, but had the deep pockets to fix it.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Stripe Made The Obvious Choice When Building Its Payments API. It Took Two Years To Fix It.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-07-31T07:00:47.256Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1abc744d-caf1-45f7-8bdc-9cf897956c3e_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/stripe-made-the-obvious-choice-when&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:147162897,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:18,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>What MT is trying to do here is something similar: build an API that&#8217;s <strong>consistent across all forms of money transfer</strong>.</p><p>Sure, faster go-to-market is a good thing for many companies. But the real boost is in the technical integration and expansion of those who are interested in crypto, but deeply embedded into fiat.</p><p>How can they test the waters with minimal developer effort?</p><p>Major businesses, even when curious, aren&#8217;t going to deploy a team of engineers just to see if stablecoins are hype or not. They want to get their feet wet, and therefore won&#8217;t commit to it unless it requires almost no effort to do so.</p><p>Such an approach is only possible when <strong>both fiat and crypto use the same set of endpoints to operate</strong>.</p><p>Thanks to Sam Aarons and Dan Mottice for taking the time to answer my questions. You can find more about Modern Treasury&#8217;s Integrated PSP for Fiat and Stablecoins <a href="https://www.moderntreasury.com/newsroom/press-releases/modern-treasury-launches-payments">here</a>.</p><p>That&#8217;s it for this week in <em>The Payments Engineer Playbook</em>. I&#8217;ll see you next week, on Wednesday, as usual.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">To receive new articles and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Stablecoins for Skeptics]]></title><description><![CDATA[The last crazy idea from cryptoland may be crazy enough to work]]></description><link>https://news.alvaroduran.com/p/stablecoins-for-skeptics</link><guid isPermaLink="false">https://news.alvaroduran.com/p/stablecoins-for-skeptics</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 11 Feb 2026 15:11:47 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a44f81ad-77d9-4947-8b11-7951e39f9000_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oL7Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oL7Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oL7Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oL7Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oL7Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oL7Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2240662,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/187378245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oL7Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oL7Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oL7Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oL7Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F822bc8a1-3d6f-45c2-885d-61d73a9a54f1_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Stablecoins are the ultimate ledger.</p><p>A tool that moves money globally, quickly and cheaply. A transfer irrevocably linked to a piece of software that serves as the payment contract. No lawyers, no bankers, no humans inbetween two parties exchanging value for goods and services.</p><p><strong>Like that&#8217;s ever gonna happen.</strong></p><p>Reality is much more surprising and interesting than a completely human-less money movement infrastructure can model. Human beings, even bankers and lawyers, will always be involved, because <strong>money is a game of trust</strong>.</p><p>And trust is inherently human.</p><p>A game in which trust is fundamental will always have humans at the center. You can have decentralized transfers; but you can&#8217;t have decentralized finance.</p><p>Stablecoins are the latest attempt at bridging the world of crypto, with programmable money, full transparency and non-reversibility, and the real world, with taxes, fraud and honest mistakes.</p><p>But they&#8217;re not going to deliver on a machine-only finance.</p><p>In fact, stablecoin isn&#8217;t meant to do that. I&#8217;d say that <strong>stablecoin aims at implementing as much as possible of the crypto world in a way that&#8217;s practical in the fiat one</strong>, but no more.</p><p>Which is probably the best move possible.</p><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>. You&#8217;re already subscribed to free newsletters that &#8220;teach&#8221; you how to get a job as a software engineer.</p><p>But you don&#8217;t want to get a job; you already have one. What you want is to learn <strong>how to get promoted</strong>. Especially as a payments engineer, where stakes are sky high, and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting tactics from it.</p><p>In this article, I&#8217;m going to assume that you&#8217;re as skeptic about crypto as I am. Sure, I&#8217;ve bought Bitcoin in the past (who hasn&#8217;t?). But it&#8217;s been 18 years since <a href="https://bitcoin.org/en/bitcoin-paper">the Bitcoin paper</a> was published, and since then, it has failed to live up to the expectations.</p><p>Plus, there&#8217;s also the grift, the scams and the speculation.</p><p>So what I&#8217;m going to do today is to explain what stablecoins are, while being realistic about what can be done with them. You don&#8217;t have to trust me, or agree with me. But here&#8217;s the thing: that&#8217;s the whole point of crypto anyway.</p><p>Here&#8217;s what you can expect below:</p><ul><li><p>What makes stablecoins fast, cheap, global, and programmable</p></li><li><p>What&#8217;s <em>stable</em> about them</p></li><li><p>Where do they fit in the history of moving money, both domestically and internationally</p></li><li><p>What can we do with stablecoins that we wouldn&#8217;t be able to do otherwise</p></li></ul><p>Stablecoins aren&#8217;t going to give us a world without bankers and lawyers. What they&#8217;re going to give us, if they become a significant chunk of the money flow worldwide, is a different kind of bankers and lawyers.</p><p>More cerebral, more technical, and less sales-y.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.alvaroduran.com/subscribe?"><span>Subscribe now</span></a></p><h2>Tech-savvy lawyers and bankers</h2><p>Stablecoin is programmable money.</p><p>They&#8217;re digital tokens designed to maintain a 1:1 value relationship with an established asset, typically the US dollar. The two largest are Tether (codename USDT, with $184 billion <a href="https://tether.to/en/transparency/?tab=usdt">as I&#8217;m writing these words</a>) and USDCoin (USDC, with $73 billion <a href="https://www.usdc.com/">as of right now</a>).</p><p>Which sounds like a lot except both combined are roughly one tenth of a percent of <a href="https://www.bcg.com/assets/2026/white-paper-stablecoin-payments-truth-behind-numbers.pdf">the $200 trillion global payments market</a>. Still, adoption is growing, but unlike cryptocurrencies, <strong>stablecoins&#8217; adoption is driven not by speculation, but by practical usage</strong>.</p><p>And it&#8217;s the stable side of things that <a href="https://news.alvaroduran.com/p/tigerbeetles-stablecoin-mistake">makes a dramatic improvement over &#8220;classic&#8221; cryptocurrencies</a>:</p><blockquote><p>How would you send somebody money internationally <em>if you couldn&#8217;t use a bank</em>?</p><p>Cash over email, or over <a href="https://tvtropes.org/pmwiki/pmwiki.php/Main/HandcuffedBriefcase">a handcuffed briefcase</a> might work, but you run the risk that it gets lost. No problem; you get creative. How about you buy shares of Apple, and instruct the recipient to short sell them, and then you can just transfer those shares to them?</p><p>That works. That&#8217;s actually brilliant. But the transaction costs are probably too high: there&#8217;s the difference between the buy and sell price, the broker&#8217;s commissions, etc.</p><p>Let&#8217;s go crypto, then: you buy some Bitcoins, they sell a bit of theirs, and then you can transfer those Bitcoins to them. The transaction costs are somewhat fixed, and low, so this is an improvement. But Bitcoin&#8217;s price is much, much more volatile than Apple&#8217;s. The risk of having to offset the price difference makes this approach unwieldy at scale.</p><p>The good thing about crypto, and the reason why the transaction costs are so low, is because there&#8217;s nothing central about it. The recipient may be on the other side of the world, and they have the same level of access and visibility to it as you. It may be slow, but not SWIFT slow. And it&#8217;s way cheaper.</p><p>So what we probably need is something that&#8217;s crypto-like, to retain the global aspect of such a ledger, but without the volatility of crypto currencies. One way to do that is to have a blockchain that distributes the value of a predefined pool of resources, something that doesn&#8217;t change in value against a fiat currency.</p><p>So that&#8217;s what stablecoins really are.</p></blockquote><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d48cf8af-1a4b-40cf-a57e-c3bcbbf57f0e&quot;,&quot;caption&quot;:&quot;You&#8217;ve heard this one already: &#8220;skate where the puck is going, not where it has been&#8221;.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;TigerBeetle's Stablecoin Mistake&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-21T11:32:24.318Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8aa71a66-867a-4985-aaf7-d023ac567cf2_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/tigerbeetles-stablecoin-mistake&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:185167359,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Stablecoins are programmable because they&#8217;re <strong>fiat represented in a crypto form</strong>. Unlike cash, and also unlike money deposited in a bank, stablecoins can be controlled by code.</p><p>You can write <a href="https://en.wikipedia.org/wiki/Smart_contract">smart contracts</a> that controls whether money can be moved, or is forcefully moved. Sure, <a href="https://law.mit.edu/pub/interpretingtherulesofcode/release/4">this opens a can of worms</a>: we&#8217;re opening the door to strict adherence to rules, no matter how absurd or immoral.</p><p>But it also opens the door to a few interesting products that we&#8217;ve never had access to, because of the number of intermediaries involved in moving money in the fiat world:</p><ul><li><p><strong>Conditional payments</strong>: Insurance payouts come to mind, but also gambling. There&#8217;s an active community of people "predicting&#8221; outcomes at sites like <a href="https://polymarket.com/">Polymarket</a>, and stablecoins are often used to enforce that the money is paid appropriately.</p></li><li><p><strong>Lending</strong>: For the longest time, we&#8217;ve needed banks to intermediate between lenders (who lend short time with their deposits) and borrowers (who borrow long with their loans). But we can now aggregate pools of money into stablecoins, and securitize a loan among many lenders, who earn interest on a pro-rata basis.</p></li><li><p><strong>Compliance</strong>: Programmable money means money that can blacklist certain senders or receivers, bringing KYC to a whole new level.</p></li></ul><p>This list isn&#8217;t exhaustive, by the way. Crazier use cases will probably spring up as stablecoins gain further adoption.</p><h2>Stablecoins are Triffin Stable</h2><p>The world unpegged from the gold standard in the 1970s, and we&#8217;ve tried to go back to it ever since.</p><p>And the reason the US abandoned the gold standard was because at the core of every currency used for international trade resides a paradox that no one has really figured out how to solve.</p><p>Here&#8217;s the issue: gold is impractical to move, for obvious reasons. A much better alternative is to have some pointer to it that&#8217;s easier to move, so that everyone can trade knowing that what they&#8217;re really exchanging isn&#8217;t the pointer itself, but the underlying gold it represents.</p><p>After World War II, due to the fact that virtually all the gold was in the US, the world came to accept dollars (which were pegged to gold) as that pointer.</p><p>Now, the problem is that, in order to supply the world with enough dollars so that they can trade with each other, the US had to incur trade deficits <em>consistently</em>. There had to be a net outflow of dollars so that everyone could participate in the new era of globalization.</p><p>At this point, the US government had an incentive to issue dollars, even if they weren&#8217;t really backed by gold, because the expectation was that a) nobody really needed the gold, and b) everybody trusted that if they went to the Fed, they could get gold in exchange for their dollars.</p><p>As time went by, that consistent trade deficit bubbled up into a sudden crisis of confidence. Both a) and b) suddenly weren&#8217;t true anymore. And like a bank run, everyone tried to get their dollars exchanged for gold.</p><p>And that&#8217;s how the gold standard was abandoned.</p><p>The story has happened before (<a href="https://www.forumancientcoins.com/historia/de-basement/economy.html">with the Roman empire</a>) and after (<a href="https://en.wikipedia.org/wiki/Convertibility_plan">with the Argentinian peso</a>). My point is that something similar may happen with stablecoins as well.</p><p>Let me explain.</p><p>There are two ways in which stablecoins are stable. One could be called <em>price-explicit</em>, the other <em>price-implicit</em>.</p><p>Tether and USD Coin are price-stable. They&#8217;re accepted as if they were dollars, and in a legal sense, <a href="https://www.paulhastings.com/insights/crypto-policy-tracker/the-genius-act-a-comprehensive-guide-to-us-stablecoin-regulation">they are</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. The price is enforced <em>explicitly</em>. Then, there are all the smaller stablecoins issued as staged, close loop wallets, which are pointers to a pool that&#8217;s dynamic in nature, but that maintains a 1:1 relationship because the tokens minted and burned correspond to the amounts of dollars deposited and withdrawn. They price is enforced <em>implicitly</em>.</p><p>Staged, closed loop wallets have existed for a while now, and Starbucks is the business that has made the most of them. As long as you have a tight ledger that controls that <a href="https://news.alvaroduran.com/p/engineers-do-not-get-to-make-startup">there are no cents dancing around</a>, you&#8217;re fine. But history says otherwise about currencies that keep a 1:1 relationship to another asset by the sheer force of the law.</p><blockquote><p>A peg is a story about why two things which are not the same are, in fact, similar enough to be treated interchangeably.</p><p>&#8212; Patrick McKenzie, <a href="https://www.bitsaboutmoney.com/archive/stablecoin-mechanisms-and-use-cases/">Stablecoin mechanisms and use cases</a></p></blockquote><p>The paradox between having to supply the world with a currency for trade purposes, and the loss of confidence on that currency because of the trade deficits required to do so is called <a href="https://en.wikipedia.org/wiki/Triffin_dilemma">the Triffin Dilemma</a>.</p><p>As stablecoins gain adoption and become a significant chunk of money movement worldwide, storing a sufficient amount of dollars to back them up will be increasingly difficult.</p><p>By then, we will have to come up with a contingency plan. Or else.</p><h2>I&#8217;m so excited about crypto</h2><p>Nevertheless, my enthusiasm outweighs my skepticism.</p><p>True, there&#8217;s risk in assuming that we won&#8217;t find problems as stablecoins start running more of the international trade show.</p><p>But there&#8217;s a lot to be said about moving smaller amounts of money around without the need to deal with banks. There are simply too many intermediaries going on. Sure, they&#8217;re doing work that&#8217;s necessary. But that&#8217;s only because the current design makes them so.</p><p>Stablecoins can change all that overnight.</p><p>I&#8217;m skeptical about stablecoins conquering the world. Cash isn&#8217;t going away, and neither is SWIFT. But I&#8217;m hopeful about stablecoins being tremendously useful for a huge chunk of the day to day economy.</p><p>You can&#8217;t have decentralized finance. But you can have decentralized transfers.</p><p>That&#8217;s it for this week in <em>The Payments Engineer Playbook</em>. I&#8217;ll see you next week (on Thursday).</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/p/stablecoins-for-skeptics?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Feel free to share this article with a stablecoin enthusiast.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/p/stablecoins-for-skeptics?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.alvaroduran.com/p/stablecoins-for-skeptics?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Don&#8217;t ask me, I&#8217;m not a lawyer.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Ledgers of Catan]]></title><description><![CDATA[The future of accounting is commodity accounting.]]></description><link>https://news.alvaroduran.com/p/ledgers-of-catan</link><guid isPermaLink="false">https://news.alvaroduran.com/p/ledgers-of-catan</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 04 Feb 2026 14:17:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bba52e70-0c34-45f8-ac35-ccd603b40776_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dxKg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dxKg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dxKg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dxKg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dxKg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dxKg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1685079,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/186722487?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dxKg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dxKg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dxKg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dxKg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3867d55d-ed89-4bed-95ec-1015efeb309e_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Double-entry accounting is still uncharted territory.</p><p>On the one hand, it&#8217;s ancient technology, older than the concept of negative numbers. But the expectations of what a ledger needs to do are more ambitious; what was OK to do monthly now needs to be done daily, or in real time.</p><p>Ledgers have outgrown their medieval assumptions.</p><p>It is clear that one of those assumptions is the necessity to consolidate all money movements into a single currency of reference. Traditionalists have extended the old model by layering ledgers: a single system gets partitioned into a USD subledger, a EUR subledger, and so on.</p><p>The expectation is that transactions between two of those layers is rare, and manual reconciliation between the two is a necessary evil to keep each layer simple.</p><p>That assumption is also breaking down, quickly:</p><blockquote><p>Even startups and small businesses have the same problems as multinationals now, but needing far less scale and therefore much more granularity.</p><ul><li><p>Being remote means now being global. Clients are everywhere, and so are providers and employees.</p></li><li><p>Banking apps not only handle deposits, but also investments in stocks, payments when we travel abroad, crypto, even angel investing.</p></li><li><p>To the extent that the USD is no longer the only reserve currency, businesses that operate globally need cash stored in more than just dollars, all fluctuating against each other.</p></li></ul></blockquote><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;47dfa2b1-8338-4fa7-b013-1d30acf1dfad&quot;,&quot;caption&quot;:&quot;You&#8217;ve heard this one already: &#8220;skate where the puck is going, not where it has been&#8221;.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;TigerBeetle's Stablecoin Mistake&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-21T11:32:24.318Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8aa71a66-867a-4985-aaf7-d023ac567cf2_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/tigerbeetles-stablecoin-mistake&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:185167359,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>In some sense, this article is the practical follow up to the point I made at <a href="https://news.alvaroduran.com/p/tigerbeetles-stablecoin-mistake">TigerBeetle&#8217;s Stablecoin Mistake</a>: a 1000x faster ledger is something great to have, but the real deal is the business on top.</p><p>This week, I&#8217;m going to push the boundaries of what can be done with modern accounting. <em>What can I do when I have unlimited processing power?</em></p><p>And in order to do that, I&#8217;m going to play <a href="https://en.wikipedia.org/wiki/Catan">The Settlers of Catan</a>.</p><p>In Catan, players represent settlers establishing on a fictional, hex-split island, and build settlements, cities and roads by spending resources (wool, grain, lumber, brick, and ore). They obtain these resources on each player&#8217;s turn, when they roll two six-sided dice to determine which hexes produce resources.</p><p>If you have a settlement or a city on one of those hexes&#8217; corners, you get resources. If not, you don&#8217;t.</p><p>There&#8217;s also the chance that you roll a 7, and you get to place a burglar on one of those hexes, steal another player&#8217;s card and &#8220;block&#8221; that hex, which will no longer produce resources until the robber is moved again.</p><p>It&#8217;s the kind of game where you win by pissing off everybody else.</p><div id="youtube2-ce3_byllJHE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ce3_byllJHE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ce3_byllJHE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>So why on Earth is Catan accounting even worth it?</p><p>Because there&#8217;s no money. All you can do is barter. It&#8217;s the perfect scenario to test modern accounting, in a familiar setting.</p><p>And see where it breaks.</p><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>. You&#8217;re already subscribed to free newsletters that &#8220;teach&#8221; you how to get a job as a software engineer.</p><p>But you don&#8217;t want to get a job; you already have one. What you want is to learn <strong>how to get promoted</strong>. Especially as a payments engineer, where stakes are sky high, and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting tactics from it.</p><p>In this article, we&#8217;re going to play Catan, ledger in hand. I&#8217;ll walk you through most of the operations in the game (minus the special cards), which will help us see:</p><ul><li><p>How to balance wool and lumber, and the perils of fair value accounting.</p></li><li><p>Contra-accounts and off-balance-sheet derivatives (yes, really).</p></li><li><p>What it all means for multi-currency ledgers.</p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/ledgers-of-catan">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Why Low Cardinality Accounts Are A Ledger's Bottleneck]]></title><description><![CDATA[You can build a ledger that&#8217;s blazingly fast with a slow programming language.]]></description><link>https://news.alvaroduran.com/p/why-low-cardinality-accounts-are</link><guid isPermaLink="false">https://news.alvaroduran.com/p/why-low-cardinality-accounts-are</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 28 Jan 2026 11:23:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/31e17eeb-fbf4-456a-ab07-b227160cb641_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R5r6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R5r6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!R5r6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!R5r6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!R5r6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R5r6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1155795,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/185976017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R5r6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!R5r6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!R5r6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!R5r6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9033e9ea-ba3b-4176-8403-a4deaac7d12c_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can build a ledger that&#8217;s blazingly fast with a slow programming language.</p><p>The trick is to realize that improving the overall performance of the ledger doesn&#8217;t really move the needle. What moves the needle is preventing your biggest bottleneck from slowing everything down.</p><p>A particular kind of obstacle placed in a particular place in the ledger can make any ledger glacially slow, even if it&#8217;s written in C++.</p><p>So where&#8217;s that bottleneck?</p><p>Every time you add a new transaction, most ledgers lock for writes the accounts involved. &#8220;That&#8217;s the only way&#8221;, you may think, &#8220;to prevent race conditions.&#8221; With those locks in place, you can now check the balance, make all the validations you need, and then proceed with the changes. Finally, the locks can be safely removed.</p><p>Here&#8217;s the thing: one of those locks may not be needed.</p><p>There&#8217;s a nice little trick that most engineers won&#8217;t notice because they treat all accounts as if they were equivalent.</p><p>They&#8217;re not.</p><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>. You&#8217;re already subscribed to free newsletters that &#8220;teach&#8221; you how to get a job as a software engineer.</p><p>But you don&#8217;t want to get a job; you already have one. What you want is to learn <strong>how to get promoted at your fintech job</strong>. Where stakes are sky high, and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money in order to make you an outstanding engineer, and move your career forward.</p><p>This week, we&#8217;re going to discuss the impact of cardinality in ledgers. I&#8217;ve put together a valuable list of concepts that payment engineers have to be familiar with, all for free, and cardinality is one of those concepts.</p><p>In this article, I&#8217;m going to explain:</p><ul><li><p>What are high and low cardinality accounts</p></li><li><p>What is the impact of cardinality in ledger performance</p></li><li><p>How to leverage this insight to make your ledger even faster</p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/why-low-cardinality-accounts-are">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[TigerBeetle's Stablecoin Mistake]]></title><description><![CDATA[Is there such a thing as "the ultimate fintech database"?]]></description><link>https://news.alvaroduran.com/p/tigerbeetles-stablecoin-mistake</link><guid isPermaLink="false">https://news.alvaroduran.com/p/tigerbeetles-stablecoin-mistake</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 21 Jan 2026 11:32:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8aa71a66-867a-4985-aaf7-d023ac567cf2_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YUF0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YUF0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YUF0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YUF0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YUF0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YUF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1710467,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/185167359?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YUF0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YUF0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YUF0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YUF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2046a939-634d-4506-a420-bb5e10fa25e9_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You&#8217;ve heard this one already: &#8220;skate where the puck is going, not where it has been&#8221;. </p><p>In order to innovate, companies have to build for the world of the future, where conditions will have changed. What is silly now, <em>where the puck isn&#8217;t</em>, may eventually stop being so, because that&#8217;s <em>where the puck will be</em>.</p><p>But what if the puck ends up being somewhere else?</p><p>See, that&#8217;s the problem with trying to predict what the future will look like: <a href="https://www.youtube.com/watch?v=P0-kZhkKJAU">you aren&#8217;t crazy enough to do it</a>. The most you can do is to put yourself in positions where you can take advantage of the opportunities that are presented to you.</p><p>So, it&#8217;s not about skating where the puck is going. It&#8217;s about being able to try again if the puck doesn&#8217;t go where you are.</p><p>I first heard of TigerBeetle a couple of years ago in a piece from Chris Riccomini called <a href="https://materializedview.io/p/databases-are-commodities-now-what">Databases Are Commodities. Now What?</a>. Since then, I&#8217;ve been experiencing a Baader-Meinhof phenomenon.</p><p>TigerBeetle is always there, everywhere I look.</p><p>Readers of this newsletter first recommended it to me, then demanded that I wrote about it. There&#8217;s <a href="https://www.youtube.com/watch?v=sC1B3d9C_sI">a Primeagen video</a> about it. They hosted a conference where <a href="https://www.youtube.com/watch?v=d9cM8f_qSLQ">Hillel Wayne gave a talk</a>, and I&#8217;ve recently learned that <a href="https://matklad.github.io/">matklad</a> works for the company building it.</p><p>So it&#8217;s either The Algo really trying, or TigerBeetle having great marketing people. Because this is The Database For Financial Technology, and my newsletter is for engineers using databases (among other tools) for that very industry.</p><p>And let me tell you, TigerBeetle is a fine piece of engineering.</p><p>Yes, don&#8217;t take this article as software criticism: TigerBeetle is a marvelous thing. I&#8217;ve played around, tinkered with it, and I can say lots of positive things about it. It&#8217;s the kind of database that&#8217;s needed in many financial institutions desperately, and the only reason there isn&#8217;t more of them adopting it is likely because of banks&#8217; atrocious IT procurement and contracting practices, and not TigerBeetle itself.</p><p>However, in trying to predict what the future would look like, TigerBeetle has painted itself into a corner. One that is increasingly clear isn&#8217;t the right corner to be.</p><p>Databases, like many other systems, are built on tradeoffs. A while ago, we explored QLDB, the now defunct Amazon&#8217;s ledger database, and I cheekily compared it to the spacecraft that the star character of <a href="https://en.wikipedia.org/wiki/The_Martian_(film)">The Martian</a> had to propel itself to space with:</p><blockquote><p>QLDB is like that vandalized rocket that Mark uses to take off from Mars and onto the spaceship that would bring him home. If postgreSQL is a fully fledged spacecraft, a BMW of luxurious interplanetary travel, with all the amenities and guarantees, QLDB is stripped from control panels, from backup systems, and all that doesn&#8217;t move the system closer to achieving its mission.</p><p>To boldly go where no database has gone before.</p></blockquote><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ccde96fd-f25d-419d-a2e5-7b42e141002b&quot;,&quot;caption&quot;:&quot;They just keep repeating, &#8216;go faster than any man in the history of space travel&#8217;. Like that&#8217;s a good thing. Like it would distract me from how insane their plan is. Yeah, &#8216;you have to go faster than&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;If Amazon Can't Figure Out How To Make Money From Blockchain Databases, Nobody Can&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-02-05T10:01:49.046Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c7d3ff5-b4fe-479e-9c7d-9696f54f7008_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/if-amazon-cant-figure-out-how-to&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:156469412,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>The problem with these design choices is that they&#8217;re so narrowed down on solving one particular aspect of the problem space that they&#8217;re very fragile when these solutions don&#8217;t make a business difference.</p><p>In QLDB, for example, the problem wasn&#8217;t really cryptographic verifiability. Sure, you <em>can verify that the data hasn&#8217;t been tampered with independently</em>, but does that really align with a system that&#8217;s owned by a cloud provider?</p><p>I guess that if Amazon couldn&#8217;t figure that out, the answer is probably &#8220;no&#8221;. You may want to verify immutability with Merkle trees, but trusting that the central authority isn&#8217;t doing anything with your data is probably a better business decision.</p><p>So it is with TigerBeetle. They&#8217;ve built a financial database that&#8217;s faster than any other alternative out there. And performance is something you desperately need when you build a ledger, since the whole architecture is predicated on lots of data that are accessed very frequently.</p><p>But TigerBeetle is very bad at handling multiple currencies. And the world seems to go in the direction of multi-currency ledgers, even if they aren&#8217;t the fastest.</p><p>TigerBeetle may be a database placed &#8220;where the puck is going&#8221;. But it&#8217;s lost the ability to get back if the puck ends up somewhere else.</p><div><hr></div><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>. You&#8217;re already subscribed to free newsletters that &#8220;teach&#8221; you how to get a job as a software engineer.</p><p>But you don&#8217;t want to get a job; you already have one. What you want is to learn <strong>how to be great at your job</strong>. Especially as a payments engineer, where stakes are sky high, and the margin for error is razor thin.</p><p>In <em>The Payments Engineer Playbook</em>, we investigate the technology that transfers money. All to help you become a smarter, more skillful and more successful payments engineer. And we do that by cutting off one sliver of it and extracting tactics from it.</p><p>Today, we&#8217;re looking at TigerBeetle&#8217;s approach to multi-currency transactions. It sounds a weird topic to dive into, but if you notice how often you&#8217;re sending money abroad, pay for goods and services from other countries, or simply buy stocks from international exchange markets, you have to admit that this is becoming something that we&#8217;re doing more and more frequently.</p><p>And that&#8217;s putting a lot of pressure on single-currency ledger systems. Even when they&#8217;re 1000x faster than the competition.</p><p>In this article, we&#8217;re going to look at</p><ul><li><p>What is TigerBeetle&#8217;s approach to double entry accounting, and why.</p></li><li><p>A crash course on stablecoins. What are they, and why everyone is talking about them.</p></li><li><p>The &#8220;impedance mismatch&#8221; between TigerBeetle&#8217;s design and stablecoins.</p></li><li><p>The unbounded future of ledger systems.</p></li></ul><p>Enough intro, let&#8217;s dive in.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">To receive new articles and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h2>Reference Currency</h2><p>For the longest time, ledgers have been denominated on one currency, and one currency only.</p><p>Our world is already testing this design decision to its limits. We&#8217;ve lived in a multi-currency world for quite some time, but the scale of multi-currency transfers was so minimal, humans in between single-currency ledgers were enough to smooth things over. Never needing to answer questions about these transfers with much granularity, nor in real time, also helped. As long as you get the answer by the end of the month, the quarter, even the year, you&#8217;re doing pretty well.</p><p>Not anymore.</p><p>Even startups and small businesses have the same problems as multinationals now, but needing far less scale and therefore much more granularity.</p><ul><li><p>Being remote means now being global. Clients are everywhere, and so are providers and employees.</p></li><li><p>Banking apps not only handle deposits, but also investments in stocks, payments when we travel abroad, crypto, even angel investing.</p></li><li><p>To the extent that the USD is no longer the only reserve currency, businesses that operate globally need cash stored in more than just dollars, all fluctuating against each other.</p></li></ul><p>If this sounds intimidating, it&#8217;s because it is. Or it would be, if we keep relying on design decisions made in the times of Medici&#8217;s Florence.</p><h2>Transfers, Not Transactions</h2><p>Transaction is a loaded word.</p><p>There are financial transactions and database transactions. There&#8217;s also <a href="https://en.wikipedia.org/wiki/Transactional_interpretation">the transactional interpretation of quantum mechanics</a>, and there&#8217;s <a href="https://en.wikipedia.org/wiki/Transactional_leadership">transactional leadership</a>.</p><p>But there are no transactions in TigerBeetle. There are transfers.</p><p>A transfer is a single movement of money, from a single debit account to a single credit account on&#8212;and this is crucial&#8212;the same ledger. They cannot be modified, though you can add new transfers to correct them.</p><p>And if you want to do more complex money movements, you have to compose multiple transfers.</p><p>The actual reason why TigerBeetle has transfers and not transactions isn&#8217;t just to mess with you, it&#8217;s because <strong>a transfer is a fundamental building block of the database</strong>.</p><p>When <a href="https://news.alvaroduran.com/p/if-amazon-cant-figure-out-how-to?utm_source=publication-search">I discussed QLDB</a>, I casually mentioned that SQL and JSON weren&#8217;t supported because &#8220;QLDB does away with everything that&#8217;s on the way to its difficult goal.&#8221;</p><p>SQL is a battle-tested way to get and update data from a general purpose database. But it relies on generic data structures meant to store any kind of data type.</p><p>TigerBeetle&#8217;s most fundamental optimization is precisely here: we don&#8217;t need to store any kind of data type. We just need to store movements of money. So why not make that the fundamental data model, and build everything around it?</p><p>In fact, all movements of money boil down to transfers, and two more things:</p><ul><li><p><a href="https://docs.tigerbeetle.com/coding/two-phase-transfers/">Two phase transfers</a>: Having the ability to reserve funds (pending), and resolve (post, void, expire) them.</p></li><li><p><a href="https://docs.tigerbeetle.com/coding/linked-events/">Linked Events</a>: Having the ability to chain multiple transfers as an atomic block.</p></li></ul><p>TigerBeetle leverages these 3 primitives into <a href="https://docs.tigerbeetle.com/coding/recipes/">a set of recipes</a> that allow engineers to do everything with this database as long as it&#8217;s about moving money.</p><p>But, like I said, a transfer must happen within the same ledger. And that&#8217;s the core of TigerBeetle&#8217;s mistake.</p><h2>Stablecoins, and Multi-Currency Ledgers</h2><p>How would you send somebody money internationally <em>if you couldn&#8217;t use a bank</em>?</p><p>Cash over email, or over <a href="https://tvtropes.org/pmwiki/pmwiki.php/Main/HandcuffedBriefcase">a handcuffed briefcase</a> might work, but you run the risk that it gets lost. No problem; you get creative. How about you buy shares of Apple, and instruct the recipient to short sell them, and then you can just transfer those shares to them?</p><p>That works. That&#8217;s actually brilliant. But the transaction costs are probably too high: there&#8217;s the difference between the buy and sell price, the broker&#8217;s commissions, etc.</p><p>Let&#8217;s go crypto, then: you buy some Bitcoins, and they sell a bit of theirs, and then you can transfer those Bitcoins to them. The transaction costs are somewhat fixed, and low, so this is an improvement. But Bitcoin&#8217;s price is much, much more volatile than Apple&#8217;s. The risk of having to offset the price difference makes this approach unwieldy at scale.</p><p>The good thing about crypto, and the reason why the transaction costs are so low, is because there&#8217;s nothing central about it. The recipient may be on the other side of the world, and they have the same level of access and visibility to it as you. It may be slow, but not SWIFT slow. And it&#8217;s way cheaper.</p><p>So what we probably need is something that&#8217;s crypto-like, to retain the global aspect of such a ledger, but without the volatility of crypto currencies. One way to do that is to have a blockchain that distributes the value of a predefined pool of resources, something that doesn&#8217;t change in value against a fiat currency.</p><p>So that&#8217;s what stablecoins really are. And they&#8217;re now facilitating <a href="https://www.mckinsey.com/industries/financial-services/our-insights/the-stable-door-opens-how-tokenized-cash-enables-next-gen-payments">$30bn of transactions daily</a>.</p><h2>Impedance Mismatch</h2><p>How would you represent a transfer made from a bank account in USD to another in EUR made via Tether, a well-known stablecoin?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>In TigerBeetle, ledgers are denominated on a single currency, and transfers between pairs of accounts in different ledgers <a href="https://docs.tigerbeetle.com/reference/requests/create_transfers/#accounts_must_have_the_same_ledger">aren&#8217;t allowed</a>. So what you have to do is to create two linked transfers in two different ledgers, each one moving money within the same ledger (from or to the &#8220;liquidity source&#8221;).</p><p>Using Tether complicates all this even more. We&#8217;re going to need 6 accounts:</p><ul><li><p>A source account in USD on <code>ledger 1</code></p></li><li><p>A source liquidity account on <code>ledger 1</code></p></li><li><p>A source sweep account in Tether  on <code>ledger 2</code></p></li><li><p>A destination sweep account on Tether on <code>ledger 2</code></p></li><li><p>A destination liquidity account in EUR on <code>ledger 3</code></p></li><li><p>A destination account that belongs to B on <code>ledger 3</code></p></li></ul><p>and a transfer trio:</p><ol><li><p>A transfer from the source account to the source liquidity account (USD)</p></li><li><p>A transfer from the source sweep account to the destination sweep account (Tether)</p></li><li><p>A transfer from the destination liquidity account to the destination account (EUR)</p></li></ol><p>Here&#8217;s another problem: <strong>the exchange rate must be made explicit</strong> prior to the transaction. The price risk and any costs derived from the fluctuation of the exchange have to be recorded, as per TigerBeetle&#8217;s docs, &#8220;as a separate transfer from the source account to the source liquidity account&#8221;.</p><p>That&#8217;s a compensating transfer. Which becomes the fourth in this scenario.</p><p>TigerBeetle is built for speed. But makes multi-currency scenarios unmanageable.</p><h2>Databases are (indeed) Commodities</h2><p>I&#8217;ve been building financial technology for quite some time now, and I&#8217;m still as excited as when I started.</p><p>TigerBeetle isn&#8217;t a failure. On the contrary, it&#8217;s the signal that ledger technology isn&#8217;t done yet. There&#8217;s still so much to do. And that we haven&#8217;t nailed down the ultimate financial database yet.</p><p>Perhaps we never will.</p><p>Most payment engineers think that &#8220;rolling out your own ledger&#8221; is an unnecessary rite of passage (I already talked about <a href="https://news.alvaroduran.com/p/engineers-do-not-get-to-make-startup">my own</a>), but every financial database that claims to be general purpose I know fails in some particular aspect that makes it work tremendously well for some use cases, and terribly bad for others.</p><p>It&#8217;s as if rolling out a ledger system isn&#8217;t a rite of passage, but the only valid way to build financial technology that truly fits your business.</p><p>It sounds absurd, but that brings me a lot of joy. There&#8217;s so much that we can do with financial recordkeeping that goes beyond tracking money. We might track a contractor&#8217;s hours as inventory. We might see the offices not just as something tangible, but as collateral for a loan, becoming both asset and liability.</p><p>We might track <a href="https://news.alvaroduran.com/p/money-as-metadata">who gave us cash, and what we used that cash for</a>.</p><p>A ledger then becomes less a cold record of balanced transactions, and more like a map of intent. Relations, obligations, and possibilities find a way into our books, and companies make more informed decisions based on them.</p><p>And ultimately, we free ourselves from thinking that only money is valuable, and that valuable can only be represented as money.</p><p>I&#8217;ll see you next week with another article from <em>The Payments Engineer Playbook</em>.</p><div class="pullquote"><p>If you liked this article, consider becoming a subscriber,<br>or sharing it on Hacker News.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.ycombinator.com/submitlink?u=https://www.news.alvaroduran.com/tigerbeetle-stablecoin-mistake/&amp;t=TigerBeetle%27s%20Stablecoin%20Mistake&quot;,&quot;text&quot;:&quot;Share it on Hacker News&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.ycombinator.com/submitlink?u=https://www.news.alvaroduran.com/tigerbeetle-stablecoin-mistake/&amp;t=TigerBeetle%27s%20Stablecoin%20Mistake"><span>Share it on Hacker News</span></a></p></div><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This section relies heavily on <a href="https://docs.tigerbeetle.com/coding/recipes/currency-exchange/">TB&#8217;s Currency Exchange recipe</a>. You can go there for more info.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Why Don't You Use Generics in Ledgers?]]></title><description><![CDATA[It's not you; it's that DRY and KISS are misguided.]]></description><link>https://news.alvaroduran.com/p/youre-implementing-the-basics-of</link><guid isPermaLink="false">https://news.alvaroduran.com/p/youre-implementing-the-basics-of</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 14 Jan 2026 11:44:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c2542b59-5f1d-4e86-9e56-35b9803362df_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fKrX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fKrX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fKrX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fKrX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fKrX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fKrX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3191570,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/184420472?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fKrX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fKrX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fKrX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fKrX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34983abf-6ba7-4129-9a60-d0cc3e00ffcd_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#8220;Don&#8217;t Repeat Yourself&#8221; is vague advice.</p><p>It&#8217;s not that duplicating code is a good thing, no. But multiple generations of software engineers have learnt to avoid writing code, to Keep It Simple Stupid, and to prefer ways of building software that are terse and &#8220;elegant&#8221;.</p><p>This isn&#8217;t doing you any good.</p><p>Let me give you one example of what I mean: <a href="https://en.wikipedia.org/wiki/Enumeration">enums</a>.</p><p>When we have a set of states in which some entity can be, engineers often choose to represent that status in the form of an enum: a finite set of values that it can take.</p><p>An account may be an asset, liability, equity, income, or expense, and most often the codebase includes one object with an attribute status that looks like this:</p><pre><code>type Kind string

const (
&#9;Asset     Kind = "asset"
&#9;Liability Kind = "liability"
&#9;Equity    Kind = "equity"
&#9;Income    Kind = "income"
&#9;Expense   Kind = "expense"
)

type Account struct {
&#9;Kind Kind
}</code></pre><p>This is probably what your favorite AI would suggest. Your senior engineer would, too!</p><p>However, this design choice forces you to verify the kind of your account <em>every time you do something with it</em>. How to calculate a balance, or what to do when you withdraw or deposit take different forms depending on whether the account is an Asset, Equity or Liability, Income or Expense.</p><p>The blocks of code that must always be present in order to verify that are called <strong>guard clauses</strong>.</p><p>They take the form of <a href="https://medium.com/@theenobledev/simplifying-ruby-methods-embracing-guard-clauses-356030f7f689">a bunch of return statements at the beginning of a Ruby method</a>, or <a href="https://dev.to/guzmanojero/write-cleaner-python-with-guard-clauses-n6">if statements in Python</a>, or <a href="https://medium.com/@sharadblog/writing-clean-java-code-using-guarded-clauses-3245baaf9949">the kind of unbearable mess that Java engineers are now numb to</a>.</p><p>Again: engineers don&#8217;t even see this as an issue. The links on the previous paragraph even laud the &#8220;readability&#8221; and the &#8220;cleanness&#8221; of guard clauses.</p><p>Multiple generations have been lost in the pursuit of elegant, non-DRY code.</p><p>The problem with this approach is that engineers are <strong>more likely to introduce</strong> <strong>integrity bugs</strong>.</p><p>This design <em>demands that you use guard clauses all the time</em>. But nothing in the software will tell you which validations you need to do, and what are the consequences of not using them. Engineers who jump into the codebase for the first time risk making real withdrawals with real money because nobody told them that they need to guard against being in production with a guard clause.</p><p>Yeah, I&#8217;ve seen that happen.</p><p>Even the &#8220;readability&#8221; that these posts claim should be challenged. Using guard clauses, the part where an Asset account is different from a Liability one isn&#8217;t apparent in the code; it&#8217;s disseminated throughout the codebase, wherever there&#8217;s a guard clause. Forming a mental model of what a particular kind of account is about is <em>impossible</em>.</p><p>And that feeds into more integrity bugs. Invalid, catastrophic states of your system lurk, undiscovered, silent, and harmful.</p><p>A few years ago, &#220;rgo Ringo from Wise published an article titled <a href="https://medium.com/wise-engineering/implementing-entity-states-as-separate-classes-abc3c745fa2">Implementing entity states as separate classes</a>, in which he raised the issues with using enums in order to separate entities:</p><blockquote><p>There are three problems with this design:</p><ol><li><p><strong>mutability</strong>. Even though business concept Order is mutable does not mean we should give up all the benefits of immutability when implementing it</p></li><li><p>it <strong>mixes a lot of behavior into a single class</strong> and hides away important concepts like difference between a pending Order and a confirmed Order. We want significant business concepts to be <a href="https://urgoringo.wordpress.com/2010/05/13/new-classes-for-improved-readability/">more prominent in our code</a>.</p></li><li><p>if we try to do something we should not be doing we will only discover it at runtime when a validation exception is thrown. This is <strong>not aligned with the idea of a <a href="https://medium.com/transferwise-engineering/poka-yoke-in-software-design-e6a0d955a4d8">mistake proof design</a></strong>.</p></li></ol><p>&#8212; &#220;rgo Ringo, <a href="https://medium.com/wise-engineering/implementing-entity-states-as-separate-classes-abc3c745fa2">Implementing entity states as separate classes</a></p></blockquote><p>But the solution he proposed is to represent different kinds as different objects. An Account that could be one of 5 kinds becomes 5 objects named AssetAccount, LiabilityAccount, EquityAccount, IncomeAccount and ExpenseAccount.</p><p>I don&#8217;t like that design either. Yes, I&#8217;m done with guard clauses, because which kind of account I&#8217;m using is clearly separated from the others. But there&#8217;s going to be a lot of duplicated code, because even though they&#8217;re different, many of these kinds share functionality.</p><p>LiabilityAccounts&#8217; balances are increased with credits, and decreased with debits. But so are EquityAccounts and ExpenseAccounts.</p><p>AssetAccounts work the other way around. And so do IncomeAccounts.</p><div><hr></div><p>I want to teach you a different approach. One that leverages <a href="https://en.wikipedia.org/wiki/Generic_programming">generics</a>.</p><p>Generics is just a way to define an extra parameter in the object or function that links inputs and outputs. The change is that you can assume certain inputs to be of a certain type, and enforce that certain inputs are of some type as a result.</p><p>For example: you know that <a href="https://stackoverflow.com/questions/40848551/how-does-adding-string-with-integer-work-in-javascript#40848608">adding strings and numbers in Javascript is a mess</a>:</p><pre><code>"" + 1          === "1"
"1" + 10        === "110"
"110" + 2       === "1102"
"1102" - 5      === 1097
1097 + "8"      === "10978"</code></pre><p>If I create a function that adds two variables, and I&#8217;m not careful with using strings or numbers, then all hell can break loose.</p><p>I can use Typescript to build a function that adds two items, while ensuring that the two items are of the same type (integer or string) with generics:</p><pre><code>function add&lt;T extends number | string&gt;(a: T, b: T): T {
  return (a + b) as T;
}

const s = add("Hello, ", "TypeScript");
console.log(s); // Hello, TypeScript

const n = add(10, 20);
console.log(n); // 30

// Error: Argument of type 'number' is not assignable to parameter of type 'string'.
const invalid = add("Age: ", 25);
</code></pre><p>It is possible to use guard clauses and get the same result, but notice that <strong>generics don&#8217;t require writing any extra code in the body of the function</strong>. The type system enforces that the two items are of the same type, and thus <em>every other part of the codebase that uses this function is protected</em>.</p><p>&#8220;But what has this to do with enums?&#8221;, you may ask. More than you think.</p><div><hr></div><p>After nearly a decade building and maintaining large-scale money software, I&#8217;ve seen what works (and what doesn&#8217;t) about software that moves money around. In <strong>The Payments Engineer Playbook</strong>, I share one in-depth article every Wednesday with breakdowns of how money <em>actually</em> moves.</p><p>If you&#8217;re an engineer or founder who needs to understand money software in depth, join close to 2,000 subscribers from companies like Shopify, Modern Treasury, Coinbase or Flywire to learn how real payment engineers plan, scale, and build money software.</p><div><hr></div><p>Generics are worth it when domain rules are strict, invalid states are expensive and APIs must be hard to misuse. Money software is the textbook example of all three.</p><p>In this article, I&#8217;m going to show you two examples of how ledgers benefit from using generics.</p><ul><li><p>The Easy One: How to enforce that money amounts are always positive on Entries, while letting Balances be negative.</p></li><li><p>The Hard One: How to separate functionality specific to certain Accounts but not others based on kind.</p></li></ul><p>I&#8217;ll do this with generics, without duplicating classes, and without using guard clauses.</p><p>Sounds interesting? Then read below.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/youre-implementing-the-basics-of">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Money as Metadata]]></title><description><![CDATA[What happens when we ignore the belief that all money is interchangeable?]]></description><link>https://news.alvaroduran.com/p/money-as-metadata</link><guid isPermaLink="false">https://news.alvaroduran.com/p/money-as-metadata</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 07 Jan 2026 10:39:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3ec4c638-4a58-405c-89c5-109578e0e802_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HVJN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HVJN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HVJN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HVJN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HVJN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HVJN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1165520,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/183678225?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HVJN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HVJN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HVJN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HVJN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00d54be-6292-4036-a916-244846762e67_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In reality, no two bank notes are the same.</p><p>When we say that money is fungible, we&#8217;re suspending our disbelief for a moment. Of course, I can tell that <em>my bank note is not exactly the same as yours</em>. But we go along with it because, well, everyone else is also playing pretend. To the point that we even forget it.</p><p>Fungibility is such a pervasive belief; I would have to pause for a moment to even consider that it isn&#8217;t really true.</p><p>This, however, is problematic for engineers who handle money. We&#8217;ve embedded this white lie into the software. And, sure, most of the time it doesn&#8217;t do any harm. You&#8217;ve probably never encountered any such situation where having to differentiate two bank notes was needed.</p><p>But that&#8217;s probably because you only handle money <em>online</em>.</p><p>I was watching a talk by Formance CEO Cl&#233;ment Sala&#252;n the other day, called <a href="https://www.youtube.com/watch?v=CnwNUCXpVaU">The color of money</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. In the talk, he argues that assuming that all money in a ledger is fungible is a bad idea.</p><p>Say you accept cash at your Starbucks joint in exchange for topping up a gift card. We&#8217;ve already covered what a great idea it is to have gift cards, or <a href="https://news.alvaroduran.com/p/how-to-design-mixed-payment-methods">store credits</a>, and Sala&#252;n goes as far as calling it &#8220;the best business in the universe&#8221;.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;90986ee5-afd2-4a08-a909-c6fecb3a5637&quot;,&quot;caption&quot;:&quot;Most companies make a colossal mistake when they decide to accept alternative payment methods. They choose the wrong one to start with.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to design mixed payment methods with store credits&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-10-09T07:17:54.305Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d94b4fd4-2989-4b14-ba23-92847eda3440_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/how-to-design-mixed-payment-methods&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:149998881,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:6,&quot;comment_count&quot;:6,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>But there&#8217;s a catch. Days later, when you deposit that cash, along with everything you&#8217;ve earned from selling Macchiatos and Frappuccinos, your bank <em>rejects some of your bank notes</em> because they&#8217;re fake.</p><p>You thought you were getting Washingtons, Jeffersons and Lincolns, and in reality you were getting Monopoly money.</p><p>Soon, you&#8217;ll realize that you actually have <em>two</em> problems:</p><ul><li><p>You don&#8217;t know what amount to subtract from which gift cards</p></li><li><p>You don&#8217;t know which sales to cancel</p></li></ul><p>Because you mixed the legit and the fake money, now you can&#8217;t tell which one is which.</p><p>The solution that Formance CEO offered is actually pretty clever: <strong>make fungibility intentional.</strong></p><p>Intentional fungibility means to <em>trace the payer of every bank note</em> the same way you trace its amount and currency. That gives you the choice to treat those bank notes as if they were any other bank note, but retaining the ability to trace back who gave them to you.</p><p>This, in other words, means treating bank notes from different people as not directly balanceable with other people&#8217;s notes. They&#8217;re currency from a different country, so to speak, and only become truly fungible <em>when you decide so</em>.</p><p>With that tiny bit of extra information, you retain your sanity when it comes to fake bank notes, even if, for a brief moment, you have to suspend the widespread notion that all bank notes are created equal.</p><p>I find this idea very interesting.</p><p>But I don&#8217;t usually deal with physical money when I build software. For me, it&#8217;s usually credit cards, APMs and bank transfers. When I see cash, it is rare, and in the form of <a href="https://en.wikipedia.org/wiki/Cash_on_delivery">Cash On Delivery</a>.</p><p>Fraud exists online, but it&#8217;s not in the form of fake bank notes.</p><p>Does that mean that this idea is cool, but pointless in the online world? Is this another idea that&#8217;s clever, but wasted effort?</p><p>It&#8217;s not. Making fungibility intentional introduces a whole new approach to money, even online.</p><p>This is an idea that changes everything. And I&#8217;m not even sure if the people at Formance are even aware of.</p><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>. After nearly a decade building and maintaining large-scale money software, I&#8217;ve seen what works (and what doesn&#8217;t) about software that moves money around. In <strong>The Payments Engineer Playbook</strong>, I share one in-depth article every Wednesday with breakdowns of how money <em>actually</em> moves.</p><p>And I show you how top fintech companies build their systems.</p><p>If you&#8217;re an engineer or founder who needs to understand money software in depth, join close to 2,000 subscribers from companies like Shopify, Modern Treasury, Coinbase or Flywire to learn how real payment engineers plan, scale, and build money software.</p><p>This week, we&#8217;re looking at how money gets represented in software. You probably use one of those open source, third party packages that are now standard in your language: Go&#8217;s <a href="https://github.com/Rhymond/go-money">go-money</a>, Python&#8217;s <a href="https://github.com/py-moneyed/py-moneyed">py-moneyed</a>, Ruby&#8217;s <a href="https://github.com/RubyMoney/money">money</a>, whatever.</p><p>This is fine (at least you&#8217;re not using floats to represent money).</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;45b62a8f-3b1f-4bab-a0b7-4ebab80a8f7b&quot;,&quot;caption&quot;:&quot;You've heard that one before: never represent money with a float.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Richard Pryor Stole a lot of Half Cents and Bought a Ferrari&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-08-27T11:16:51.258Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab20ba23-a16e-49aa-b2a2-1a32a8b3f365_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/richard-pryor-stoles-a-lot-of-half&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:172075705,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:2,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>But you&#8217;re leaving a lot of information on the table. All of these libraries work under the assumption that all money is fungible. And we&#8217;ve just proven this to be limiting, and sometimes harmful.</p><p>In this article, I&#8217;m going to argue that:</p><ul><li><p>That you should build your own money library</p></li><li><p>That building such a library isn&#8217;t that hard, and very useful down the line</p></li><li><p>That using a third party money library is akin <a href="https://arstechnica.com/information-technology/2016/03/rage-quit-coder-unpublished-17-lines-of-javascript-and-broke-the-internet">to installing left-pad</a></p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/money-as-metadata">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Playbook's 2025 Year In Review]]></title><description><![CDATA[The most popular and most important articles on The Payments Engineer Playbook in 2025.]]></description><link>https://news.alvaroduran.com/p/the-playbooks-2025-year-in-review</link><guid isPermaLink="false">https://news.alvaroduran.com/p/the-playbooks-2025-year-in-review</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 17 Dec 2025 10:04:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/834c483c-ae25-4a5d-bf69-1ebceed24cf9_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u2ca!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u2ca!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u2ca!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u2ca!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u2ca!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u2ca!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1660429,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/181678528?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u2ca!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u2ca!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u2ca!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u2ca!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9023061e-0e60-4a06-abba-9c4d3d6f5dfe_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s been one of the most rewarding years of my life.</p><p>I&#8217;ve been in <a href="https://en.wikipedia.org/wiki/William_Goldman">William Goldman</a>&#8217;s camp since he said that &#8220;every time out it&#8217;s a guess and, if you&#8217;re lucky, an educated one.&#8221; As 2024 was coming to an end, and propelled by an overwhelmingly positive reception of <em>The Payments Engineer Playbook</em>, I decided to <a href="https://news.alvaroduran.com/p/going-paid">make it a paid publication</a>.</p><p>Since then, not only the newsletter has continued to grow, now shy of 2,000 overall subscribers, but a strong number has decided to join me in the goal of becoming better engineers of money software.</p><p>I wasn&#8217;t sure if I was making the right move. Turns out, content that&#8217;s well-researched and specific to payment engineers is hard to come by, and it&#8217;s worth paying for.</p><p>But <em>The Playbook</em> is also niche in another important aspect.</p><p>Most stuff you read or watch online is targeted to the occasional Internet wanderer. Tantalizing thumbnails, clickbaity titles, and emotional but ultimately worthless content.</p><p>This newsletter, instead, speaks for the regular reader.</p><p>With more than 100 articles <a href="https://news.alvaroduran.com/archive">in the archive</a>, I&#8217;ve written enough to fill a couple of door-stoppers. You can read through them all you want. But the most valuable thing that <em>The Playbook</em> provides is the personal growth that you gain in the 10 minutes a week of reading.</p><p>I&#8217;ve explored many aspects of the job of payment engineers: <a href="https://news.alvaroduran.com/t/databases">databases</a>, <a href="https://news.alvaroduran.com/t/event-sourcing">event sourcing</a>, <a href="https://news.alvaroduran.com/t/orchestration">orchestration</a>, <a href="https://news.alvaroduran.com/t/ledgers">ledgers</a>, and more. I&#8217;ve published two long-form series (<a href="https://news.alvaroduran.com/t/code-first-reliability">code-first reliability</a> and <a href="https://news.alvaroduran.com/t/from-stock-markets-to-ledgers">from stock markets to ledgers</a>), and I plan on doing many more.</p><p>Yet, the newsletter format is the perfect fit for <em>The Playbook</em>. It&#8217;s transformative content.</p><p>10 minutes a week, 52 weeks a year.</p><div><hr></div><p>This year, <em>The Playbook</em> published 50 articles, <a href="https://news.alvaroduran.com/t/free">17 of them free</a>. They all dive deep into some particular aspect of building software for the payments industry, what I call <strong>money software</strong>.</p><p>This week, I summarize the most popular articles of 2025.</p><h2>2025&#8217;s Most Viewed Articles</h2><p>These are the 3 most popular articles on <em>The Playbook.</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;9c08f627-eb48-410e-8114-8d189e11e662&quot;,&quot;caption&quot;:&quot;Good payment engineers don&#8217;t focus on performance or clean code. They focus on the business logic.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;5 Common Antipatterns in Payment Systems Design&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-04-23T09:00:53.004Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0acf9799-0cc2-4c28-99eb-1392fb3bf04e_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/5-common-antipatterns-in-payment&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:161790988,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:9,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><em>4.55k reads</em></p><p>Deemed &#8220;one of the clearest writeups I&#8217;ve seen on where payment systems quietly break&#8221; <a href="https://www.reddit.com/r/fintech/comments/1la9m8y/comment/mxj1ohe/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button">by Reddit</a>, this post was widely shared in the fintech community, way beyond those building payments.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8361f316-6e15-476a-8c8a-74e306326e4d&quot;,&quot;caption&quot;:&quot;Does your pipeline ground to a halt on Fridays? Good.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Stripe Deploys 1,000 Times A Day And You Don't Deploy On Fridays&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-04T09:00:57.306Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3040dcd-a6c8-4fa8-abc6-eb66ac8949dd_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/stripe-deploys-1000-times-a-day-and&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:164898066,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:1,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><em>3.73k reads</em></p><p>I was called a &#8220;clown&#8221; for suggesting that you should deploy every day, even on Fridays. If you side with them, get ready to be proven wrong.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5cab0c8f-fb37-484e-bca7-50b52285e264&quot;,&quot;caption&quot;:&quot;Consensus is when multiple servers join forces to keep a single system running.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Raft Consensus in 2,000 words&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-11-12T11:41:25.549Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!VLGv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719da4aa-c40b-431c-a8cd-363579826be5_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/raft-consensus-in-2000-words&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:178681884,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><em>2.61k reads</em></p><p>Another <a href="https://www.reddit.com/r/programming/comments/1ow0czt/raft_consensus_in_2000_words/">Reddit blowup</a>. Consensus hasn&#8217;t been widely adopted because what we used to have (Paxos) was inscrutable and therefore impossible to build correctly. Raft is proof that correctness isn&#8217;t always the only thing that matters. Leveling to the average developer can do wonders for adoption.</p><h2>2025&#8217;s Most Viewed Paid Articles</h2><p>These are the 3 most popular articles that sit behind the paywall.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;7d5d7146-0ee6-462d-9b52-d16f97c35c74&quot;,&quot;caption&quot;:&quot;What&#8217;s the most underrated software book? It&#8217;s Gang of Four&#8217;s Design Patterns.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Payments Patterns: Elements of Reusable Money Software&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-01-02T10:01:47.997Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/385409d7-2dbf-4a1f-b3f3-d3c8a38feb7a_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/payments-patterns-elements-of-reusable&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:153926926,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:5,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><em>2.17k reads</em></p><p>Your payment system probably started by accepting cards only. Eventually, it adopted a few of those trendy methods, and now that you&#8217;ve got a few providers integrated, the code is a mess. Why? Because you didn&#8217;t build a taxonomy for it. This article dives into this problem and provides a comprehensive solution.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;18806ce9-b179-4336-9365-f6c4dbe56dc9&quot;,&quot;caption&quot;:&quot;I find the expression &#8220;best tool for the job&#8221; disappointing.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Best Payments Database Is the One You Aren't Using&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-03-19T10:03:34.811Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c10b46dd-8362-4ba5-99d3-c731928763af_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/the-best-payments-database-is-the&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:159326319,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:2,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><em>2.03k reads</em></p><p>What&#8217;s more important than choosing the right database for your payment system? Having the ability to switch if you chose the wrong one.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;45f690c9-5369-49bc-bc7b-06162c88a93e&quot;,&quot;caption&quot;:&quot;Most ledgers can only serve one of two use cases.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;A Tale of Two Ledgers&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-01-15T10:01:17.621Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/936b6207-a527-42d2-9a10-f64376d15bf6_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/a-tale-of-two-ledgers&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:154847456,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:0,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><em>1.9k reads</em></p><p>My most referenced article in this newsletter, in which I look at ledgers from the point of view of Availability-only and Consistency-only, and what are their implementation differences.</p><div><hr></div><h2>Meet, Assess, Inspire</h2><p>I&#8217;ve been exploring ways to turn <em>The Playbook</em> into a productized service. Something a bit more hands-on and impactful.</p><p>The idea is to spend a full day onsite at your company&#8217;s office, getting to know the team, digging into the product, and advising on what&#8217;s going on and how to take it to the next level. So that at the end of the day, I can wrap everything up with a talk designed to spark new ideas and inspire the engineering team into action. All powered by the learnings of this newsletter.</p><p>I&#8217;m calling it Meet the Leaders, Assess the Product, Inspire the Team.</p><p>I&#8217;m testing this format on 2026 with one adventurous company, and I&#8217;d love to meet others who resonate with this format. If that&#8217;s you, hit reply to this email and let me know. Even if it&#8217;s just <a href="https://www.linkedin.com/in/alvaroduranbarata/">a quick chat over DMs</a> or something more elaborate, I&#8217;ll be happy to get to know what you do and what you enjoy about money software.</p><p>That&#8217;s it for this year in <em>The Payments Engineer Playbook</em>. I&#8217;ll be back on the 7th of January.</p><p>Merry Christmas!</p>]]></content:encoded></item><item><title><![CDATA[From Stock Markets To Ledgers, Part VI: Mechanical Sympathy]]></title><description><![CDATA[3 books to satiate your curiosity and ambition]]></description><link>https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-544</link><guid isPermaLink="false">https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-544</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 10 Dec 2025 11:32:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fc6ff4a5-0461-44ab-8f31-01d518602a0a_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What makes a Formula 1 Driver a World Champion?</p><p>It&#8217;s not hours of practice, or experience; <a href="https://en.wikipedia.org/wiki/Sebastian_Vettel">Sebastian Vettel</a> and <a href="https://en.wikipedia.org/wiki/Lewis_Hamilton">Lewis Hamilton</a> won the title when they were 23. And while having a father that used to be an F1 driver might help (like <a href="http://v">Max Verstappen</a>, <a href="https://en.wikipedia.org/wiki/Nico_Rosberg">Nico Rosberg</a>and <a href="https://en.wikipedia.org/wiki/Jacques_Villeneuve">Jacques Villeneuve</a>), it didn&#8217;t help Nelson Piquet Jr., nor any of Jack Brabham&#8217;s sons <a href="https://en.wikipedia.org/wiki/Geoff_Brabham">Geoff</a>, <a href="https://en.wikipedia.org/wiki/Gary_Brabham">Gary</a> and <a href="https://en.wikipedia.org/wiki/David_Brabham">David</a>.</p><p>It&#8217;s not money either. Ask <a href="https://en.wikipedia.org/wiki/Lance_Stroll">Lance Stroll</a>.</p><p>Being the occasional F1 <em>tifosi</em>, this is the question that I ask myself throughout the season. Is it you, or is it your car that makes the championship? Was <a href="https://en.wikipedia.org/wiki/Lando_Norris">Lando Norris</a> really this year&#8217;s best F1 driver?</p><p>64 out 76 times, the driver that won the title was racing the car that won the Constructor World Championship. That&#8217;s more than 84% of the time. So there&#8217;s strength in the argument that the driver, in practice, doesn&#8217;t really matter. That <a href="https://en.wikipedia.org/wiki/Adrian_Newey">Adrian Newey</a> matters more than the drivers who race with one of his cars.</p><p>It might. But even if you have the best car in the grid, you have to at least be faster than your teammate.</p><p>And if it isn&#8217;t experience, nor the guidance of a father who was a driver himself, nor money, then what?</p><p>It must be <strong>the driver who can squeeze the most of the car he&#8217;s got</strong> that separates the good drivers from the championship material.</p><p>It must be the mechanical sympathy.</p><blockquote><p>You don&#8217;t have to be an engineer to be a racing driver, but you do have to have Mechanical Sympathy.</p><p>&#8212; <a href="https://en.wikipedia.org/wiki/Jackie_Stewart">Jackie Stewar</a>t, 3 times World Champion</p></blockquote><p>Mechanical Sympathy is an innate feel for the car. It&#8217;s being able to break at the right moment at every turn, considering the tires wearing out. It&#8217;s being aware of everything, including <a href="https://youtu.be/n7pYcNeUduo?si=7W6w6qnrv5fOzui_&amp;t=38">checking the flag on the side</a> for wind direction.</p><p>If there&#8217;s such a thing as mechanical sympathy for engineers, most of us don&#8217;t have it. Even worse: many might even believe they have it, but based on notions about the underlying technology that are not true, or no longer so.</p><p>Which is why this article, hell even this whole series, came to be.</p><p>Over the last month and change, we&#8217;ve looked at stock exchange technology from the point of view of ledgers practitioners. In <a href="https://news.alvaroduran.com/t/from-stock-markets-to-ledgers">From Stock Markets To Ledgers</a>, we&#8217;ve looked at how the systems at NASDAQ, NYSE or Euronext work, not to understand them completely, but to apply some of its takeaways to the building of ledgers.</p><p>And in this article, the last one in the series, we&#8217;re coming full circle. We&#8217;ve seen <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-series">why fairness is more important than speed</a>, <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part">why fault tolerance is about understandable code, and not simply correctness</a>, and <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-f5f">the four notions of time</a>. We then looked at <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-b14">why AMQP failed</a>, and I encouraged you to <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-cf3">deploy to production every day</a> with a CrossFit analogy.</p><p>The overarching theme behind this series is this: <strong>you don&#8217;t get to make better software products by mindlessly using what already exists, or copying what already works</strong>.</p><p>The moral of the stock market&#8217;s technology story is: the next generation isn&#8217;t built as a continuation. It&#8217;s a pivot.</p><p>Those who have a superficial understanding of the tech stack are forced to follow the rules. They&#8217;re vibe coding, even if they don&#8217;t use AI. <strong>Only those who understand the tech stack and its rules can change former and break the latter</strong>.</p><p>This is the path of those who want to achieve mechanical sympathy.</p><p>In this article, I&#8217;m going to look at 3 books as a way to approach the process of achieving mechanical sympathy.</p><ul><li><p>Why I chose these books over everything else (other books, online tutorials, courses, etc)</p></li><li><p>How I approach the material</p></li><li><p>What each of these books represent so that you can pick up your own reading stack</p></li></ul><p>The books in themselves don&#8217;t matter as much as the process. Your path may be different, and so will be the books that you pick up. But feel free to start with them, and see where that leads you.</p><p>Let&#8217;s dive in.</p><h2>3 types of books</h2><p>Valuable books fall into three categories:</p><ul><li><p>DIY books</p></li><li><p>From practitioner to expert books</p></li><li><p>Exotic topic for the uninitiated</p></li></ul><p>If you have a book that doesn&#8217;t fall into any of these buckets, <strong>throw it away</strong>.</p><p>I&#8217;m serious about this. We&#8217;re surrounded by books promising results in 21 days, or a week, or even in an hour.</p><p>Such books are based on the idea that feeling good is indistinguishable from being good. Deep down, you know it&#8217;s not. But it&#8217;s often hard to know the difference.</p><p>So here&#8217;s my foolproof heuristic for figuring out if a book is good: if it doesn&#8217;t feel like fighting Bane from The Dark Knight Rises, then it&#8217;s not valuable.</p><div id="youtube2-2BrPd1o-o1Q" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2BrPd1o-o1Q&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/2BrPd1o-o1Q?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>A good book is a wonderful way to increase your confusion and your stress levels.</p><p>Especially when it tackles a problem you <em>think you know well</em>. Good books go right into the kind of questions you never thought of asking yourself, and proceed to explain why you didn&#8217;t ask them, and what are their answers.</p><p>Good books are also practical. After reading them (<em>really</em> reading them), you&#8217;re a different person. Good books are akin to <a href="https://www.youtube.com/watch?v=fhrNgXJ__n8">Neo&#8217;s kung-fu training in The Matrix</a>.</p><p>A kick in the butt.</p><p>I am a student of money software. This means that I&#8217;m the most valuable when I learn from books about distributed systems that must be available enough while strongly consistent, provably correct, and auditable.</p><p>Which brings me to the three books I want to talk to you about.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-544">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[From Stock Markets To Ledgers, Part V: Continuous Deployment]]></title><description><![CDATA[I'm the Andrew Hiller of software releases]]></description><link>https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-cf3</link><guid isPermaLink="false">https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-cf3</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 03 Dec 2025 11:34:37 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5ee66b02-8c02-4894-94ff-e0c226452ec2_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zLc2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zLc2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png 424w, https://substackcdn.com/image/fetch/$s_!zLc2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png 848w, https://substackcdn.com/image/fetch/$s_!zLc2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png 1272w, https://substackcdn.com/image/fetch/$s_!zLc2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zLc2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png" width="914" height="736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:736,&quot;width&quot;:914,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:810428,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.alvaroduran.com/i/180519135?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zLc2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png 424w, https://substackcdn.com/image/fetch/$s_!zLc2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png 848w, https://substackcdn.com/image/fetch/$s_!zLc2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png 1272w, https://substackcdn.com/image/fetch/$s_!zLc2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f0cbb33-b173-4f66-b6fe-9d78a5a4f5a2_914x736.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Andrew Hiller, self-proclaimed &#8220;Fittest Youtuber on Earth&#8221;</figcaption></figure></div><p>This one is going to sound like a pep talk.</p><p>I seem to find no way around it: whenever I argue that you, or your team, should be deploying code changes to production every day, I get crap for it. &#8220;It&#8217;s because you have no idea what my team is doing&#8221;, they say, &#8220;and that&#8217;s why what you&#8217;re saying doesn&#8217;t apply to me. Clown&#8221;.</p><p>So I&#8217;m going to try a new approach: Andrew Hiller&#8217;s.</p><p>If you don&#8217;t know <a href="https://www.youtube.com/@hillerfit">Andrew Hiller</a>, he is a youtuber in the CrossFit space that became famous because he was calling out famous athletes for breaking the rules.</p><p>This is a very controversial topic. Every year, thousands of athletes enter the CrossFit Open to become one of the 40 men and 40 women who qualify to compete at the CrossFit Games. But this doesn&#8217;t happen in a central venue. Athletes submit their scores, along with videos of them doing the workouts. Some judge is meant to validate the score, and the top athletes go to compete in the Games.</p><p>This is all public, and for a long time nobody paid much attention to the thousands of videos uploaded on Youtube. Probably not even the judges either.</p><p>Enter Andrew Hiller.</p><p>CrossFit, at least in theory, is a sport in which standards are <em>very strict</em>. Its main youtube channel is filled with 1-minute long videos explaining even the most basic of movements: <a href="https://www.youtube.com/watch?v=auBLPXO8Fww">the burpee</a>, <a href="https://www.youtube.com/watch?v=L8fvypPrzzs">the lunge</a>, <a href="https://www.youtube.com/watch?v=_l3ySVKYVJ8">the pushup</a>, <a href="https://www.youtube.com/watch?v=rMvwVtlqjTE">the squat</a>. Even the box step up, which is exactly what you think it is, has <a href="https://www.youtube.com/watch?v=5qjqDHOUh-A">a video</a>.</p><p>In the burpee, you&#8217;re meant to jump at the end. In the lunge, your knee has to touch the floor, and then extend on top. In the squat, your hips must go deeper than the knee. And so on.</p><p>In practice, though, people tend to be very lenient when it comes to call a rep valid or not.</p><p>So what if I just squat deep enough for hips to go almost as deep as knee height? That&#8217;s a normal train of thought when you&#8217;re doing 100 of these.</p><p>Plus, you&#8217;re not competing to win anything, right? So why be so strict? What&#8217;s the point of calling out 65+ year olds who just want to be part of the fitness community? Shouldn&#8217;t we celebrate the fact that they&#8217;re working out instead of sit on their couch all day?</p><p>Hiller has none of it. When you step into the competition floor, the rules are The Rules.</p><p>The reason CrossFit is very strict when it comes to movement standards is because one of the main tenets of the sport is <em>being able to accurately measure your own improvement</em>. In CrossFit, you don&#8217;t do legs Mondays and Thursdays and upper body Tuesdays and Fridays; every day is something different. Workouts are also scored: you&#8217;re competing either to get a certain amount of reps for time, or to get the maximum amount of reps on a specific time span.</p><p>Eventually, you get to repeat the workout, and that&#8217;s when you compare your old score with the new one. <strong>CrossFit&#8217;s promise is that the newest score is going to be better</strong>.</p><p>But if you&#8217;re cheating the movement standard, you can&#8217;t be certain of your actual progress. </p><p>Say you&#8217;re running a marathon. But you&#8217;re allowed to use your bike at some random point, for a random amount of time. And then, you get to do that again six months later.</p><p>Would you be able to tell if you&#8217;re a faster runner?</p><p>You wouldn&#8217;t. That&#8217;s why Hiller is calling people out.</p><p>But the most important reason for doing so is because <strong>the movement standards are more difficult, and demand more mobility and strength from you</strong>. Over time, especially if you&#8217;re that 65 year old lady, and you don&#8217;t squat deep enough, you're training your muscles to get shorter, because they don&#8217;t get the right stimulus.</p><p>With every no rep, you&#8217;re not only cheating yourself. You&#8217;re actually harming your body.</p><p>This, however, isn&#8217;t a fitness newsletter. And I&#8217;m not trying to convince you to become a Crossfitter. The reason I&#8217;m bringing up Andrew Hiller is because <strong>I see tons of parallels between the excuses of people who don&#8217;t follow CrossFit standards and the engineers who don&#8217;t deploy their code changes every day</strong>.</p><p>&#8220;Finally&#8221;, you might be thinking, &#8220;I see where all of this is going&#8221;. Even if you don&#8217;t agree with it.</p><p>So let me cut to the chase: you might not be uploading a video of you saying that you&#8217;re not going to deploy this Friday because, well, it&#8217;s a Friday.</p><p>And I&#8217;m going to say that you&#8217;re only embarrassing yourself.</p><p>You&#8217;re the old lady who can&#8217;t squat.</p><div id="youtube2-8HFHIuNhxVM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;8HFHIuNhxVM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/8HFHIuNhxVM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I&#8217;m <a href="https://www.linkedin.com/in/alvaroduranbarata/">Alvaro Duran</a>, and this is <em>The Payments Engineer Playbook</em>. I&#8217;m not kidding, this is a newsletter targeting, not CrossFit athletes, but software developers building the systems that move money around.</p><p>This article is part of the series that I&#8217;ve called <a href="https://news.alvaroduran.com/t/from-stock-markets-to-ledgers">From Stock Markets to Ledgers</a>, where I&#8217;m tracking a few fundamental ideas that people building stock exchange technology have figured out, but the wider fintech community hasn&#8217;t.</p><p>And this week, I&#8217;m talking Continuous Delivery. Which, to me, it just means &#8220;deploy to production every day&#8221;.</p><p>In this article, we&#8217;re going to look at</p><ul><li><p>The 3 most common excuses people often make to avoid deploying daily</p></li><li><p>All the counter arguments</p></li><li><p>And one all-encompassing reason why you haven&#8217;t acted on any of this yet.</p></li></ul><p>Unlike <a href="https://en.wikipedia.org/wiki/DevOps_Research_and_Assessment#Accelerate_(book)">the Accelerate book</a>, I&#8217;m not going to &#8220;appeal to science&#8221; by mentioning surveys and statistics. You&#8217;re probably familiar with this line of research (even if vaguely), and it hasn&#8217;t moved the needle in your world.</p><p>Instead, I&#8217;m going to follow a line of reasoning similar to Andrew Hiller&#8217;s: I&#8217;m going to lay down why <strong>you&#8217;re embarrassing yourself with lame excuses, that deep down you know they&#8217;re excuses</strong>. And that, like people who don&#8217;t squat deep to go faster, <strong>you&#8217;re actively harming your personal growth in the process</strong>.</p><p>If you want the softer, free-to-read version, I wrote about how Stripe deploys 1,000 times every day.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ab4cecef-a0d8-449d-b323-ad2a054f5a8a&quot;,&quot;caption&quot;:&quot;Does your pipeline ground to a halt on Fridays? Good.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Stripe Deploys 1,000 Times A Day And You Don't Deploy On Fridays&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:1153821,&quot;name&quot;:&quot;Alvaro Duran&quot;,&quot;bio&quot;:&quot;Every stroke contributing to the point of the painting.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d227a4d-6bf5-4798-86e2-23020700e54a_3024x4032.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-04T09:00:57.306Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3040dcd-a6c8-4fa8-abc6-eb66ac8949dd_1920x1080.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://news.alvaroduran.com/p/stripe-deploys-1000-times-a-day-and&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:164898066,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:1,&quot;publication_id&quot;:1699418,&quot;publication_name&quot;:&quot;The Payments Engineer Playbook&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8YPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a99386-e8f8-4abb-9e8c-4bc7e19c93df_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>But if you need something stronger, then let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-cf3">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[From Stock Markets To Ledgers, Part IV: Queues]]></title><description><![CDATA[AMQP failed, but companies building ledgers pretend that it didn't]]></description><link>https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-b14</link><guid isPermaLink="false">https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-b14</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 26 Nov 2025 15:01:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7e42242d-dc61-4182-8c3c-156d1079eaa2_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AMQP was born with the goal of solving business messaging once and for all.</p><p>Messages are atomic pieces of data. When you send messages, the recipient either gets them completely, or they don&#8217;t. What&#8217;s useful about this is that <strong>messages can be queued</strong>, which releases a lot of pressure on the receiver about the way these messages are processed. Queues also decouple the sending and the receiving of the messages, which is particularly helpful for systems that communicate a lot, but belong to different companies.</p><p>Banking systems are almost always designed this way, and that&#8217;s why the Advanced Message Queueing Protocol project was started by a bank consortium.</p><p>This being a series on stock exchange systems, you shouldn&#8217;t be surprised to learn that middlewares have historically been the main performance bottleneck. Processing north of 500K events per second and executing timely makes it impossible to use TCP because it comes with built-in safety mechanisms that affect throughput and latency.</p><blockquote><p>[A] large part of the uncertainty and the variation that comes from TCP are these self-learning algorithms that are very concerned about network health. When we would work with the Linux kernel maintainers and have questions about variability that we saw, then they would say, &#8220;Well, you shouldn&#8217;t be using TCP. If you care about latency, you shouldn&#8217;t be using TCP. TCP makes trade offs all the time, for network health, and so on and so forth. And for the Internet that is absolutely necessary. And if you really have these super tight requirements, and you really want them to get there fast, and you have a controlled network with very little packet loss, and very few layers between participants, you should be using UDP.&#8221;</p><p>&#8212; Brian Nigito, <a href="https://signalsandthreads.com/multicast-and-the-markets/">Multicast and the Markets</a></p></blockquote><p>Over time, banks have managed to create open technical standards to do business. You may have heard of FIX (Financial Information Exchange), which is used regularly in trading, but it&#8217;s so complex that you often need <a href="https://fiximate.fixtrading.org/">some tool to generate the message for you</a>. Same with FAST (FIX Adapted for Streaming), FpML (Financial products Markup Language) and SWIFT<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>: these are terrible protocols to work with, and the only reason people put up with them is because there are no widespread alternatives.</p><p>Which begs the question: why not? Well, banks have quite a bad reputation when it comes to technology. The whole reason fintech is a thing is because, for the longest time, banks have considered technology a &#8220;non-core competency&#8221;. Tech is for nerds. Engineers are the water boys of the football team.</p><p>And then, all of a sudden, they weren&#8217;t.</p><p>It&#8217;s 2003. <a href="https://www.linkedin.com/in/johara/">John O&#8217;Hara</a>, then Distinguished Engineer at JP Morgan, has had enough. His job is to build front- and back-office processing systems, and it seems to him that banks live in &#8220;<a href="https://spawn-queue.acm.org/doi/10.1145/1255421.1255424">integration Groundhog Day</a>&#8221;.</p><p>Every discussion on making things better ended in &#8220;the chosen middleware makes it really expensive&#8221;.</p><p>The issue is, of course, interoperability. Or the lack thereof. It&#8217;s the same issue that Modern Treasury&#8217;s CEO raised in Bad Software and Expensive Mistakes when he talked about that time Citigroup &#8220;accidentally&#8221; wired $900 million and then couldn&#8217;t get them back:</p><blockquote><p>Building on these interfaces takes investment of time and resources, because bank cores are challenging to integrate with and understand. Some banks use <a href="https://www.moderntreasury.com/journal/what-is-direct-transmission">Direct Transmission</a> over SFTP while others provide SOAP APIs. Timings <a href="https://docs.moderntreasury.com/reference#ach-timings">vary</a>. There are different, competing, data exchange formats for things like reporting on errors, and the configurations can vary from banks on identical cores.</p><p>When pressed for resources, teams cut corners. It&#8217;s hard to justify investing in wonderful design and robust systems for internal processes, so much of what&#8217;s out there is half-built, inflexible, and non-intuitive, and rarely gets any attention from the design team.</p><p>The result of poor software is workarounds.</p><p>&#8212; Dimitri Dadiomov, <a href="https://www.moderntreasury.com/journal/bad-software-and-expensive-mistakes">Bad Software and Expensive Mistakes</a></p></blockquote><p>Having waited 7 years for someone to do something about it, O&#8217;Hara took the matter into his own hands. Initially, as a JP Morgan-only initiative, then through a contracting company called iMatix.</p><p>Two years later, in order to increase adoption, JP Morgan approached all the right technology companies (Cisco, Red Hat, Microsoft) and the right banks (Bank of America, Goldman, Credit Suisse) and created a working group that included people <a href="https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol">from 23 different companies</a>.</p><p>And quickly, things started to decline.</p><p>In 2008, the CEO of iMatix published <a href="https://web.archive.org/web/20110906085106/http://www.imatix.com/articles:whats-wrong-with-amqp">What is wrong with AMQP (and how to fix it)</a>, highlighting the problems derived from too many cooks in the kitchen:</p><blockquote><p>The specification seems to be out of control, getting more and more complex without a clear plan or architecture. AMQP products don&#8217;t interoperate except in some limited cases. Core protocol aspects are unstable, and more ambitious functionality not happening. The Working Group is getting tired, and many of the original developers have burnt out.</p><p>Today, most of my team at iMatix has written off AMQP as a &#8220;failure&#8221;.</p><p>&#8212; Pieter Hintjens, <a href="https://web.archive.org/web/20110906085106/http://www.imatix.com/articles:whats-wrong-with-amqp">What is wrong with AMQP (and how to fix it)</a></p></blockquote><p>By then, iMatix had &#8220;soft abandoned&#8221; the AMQP project, and had started working on a better alternative. One that turned all the assumptions embedded in AMQP upside down.</p><p>They called it ZeroMQ.</p><div><hr></div><h4>A Newsletter For The Engineers That Keep Money Moving</h4><p>Designing payment systems for interviews is easy. Designing them for millions of transactions is not.</p><p>After nearly a decade building and maintaining large-scale money software, I&#8217;ve seen what works (and what doesn&#8217;t) about software that moves money around. In <strong>The Payments Engineer Playbook</strong>, I share one in-depth article every Wednesday with breakdowns of how money <em>actually</em> moves.</p><p>If you&#8217;re an engineer or founder who needs to understand money software in depth, join close to 2,000 subscribers from companies like Shopify, Modern Treasury, Coinbase or Flywire to learn how real payment engineers plan, scale, and build money software.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.alvaroduran.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>This series is called <a href="https://news.alvaroduran.com/t/from-stock-markets-to-ledgers">From Stock Markets to Ledgers</a>. We&#8217;re looking at the technology that powers NASDAQ and NYSE in order to build the software that moves money around. Faster, more performant, more correct.</p><p>This week, we&#8217;re looking at ZeroMQ, a protocol for message communication that, like Raft, looks at the problem at hand from first principles. In this article, we&#8217;re going to look at:</p><ul><li><p>Why ZeroMQ is a library</p></li><li><p>The tradeoff between throughput and latency</p></li><li><p>And a big takeaway to build ledgers with better throughput</p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-b14">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[From Stock Markets To Ledgers, Part III: Time]]></title><description><![CDATA[I find Feynman&#8217;s quote that &#8220;nobody understands quantum mechanics&#8221; a bit silly.]]></description><link>https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-f5f</link><guid isPermaLink="false">https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-f5f</guid><dc:creator><![CDATA[Alvaro Duran]]></dc:creator><pubDate>Wed, 19 Nov 2025 11:17:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9363d0b6-94f3-4ab7-8fbe-e37880e0951b_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I find Feynman&#8217;s quote that &#8220;<a href="https://www.youtube.com/watch?v=w3ZRLllWgHI">nobody understands quantum mechanics</a>&#8221; a bit silly.</p><p>Quantum mechanics&#8217; main tenet, the idea that an electron can be both a particle and a wave, is actually quite intuitive. And there&#8217;s plenty of real-world analogies that make it familiar, even obvious.</p><p>Let me give you a very simple one: language.</p><p>Most European languages divide concepts into (roughly) two camps: nouns and verbs<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. There&#8217;s oil and water, and you can run and cook. These are two separate camps that describe things in the world, and actions being performed.</p><p>But you can also oil your car and water your plants; and you can go for a run, and work as a cook. There&#8217;s a fluidity in the language where the action being performed and the object related to it revolve around the same concept, and both noun and verb are a manifestation of being the thing and doing the thing.</p><p>You milk a cow to get milk, after all.</p><p>Let me give you another: the economy. <a href="https://www.youtube.com/watch?v=A81DYZh6KaQ">Money can be exchanged for goods and services</a>: you can buy peanuts, and you can hire a VA to handle your email. But you can also pay a Netflix subscription, which is a product that consist of being able to watch movies on demand, or you can pay a consultant for one of their <a href="https://en.wikipedia.org/wiki/Service_as_a_product">productized services</a>. You can DoorDash food to your place rather than having to go to a restaurant (and DoorDash is now a verb, see what I did there?).</p><p>Money is the abstraction of being able to buy, and it becomes concrete in the things we buy: be it goods, services, or anything in between.</p><p>You probably see where I&#8217;m going with this, but let me give you one last example: your body.</p><p>When you get a blood test, the results tell you, among other things, an estimation of how many white cells there are in your body, and of which kind. This tells you a lot about your immune system, and could signal a lot, from having a cold to AIDS or leukemia.</p><p>But the thing is, the number of white cells in your bloodstream is pointless. What matters is that they&#8217;re there <em>to do something</em>. The presence (or absence) of white cells is meaningful to the extent that white cells are produced by your body to protect your organism from external agents. The only reason we count them is because it is impossible to see white cells in action, and we can only infer what&#8217;s going on from counting them. The presence of white cells and what they&#8217;re doing are two manifestations of the same thing: a bodily response to the environment.</p><p>Electrons being particle and wave is analogous to all that. What we perceive is an incomplete manifestation of a whole. We milk to get milk; we buy things and jobs with a number in our bank account; we have white cells to defend ourselves.</p><p><strong>Objects are tangible manifestations of state</strong>. We see how they are <em>now</em>, and we see them <em>doing things</em>. <strong>Processes are elusive manifestations of time</strong>. We know that <em>something has happened</em> because the state is different from what it was before.</p><p>We perceive time by noticing that things aren&#8217;t the way they used to be.</p><p>Quantum mechanics isn&#8217;t <a href="https://www.youtube.com/watch?v=fGqbRL7ATmw">Tenet</a> levels of hard<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>. It&#8217;s just that humans are really bad at thinking about processes.</p><p>When I was talking about money, was it simpler for you to think about buying stuff, or hiring somebody? Doesn&#8217;t it feel like astronomy is more about stars and planets than it is about supernovas and the gravitational pull? Isn&#8217;t your body simpler to think about in terms of organs rather than hormones?</p><p>Yes, yes, and yes. Humans unconsciously prefer to think about the world in terms of objects, rather than processes. Structure, rather than behavior.</p><p>The same exact bias happens, of course, to software engineers. And that is a pity, because stock markets, and ledgers, aren&#8217;t about objects. They&#8217;re about processes.</p><div><hr></div><h4>A Newsletter For The Engineers That Keep Money Moving</h4><p>Designing payment systems for interviews is easy. Designing them for millions of transactions is not.</p><p>After nearly a decade building and maintaining large-scale money software, I&#8217;ve seen what works (and what doesn&#8217;t) about software that moves money around. In <strong>The Payments Engineer Playbook</strong>, I share one in-depth article every Wednesday with breakdowns of how money <em>actually</em> moves.</p><p>If you&#8217;re an engineer or founder who needs to understand money software in depth, join close to 2,000 subscribers from companies like Shopify, Modern Treasury, Coinbase or Flywire to learn how real payment engineers plan, scale, and build money software.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.alvaroduran.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.alvaroduran.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>This article is Part III of the <a href="https://news.alvaroduran.com/t/from-stock-markets-to-ledgers">From Stock Markets to Ledgers</a> series, where I&#8217;m going deep into the design and implementation of stock market systems, not only because it&#8217;s so interesting and fun, but also because there are lots of good lessons for those building ledger systems.</p><p>In today&#8217;s article, I&#8217;ll focus on one interesting aspect of stock market system design: how central time is, and how bad humans are at reasoning about it.</p><p>We&#8217;ll look at:</p><ul><li><p>What HR organizing the Christmas dinner and Apache Flink have in common</p></li><li><p>The 4 notions of time (you&#8217;re probably storing only one)</p></li><li><p>The trade-off between quickness and completeness</p></li><li><p>Two useful approaches to engage in it: watermarks and snapshots</p></li><li><p>And a useful takeaway for ledger builders</p></li></ul><p>Enough intro, let&#8217;s dive in.</p>
      <p>
          <a href="https://news.alvaroduran.com/p/from-stock-markets-to-ledgers-part-f5f">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>