<?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 Serverless Mindset]]></title><description><![CDATA[Ideas and Thoughts for Crafting Good Software, from Marco Troisi]]></description><link>https://www.theserverlessmindset.com</link><image><url>https://substackcdn.com/image/fetch/$s_!kgkX!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F21e2c970-1def-4fcd-89f9-a3f8b83dc3a1_500x500.png</url><title>The Serverless Mindset</title><link>https://www.theserverlessmindset.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 04 May 2026 02:27:36 GMT</lastBuildDate><atom:link href="https://www.theserverlessmindset.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Marco Troisi]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[marcotroisi@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[marcotroisi@substack.com]]></itunes:email><itunes:name><![CDATA[Marco Troisi]]></itunes:name></itunes:owner><itunes:author><![CDATA[Marco Troisi]]></itunes:author><googleplay:owner><![CDATA[marcotroisi@substack.com]]></googleplay:owner><googleplay:email><![CDATA[marcotroisi@substack.com]]></googleplay:email><googleplay:author><![CDATA[Marco Troisi]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[S3 Files: The Missing Piece We All Pretended Wasn’t Missing]]></title><description><![CDATA[AWS just launched S3 Files, a new service that lets you mount an S3 bucket as a real file system across EC2, ECS, EKS, and even Lambda.]]></description><link>https://www.theserverlessmindset.com/p/s3-files-the-missing-piece-we-all</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/s3-files-the-missing-piece-we-all</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Wed, 08 Apr 2026 09:14:28 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4256" height="2832" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2832,&quot;width&quot;:4256,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;file cabinet&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="file cabinet" title="file cabinet" srcset="https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1569235186275-626cb53b83ce?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxmaWxlc3xlbnwwfHx8fDE3NzU2MzkzOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@qwitka">Maksym Kaharlytskyi</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>AWS just launched <a href="https://aws.amazon.com/s3/features/files/">S3 Files</a>, a new service that lets you mount an S3 bucket as a real file system across EC2, ECS, EKS, and even Lambda. It&#8217;s one of those announcements that lands with a quiet sense of inevitability. Of course S3 should behave like this. Of course teams want direct, file&#8209;system&#8209;style access to the data they already keep in S3. <strong>It&#8217;s surprising how long we all worked around the gap</strong>.</p><p>For years, we&#8217;ve lived with an awkward divide. Object storage was durable, cheap, and the natural home for almost all data. File systems were interactive, hierarchical, and mutable, but expensive and operationally heavy. Any workload that needed &#8220;S3 data, but as files&#8221; ended up with a patchwork of solutions that always felt slightly off. Sync jobs, FUSE layers, EFS pipelines, custom wrappers &#8212; all workable, none satisfying.</p><p>S3 Files finally closes that gap in a way that <em>feels native</em> instead of bolted on.</p><h2>What AWS Actually Shipped</h2><p>From the announcement, S3 Files provides:</p><ul><li><p>A proper NFSv4.1+ file system interface backed by S3  </p></li><li><p>Low&#8209;latency access for active data using a high&#8209;performance layer  </p></li><li><p>Direct reads from S3 for large sequential access patterns  </p></li><li><p>Byte&#8209;range reads so you only fetch what you need  </p></li><li><p>Automatic sync back to S3 with versioning semantics  </p></li><li><p>Concurrent access across compute without duplication  </p></li><li><p>IAM and POSIX permissions, CloudWatch metrics, CloudTrail logging  </p></li></ul><p>It&#8217;s a clean mental model: S3 stays the source of truth, and you get a file&#8209;system view when you need one.</p><h2>Why This Matters</h2><p>Every alternative we&#8217;ve had until now was always missing something.</p><ul><li><p>EFS gave us a managed file system, but not a native view of S3 data.  </p></li><li><p>FSx gave us specialised file systems, but not the universality of S3.  </p></li><li><p>DIY sync jobs gave us control, but also drift and operational overhead.  </p></li><li><p>FUSE&#8209;based S3 mounts gave us hope, then reminded us why abstraction layers are hard.  </p></li></ul><p>S3 Files is the first option that doesn&#8217;t feel like a compromise. It&#8217;s S3, presented in a way that aligns with how teams actually work.</p><div><hr></div><p>&#128293;<em><strong> Sponsored by QuickTable</strong></em> </p><p><em>QuickTable is the refreshingly simple way for restaurants to take online bookings. No clunky dashboards, no endless setup &#8212; just clean, intuitive design that works. It&#8217;s built with the same technical principles we celebrate in The Serverless Mindset: simplicity, resilience, and focus on what really matters.</em></p><p><em>And here&#8217;s the best part: friends of this newsletter get a full year free. That&#8217;s right,twelve months of effortless booking, on the house. Don&#8217;t miss it, use <a href="https://app.quicktable.co/signup/?source=tsm">this signup link</a>.</em></p><div><hr></div><h2>Pricing: Surprisingly Reasonable</h2><p>The pricing model is straightforward. Reads served directly from S3 don&#8217;t incur additional S3 Files charges, which is exactly the behaviour you&#8217;d hope for. You pay for:</p><ul><li><p>Data stored in the high&#8209;performance layer </p></li><li><p>Small file reads and all writes  </p></li><li><p>S3 requests generated during sync  </p></li></ul><p>There are caveats, so the pricing page is worth a proper read, but the overall shape feels fair. For many workloads, this will be cheaper and cleaner than maintaining a separate file system layer or duplicating data across services.</p><h2>The Bigger Picture</h2><p>This launch removes a friction we&#8217;ve all worked around for years. </p><p>It tidies up pipelines, reduces the amount of glue code teams end up maintaining, and lets S3 sit more naturally at the centre of both batch and interactive workloads. </p><p>It&#8217;s the kind of feature that feels obvious once you see it, yet still manages to open up new architectural paths. S3 Files fits neatly into the way people already think about building on AWS, and that&#8217;s exactly why it&#8217;s going to matter.</p>]]></content:encoded></item><item><title><![CDATA[How I Use AI Every Day Without Losing My Mind]]></title><description><![CDATA[It's still (mostly) up to us]]></description><link>https://www.theserverlessmindset.com/p/how-i-use-ai-every-day-without-losing</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/how-i-use-ai-every-day-without-losing</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Mon, 06 Apr 2026 16:04:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kgkX!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F21e2c970-1def-4fcd-89f9-a3f8b83dc3a1_500x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every week I meet someone who tells me they&#8217;ve lost all motivation to write software because &#8220;AI does everything now&#8221;. Or I see yet another post from a developer saying their attention span has collapsed, they feel exhausted by 4pm, and they&#8217;re wondering if they should leave the industry altogether.</p><p>I get it. The last two years have been a psychological earthquake for programmers. But here&#8217;s the funny thing. Anyone who knows me knows I&#8217;ve been <em>highly critical</em> of LLMs for programming. I&#8217;ve never believed in vibe coding. I don&#8217;t think these models are anywhere near good enough to replace us. And I absolutely don&#8217;t think we should lazily hand over our craft to a stochastic parrot with a GPU bill.</p><p>And yet, I&#8217;ve been using AI extensively for months now. And I&#8217;ve been&#8230; enjoying it.</p><p>I&#8217;m not going to claim I&#8217;m &#8220;10x more productive&#8221; (so cringe). Some things are faster, some things are slower, and a lot of things have simply shifted. I spend less time writing the initial code and more time reviewing, correcting, and steering. But overall, <em>the work feels lighter</em>. My brain isn&#8217;t fried at the end of the day. I actually have mental space left for architecture, quality, and strategy.</p><p>So why haven&#8217;t I fallen into the AI-induced malaise so many developers describe? Why am I not depressed, demotivated, or convinced that my job is meaningless?</p><p>For me, it comes down to three habits:</p><h2>1. I stay inside the code. Every day.</h2><p>My Neovim is always open next to my AI window. I never vibe code. I never let the model run wild. I&#8217;m constantly dipping in and out of the editor, making small manual changes, keeping my hands on the clay.</p><p>This keeps me engaged with the codebase. It keeps my skills sharp. And it makes my prompts dramatically better because I&#8217;m not guessing. I know exactly what I&#8217;m asking for and exactly what I want back.</p><p>AI becomes a collaborator, not a replacement. I stay in the loop, not above it.</p><h2>2. I stay close to the customer.</h2><p>This one predates AI by years. I used to be the classic ivory&#8209;tower engineer who cared more about the elegance of the code than the people using the product. Thankfully, wiser leaders beat that out of me.</p><p>Now, when AI helps me ship something faster or cleaner, I picture the actual human who needs that fix or feature. I picture their relief, their smile, their &#8220;oh thank God&#8221;.</p><p>It&#8217;s hard to resent AI for &#8220;taking your craft&#8221; when you&#8217;re busy serving real people better than before.</p><h2>3. I reject multitasking with religious zeal.</h2><p>A programmer recently told me her company is obsessed with Conductor, this new tool that lets you run armies of agents in parallel. She&#8217;s miserable. She&#8217;s thinking of leaving the industry.</p><p>I looked at Conductor. It&#8217;s monstrous. It&#8217;s the worst idea I&#8217;ve seen in years.</p><p>We have mountains of research showing that multitasking destroys productivity, morale, and cognitive health. Yet tech executives keep pushing it because it looks futuristic. It&#8217;s the same logic that gave us open offices. Everyone knows they&#8217;re terrible, but they photograph well.</p><p>I refuse to play that game. I do one thing at a time. AI or no AI.</p><div><hr></div><p>So where does this leave us?</p><p>I have my bad days. I roll my eyes at the Sam Altman hype machine. I&#8217;m allergic to the <em>apocalyptic sermons</em> coming out of Anthropic. But I&#8217;m also not blind. LLMs are a cool, powerful technology. They&#8217;re genuinely useful for a small subset of tasks, and some of those tasks happen to be part of software development.</p><p>The trick is not to surrender your craft, your attention, or your sense of purpose.</p><p>Stay in the code. Stay with the customer. Stay with one task at a time.</p><p>If you do that, AI doesn&#8217;t hollow you out. It just becomes another tool on your bench. A sharp one, sure, but still just a tool.</p><p>And you get to keep the part of programming that actually matters: the thinking, the judgment, the care, the craft.</p><p>That&#8217;s the part AI can&#8217;t touch.</p><p></p><div><hr></div><p>&#128293;<em><strong> Sponsored by QuickTable</strong></em> </p><p><em>QuickTable is the refreshingly simple way for restaurants to take online bookings. No clunky dashboards, no endless setup &#8212; just clean, intuitive design that works. It&#8217;s built with the same technical principles we celebrate in The Serverless Mindset: simplicity, resilience, and focus on what really matters.</em></p><p><em>And here&#8217;s the best part: friends of this newsletter get a full year free. That&#8217;s right,twelve months of effortless booking, on the house. Don&#8217;t miss it, use <a href="https://app.quicktable.co/signup/?source=tsm">this signup link</a>.</em></p>]]></content:encoded></item><item><title><![CDATA[Made in Europe = Made Everywhere]]></title><description><![CDATA[Character and a clear identity matter more than ever]]></description><link>https://www.theserverlessmindset.com/p/made-in-europe-made-everywhere</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/made-in-europe-made-everywhere</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Tue, 27 Jan 2026 11:20:05 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6000" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;lavender field&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="lavender field" title="lavender field" srcset="https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1499002238440-d264edd596ec?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNHx8ZnJhbmNlfGVufDB8fHx8MTc2OTQ5MjQxOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@ettocl">L&#233;onard Cotte</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>I&#8217;ve been thinking a lot about identity lately &#8212; not just national identity, but product identity. It started with a <a href="https://www.linkedin.com/posts/marcotroisi_lately-im-coming-across-more-and-more-french-activity-7421594450021310464-SL3E?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAdxQ7EB1Q27_NnwyjJjoiXNXPLCyzuao1g">simple observation</a>: more and more French tech websites are branding themselves as &#8220;Made in Europe &#127466;&#127482;&#8221; instead of &#8220;Made in France &#127467;&#127479;&#8221;.</p><p>Maybe there&#8217;s a political reason for it, but commercially it feels like a strange choice. &#8220;French&#8221; carries meaning. &#8220;Europe&#8221; doesn&#8217;t! When I read &#8220;Europe&#8221;, my instinct is to go looking for the actual Country.<br><br>What am I supposed to picture? German robustness, French flair, Italian aesthetics, Spanish warmth?</p><p>And the more I think about it, the more I realise the same thing is happening in software.</p><p>We&#8217;ve entered an era where every product wants to look like Apple, or Linear, or whatever the current design darling is. Perfect gradients, perfect spacing, perfect icons &#8212; all polished into the same smooth, <em>tasteful anonymity</em>.</p><p>But sameness is not a strategy. It&#8217;s camouflage.</p><p>If your product looks and behaves exactly like everything else, you&#8217;re not signalling quality. You&#8217;re signalling that you have nothing to say.</p><p>That&#8217;s why <a href="https://omarchy.org/">Omarchy</a>&#8217;s recent success fascinates me. A Linux&#8209;based OS that looks <em>nothing</em> like macOS, Windows, or mainstream Linux distros. It&#8217;s opinionated. It&#8217;s weird in places. It has a point of view. And people love it for exactly that reason. It stands out in a sea of safe, tasteful, derivative design.</p><p>There&#8217;s a lesson there.</p><p>To succeed, you need to be a little different. You need to find your voice, your angle, your flavour. Otherwise, you&#8217;ll be drowned out by the ever&#8209;growing noise, from social media, from AI&#8209;generated content, from the endless stream of &#8220;best practices&#8221; that slowly sand away anything recognisable.</p><p>People don&#8217;t connect with generic things. They connect with things that feel rooted, intentional, and specific. They connect with character.</p><p>And that&#8217;s something worth protecting! In cities, in brands, and in the products we build.</p><div><hr></div><p><em><strong>&#128293; Sponsored by QuickTable</strong> <br>QuickTable is the <strong>refreshingly simple way</strong> for restaurants to take online bookings. No clunky dashboards, no endless setup &#8212; just clean, intuitive design that works. It&#8217;s built with the same technical principles we celebrate in The Serverless Mindset: simplicity, resilience, and focus on what really matters.</em></p><p><em>And here&#8217;s the best part: <strong>friends of this newsletter get a full year free</strong>. That&#8217;s right &#8212; twelve months of effortless booking, on the house. Don&#8217;t miss it, use <a href="https://app.quicktable.co/signup/?source=tsm">this signup link</a>.</em></p>]]></content:encoded></item><item><title><![CDATA[In 2026, Read to Think]]></title><description><![CDATA[Finding sanity in long-form content]]></description><link>https://www.theserverlessmindset.com/p/in-2026-read-to-think</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/in-2026-read-to-think</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Fri, 12 Dec 2025 13:51:54 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6000" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;shallow focus photography of stack of books&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="shallow focus photography of stack of books" title="shallow focus photography of stack of books" srcset="https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1491841573634-28140fc7ced7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8Ym9va3N8ZW58MHx8fHwxNzY1NTI3OTg1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@chrislawton">Chris Lawton</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>A lot is happening.</p><p>The world has never been crazier.</p><p>We&#8217;re all about to be replaced by AI.</p><p>We&#8217;re on the brink of world destruction.</p><p>If you&#8217;ve found yourself entertaining these thoughts, you&#8217;re not alone. And it&#8217;s not because they&#8217;re true (well, they could, but there&#8217;s no way to know and there&#8217;s nothing you and I can do to stop it). </p><p>The truth is, we live in a noisy, distracted world.</p><p>Social media rewards hot takes over substance. AI tools churn out code, copy, and commentary at industrial scale. And while these tools can accelerate output, they also risk atrophying the very muscle that matters most in tech: <strong>the ability to think deeply.</strong></p><p>As developers, architects, and leaders, our success doesn&#8217;t come from typing faster or consuming more feeds. It comes from cultivating judgment, perspective, and the patience to wrestle with ideas until they yield clarity. In a world where shallow thinking is the default, depth becomes a competitive advantage.</p><p>So here&#8217;s my recommendation for 2026: read a book. </p><p>And while you&#8217;re at it, read books that make you think. Not just about technology, but about work, culture, and life. </p><p>These are a few of the books that have shaped my thinking in recent times. I highly recommend each one of them.</p><div><hr></div><p><em><strong>&#128293; Sponsored by QuickTable</strong> <br>QuickTable is the <strong>refreshingly simple way</strong> for restaurants to take online bookings. No clunky dashboards, no endless setup &#8212; just clean, intuitive design that works. It&#8217;s built with the same technical principles we celebrate in The Serverless Mindset: simplicity, resilience, and focus on what really matters.</em></p><p><em>And here&#8217;s the best part: <strong>friends of this newsletter get a full year free</strong>. That&#8217;s right &#8212; twelve months of effortless booking, on the house. Don&#8217;t miss it, use <a href="https://app.quicktable.co/signup/?source=tsm">this signup link</a>.</em></p><div><hr></div><h3><em><a href="https://amzn.to/4pH7DLC">Slow Productivity</a></em> &#8212; Cal Newport</h3><p>I&#8217;ve long felt that the widespread adoption of open offices and always-on chats have, on the whole, a detrimental effect on our productivity and our ability to think.  </p><p>In this best-selling book, Professor Cal Newport of Georgetown lays out the empirical evidence for why this is the case. He also provides helpful tactics and strategies to prioritise meaningful, sustainable output over frantic activity. </p><h3><em><a href="https://amzn.to/3YuoXqR">The Revenge of Analog</a></em> &#8212; David Sax</h3><p>Remember when Kindle was launched, and we were told that physical books were over? Fast-forward 18 years, and physical books are still going strong. The market share of e-readers, on the other hand, has stalled. </p><p>The same has been true of watches, music, note-taking, and many other fields. </p><p>As a technologist, this book will challenge you profoundly. We work in a field that puts a premium on progress, automation, and efficiency. But efficiency is not the peak of human experience, and automating away the things that give us joy is -arguably- not the way to make progress as a society.</p><p>Read this book, and then gift yourself a record player or a beautiful physical notebook. </p><h3><em><a href="https://amzn.to/48TWobv">The Holistic You</a></em> &#8212; Rabbi Daniel &amp; Susan Lapin</h3><p>Life is about making progress in several areas, all at the same time.</p><p>You can push hard on work, but it&#8217;s likely to come at the expense of your family life. You can invest a lot of time in your hobbies, but you might find that they don&#8217;t pay the bills. </p><p>The key to a happy life, then, is to find a way to move forward on all the important areas of life: family, friendship, faith, fitness, and finances.</p><p>This Jewish Rabbi and his wife offer a perspective on integrating values, relationships, and purpose. </p><p>For anyone in tech, it&#8217;s a call to align craft with character, not just output with metrics.</p><h3><em><a href="https://amzn.to/3XSD4pT">How to Winter</a></em> &#8212; Kari Leibowitz</h3><p>A guide to resilience and mindset, drawn from cultures that thrive in long, dark seasons.</p><p>Some of the happiest societies live in colder climates. You may not need to move to a warmer place to find happiness. </p><p>If you apply the philosophies explained in this book not just to the weather, but to most challenges in life, you&#8217;ll find that your mindset and how you approach things is all that matters. </p><h3><em><a href="https://amzn.to/44mPV7n">Unreasonable Hospitality</a></em> &#8212; Will Guidara</h3><p>A story of radical generosity in service. A masterclass in exceeding expectations and designing experiences that delight far beyond the functional. </p><p>If you live in Europe, this book could make you uncomfortable as it takes for granted American-style customer care and then takes it to a new level. If you&#8217;re American, this book will challenge you nonetheless.</p><h3>The takeaway</h3><p>In 2026, don&#8217;t just consume more content. Read long-form, well thought out content. Choose books that stretch your thinking, challenge your assumptions, and remind you that technology is built by humans, for humans. </p><p>Deep thinking isn&#8217;t optional. It&#8217;s the skill that makes every other skill matter.</p>]]></content:encoded></item><item><title><![CDATA[Lambda Functions are now "Durable"]]></title><description><![CDATA[State Machines Without the Pain]]></description><link>https://www.theserverlessmindset.com/p/lambda-functions-are-now-durable</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/lambda-functions-are-now-durable</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Fri, 05 Dec 2025 16:07:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!a6-Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.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_!a6-Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a6-Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png 424w, https://substackcdn.com/image/fetch/$s_!a6-Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png 848w, https://substackcdn.com/image/fetch/$s_!a6-Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png 1272w, https://substackcdn.com/image/fetch/$s_!a6-Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a6-Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png" width="969" height="533" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:533,&quot;width&quot;:969,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:246973,&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://www.theserverlessmindset.com/i/180807071?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.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_!a6-Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png 424w, https://substackcdn.com/image/fetch/$s_!a6-Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png 848w, https://substackcdn.com/image/fetch/$s_!a6-Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.png 1272w, https://substackcdn.com/image/fetch/$s_!a6-Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F532e14ee-b339-49ff-9254-71c9c844bd94_969x533.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>AWS just launched <strong>Lambda Durable Functions</strong> at re:Invent 2025, and they might quietly be one of the most important additions to the serverless toolbox in years.</p><h3>What are Durable Functions?</h3><p>Durable functions let you write <strong>multi&#8209;step, long&#8209;running workflows directly inside Lambda</strong>. You write sequential code in Python or TypeScript, wrap calls in <code>steps</code> (with automatic retries and checkpointing), and use <code>waits</code> to suspend execution for minutes, hours, or even up to a year &#8212; without paying for idle compute. When the function resumes, it replays from the start but skips completed checkpoints, guaranteeing consistency.</p><p>Think of it as Lambda with a <strong>built&#8209;in state machine</strong>.</p><div><hr></div><p><em><strong>&#128293; Sponsored by QuickTable</strong> <br>QuickTable is the <strong>refreshingly simple way</strong> for restaurants to take online bookings. No clunky dashboards, no endless setup &#8212; just clean, intuitive design that works. It&#8217;s built with the same technical principles we celebrate in The Serverless Mindset: simplicity, resilience, and focus on what really matters.</em></p><p><em>And here&#8217;s the best part: <strong>friends of this newsletter get a full year free</strong>. That&#8217;s right &#8212; twelve months of effortless booking, on the house. Don&#8217;t miss it, use <a href="https://app.quicktable.co/signup/?source=tsm">this signup link</a>.</em></p><div><hr></div><h3>How do they compare to Step Functions?</h3><p>Step Functions have always been the &#8220;official&#8221; way to orchestrate workflows in AWS. But let&#8217;s be honest: they&#8217;re verbose, hard to debug, and painful to maintain. Durable functions flip the model: instead of drawing JSON diagrams, you just write code. The SDK handles state, retries, and recovery behind the scenes. It&#8217;s <strong>simpler, more intuitive, and closer to how developers actually think</strong>.</p><h3>Why not just spin up a long&#8209;running service?</h3><p>Sure, you could run a workflow engine on EC2, ECS, or Fargate. But then you&#8217;re back to <strong>managing infrastructure, scaling, and idle costs</strong>. Durable functions inherit Lambda&#8217;s scale&#8209;to&#8209;zero model: no servers, no idle billing, no ops overhead. For workflows that wait on human approvals, external APIs, or multi&#8209;day processes, this is a huge win.</p><h3>Does it make sense pricing&#8209;wise?</h3><p>Yes. The killer feature is that <strong>waits don&#8217;t cost you compute</strong>. You only pay for actual execution time. That makes durable functions far cheaper than keeping a container alive for hours or days. For businesses, this means you can finally build resilient, long&#8209;running workflows without worrying about runaway costs.</p><h3>The bigger picture</h3><p>AWS is marketing this heavily for <strong>AI agent orchestration</strong> &#8212; chaining model calls, human feedback loops, etc. That&#8217;s fine, but don&#8217;t get distracted. The real opportunity is much broader: <strong>everything you used Step Functions for, but easier</strong>. Payments, order processing, onboarding flows, compliance checks &#8212; all now possible with clean, sequential Lambda code.</p><p>Durable functions are not just an AI play. They&#8217;re a <strong>simpler state machine baked into Lambda</strong>. And that opens the door to a whole new class of serverless applications.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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></p>]]></content:encoded></item><item><title><![CDATA[On Building Thriving Startup Teams]]></title><description><![CDATA[It's the opposite of what you see on social media]]></description><link>https://www.theserverlessmindset.com/p/on-building-thriving-startup-teams</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/on-building-thriving-startup-teams</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Fri, 28 Nov 2025 12:31:07 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6000" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;man in white shirt sitting on chair&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="man in white shirt sitting on chair" title="man in white shirt sitting on chair" srcset="https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1613417668910-98edb18f6e5d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8Y29uY2VudHJhdGlvbnxlbnwwfHx8fDE3NjQyMzI1NjB8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@nublson">Nubelson Fernandes</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Building a great startup team is less about perks and more about principles.  </p><p>I look for three things:  </p><ul><li><p><strong>Ownership</strong>: the ability to think about the whole experience, not just &#8220;my ticket.&#8221;  </p></li><li><p><strong>Managers of One</strong>: people who can handle themselves without hand&#8209;holding or endless 1:1s.  </p></li><li><p><strong>Love for the craft</strong>: the drive to improve, refine, and obsess over the tiny details.  </p></li></ul><p>Finding these traits is not easy. Not because there aren't people who would love to be like that. But because so much of the tech world has trained people to work in what Cal Newport calls the &#8220;<em>hyper-active hivemind</em>&#8221;. Noisy, interruption-prone open offices (coupled with just as noisy Slack channels) are the norm.</p><p>But there's something almost magic when I explain to people that I will not be running 1:1s with them, other than a couple of times a year. </p><p>When I tell engineers that (provided they comply with the task&#8217;s specs and overall architectural guidelines) they are free to make decisions on how to best build something. They don't need my permission, and they don't need to consult with the rest of the team. </p><p>I've gotten used to it: after an initial momentary confusion, people who get empowered like this, become extremely productive. </p><p>(Incidentally, trusting people this way is what allows me, as a leader, to stay &#8220;in the work&#8221;. My best contributions happen when I'm close to the code and the overall architecture. I do a disservice to everyone by getting bog down on people management and hand-holding.)</p><p>I've worked with many engineers who, after joining, have made the transition to this model. But there's also something that can be done to attract talent like that in the first place. </p><p>It's all about what gets offered. For me, it is usually:</p><ul><li><p>Remote&#8209;first by design.  </p></li><li><p>Almost meetings&#8209;free: long, uninterrupted blocks of productive time.  </p></li><li><p>No tool mandates: choose your stack, your setup, your style. I&#8217;ll only judge outcomes.  </p></li></ul><p>Most people attracted to this environment are exactly the ones who thrive in it: owners who manage themselves, and craftspeople who care about the details.  </p><p>I see so many companies these days insisting or even mandating how their people should work. This happens a lot with AI, where leaders assume they know best<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> how engineers will be most productive (and, surprise surprise, it involves using AI left right and centre). </p><p>I don't care if you want to handcraft your code on TextMate, or if you're all-in on the latest specs-driven AI hype. Build me high-quality software in a reasonable amount of time, and I'll cheer you on and support you all the way. </p><p><strong>The takeaway</strong></p><p>Simplicity isn&#8217;t about doing less; it&#8217;s about removing friction so the essentials shine. Team&#8209;building works the same way. Strip away the noise, and you&#8217;re left with people who own, manage, and craft.  </p><p>That&#8217;s the kind of team worth building (and leading).</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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 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>For example, https://x.com/tobi/status/1909251946235437514</p></div></div>]]></content:encoded></item><item><title><![CDATA[The Myth of Monolith Simplicity]]></title><description><![CDATA[How many non-spaghetti monoliths have you come across?]]></description><link>https://www.theserverlessmindset.com/p/the-myth-of-monolith-simplicity</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/the-myth-of-monolith-simplicity</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Fri, 21 Nov 2025 12:23:05 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6016" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:6016,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a fork full of spaghetti being held by a fork&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a fork full of spaghetti being held by a fork" title="a fork full of spaghetti being held by a fork" srcset="https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1675169594106-a3898f9fe59d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2NXx8c3BhZ2hldHRpfGVufDB8fHx8MTc2MzcyNzU2OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@tinkerman">Immo Wegmann</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Microservices require sophistication. They demand a grasp of architectural principles, distributed systems, and the discipline to design boundaries that hold.</p><p>But here&#8217;s the uncomfortable truth: <strong>Have you ever tried building &#8212; and keeping, over years &#8212; a truly clean, modular, performant monolith?</strong></p><p>The idea that microservices are inherently &#8220;more complex&#8221; than a monolith is a comforting illusion.</p><p>With a monolith, you <em>can</em> cut corners. You <em>can</em> sacrifice quality. And for a while, nobody pays the price. The codebase slowly devolves into spaghetti, but the engineers who wrote it may already have moved on by the time the pain becomes unbearable.</p><p>Microservices flip that dynamic.</p><ul><li><p>For architects, they demand more upfront thought.</p></li><li><p>For engineers, they require at least a basic grasp of distributed systems.</p></li></ul><p>But once proper guardrails are in place, the day-to-day work is smoother. You don&#8217;t need to constantly second-guess whether your abstractions are perfect. You don&#8217;t need to carry the weight of the entire system&#8217;s cleanliness in every commit.</p><p>A monolith, by contrast, punishes any lapse in discipline. <strong>Over time, entropy</strong><em><strong> </strong></em><strong>wins</strong>. Maintenance becomes harder, onboarding slower, and change riskier.</p><p>With microservices, the architecture itself absorbs the mess. One service may degrade in quality, but the system continues to scale. The boundaries protect you.</p><h3>The takeaway</h3><p>Microservices aren&#8217;t easy. They demand maturity. But the narrative that they&#8217;re &#8220;too complex&#8221; compared to monoliths misses the point. A monolith only <em>looks</em> simple until you&#8217;ve lived with it long enough to see the hidden cost of undisciplined design.</p><p>Serverless, microservices, modular monoliths &#8212; none of these are silver bullets. But if you&#8217;re serious about building systems that last, don&#8217;t mistake short-term convenience for long-term simplicity.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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[If You Have to Mention AI...]]></title><description><![CDATA[...maybe you don't have a product]]></description><link>https://www.theserverlessmindset.com/p/if-you-have-to-mention-ai</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/if-you-have-to-mention-ai</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Fri, 07 Nov 2025 19:22:46 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3024" height="4032" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4032,&quot;width&quot;:3024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;pile of tops&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="pile of tops" title="pile of tops" srcset="https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1572627286668-91c19b41b891?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxicmFuZC1sZXNzfGVufDB8fHx8MTc2MjU0MzMxNHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@heftiba">Toa Heftiba</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Here&#8217;s a rule of thumb I use when evaluating whether AI is actually helping me build something valuable:</p><blockquote><p>I should be able to show its value without mentioning AI.</p></blockquote><p>If I need to say &#8220;it uses AI&#8221; to justify the product, I&#8217;m not selling the product. I&#8217;m selling the idea of AI.</p><p>That&#8217;s not the same thing.</p><p>Real value doesn&#8217;t need a label. It&#8217;s felt. It&#8217;s obvious.  </p><p>If the product genuinely helps someone &#8212; saves time, reduces friction, solves a real pain &#8212; it will stand on its own.</p><p>We&#8217;ve seen this before.  </p><p>Facebook didn&#8217;t pitch itself as a &#8220;Web 2.0 platform&#8221;. It just helped people connect.  </p><p>Web 2.0 made that possible, but it wasn&#8217;t the point.</p><p>AI is the same.  </p><p>It&#8217;s an enabler. But it&#8217;s not the story. The story is: <strong>what did we build with it?</strong>  </p><p>Did we use it wisely?  </p><p>Did we make something simple, clear, and useful?</p><p>Right now, I see a lot of businesses selling the concept of AI.  </p><p>But AI isn&#8217;t the goal. Serving people is.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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[Do You Really Need a Staging Environment?]]></title><description><![CDATA["Works on my machine" might not be the devil, after all]]></description><link>https://www.theserverlessmindset.com/p/do-you-really-need-a-staging-environment</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/do-you-really-need-a-staging-environment</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Tue, 04 Nov 2025 17:21:28 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3831" height="2874" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2874,&quot;width&quot;:3831,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a small blue and white plane on a runway&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a small blue and white plane on a runway" title="a small blue and white plane on a runway" srcset="https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1641335403266-03bef889e60d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1MHx8cGlsb3QlMjBydW58ZW58MHx8fHwxNzYyMjc2NzU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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">There is only one way to know if an airplane works (Photo by <a href="https://unsplash.com/@maxpion21">Maxence Pion</a> on <a href="https://unsplash.com">Unsplash</a>)</figcaption></figure></div><p>A Staging environment is one of those things in software development that we take for granted. Of course you need a reliable, production-like environment where changes can be pushed to and safely tested without affecting live customers in production.</p><p>Here&#8217;s the problem though. A &#8220;reliable, production-like environment&#8221; is fantastically hard to achieve. And that&#8217;s not even the worst part. If you get there, it only takes a couple of semi-major changes pushed to it, and the rot begins. Things start to diverge from production in ways that make it hard to predict whether what you&#8217;re testing <em>will actually work in production</em>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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>&#8220;Oh, but we have a rock-solid automated process that keeps everything in sync&#8221;, is sometimes the response to this point. </p><p>This may be true, but I still have to ask: how expensive (in terms of time and money) is it to set up such a process? And is it even warranted within the context of a startup?</p><p>There&#8217;s no getting around it. A perfect staging environment (even if it exists):</p><ol><li><p>Is expensive to maintain</p></li><li><p>Slows down continuous deployment</p></li><li><p>Encourages big bang releases</p></li></ol><p>I say &#8220;even if it exists&#8221;, because I don&#8217;t take it for granted that it can be achieved. There are, for example, industries where -for regulatory or other reasons- there&#8217;s no way to replicate the exact experience of a production workload. You just have to do that final test in production if you want to be absolutely sure.</p><p>What happens when you challenge the received wisdom of Staging environments? What&#8217;s an even more effective way of testing updates without negatively affecting live customers?</p><p>Here&#8217;s a few ideas:</p><h2>1. Embrace trunk-based development</h2><p>Stop creating big branches, working on them for days on end, and then finally making a big bang release with tons of changes (and things that could go wrong). </p><p>Instead, break the task at hand into as many small, discrete sub-tasks as possible. Work on each one at a time. Ideally, each of these sub-tasks should be doable within a working day or less. When you&#8217;re done, push your changes directly to the main/master branch (i.e. the trunk).</p><p>This has the benefit of making each change more testable and easier to revert if something goes wrong.</p><h2>2. Use feature flags</h2><p>Feature flags don&#8217;t need to be complicated. There are many <a href="https://www.kameleoon.com/blog/top-feature-flag-management-tools">cool platforms</a> out there that will help you with feature flags at scale. </p><p>But to begin with, it can be as simple as adding some simple conditions in your code:</p><pre><code><code>if (condition) { 
  newBehavior();
} else {
  oldBehavior();
}</code></code></pre><p>The vast majority of customer-facing changes can be safely tested directly in production under a feature flag.</p><h2>3. Use a CI/CD pipeline</h2><p>A robust CI/CD pipeline automates testing and deployment, ensuring that each small change is validated quickly and safely before reaching production. This continuous validation reduces the need for a dedicated staging environment by integrating quality checks throughout the development lifecycle.</p><h2>(bonus) 4. Experiment with Chaos Engineering</h2><p>The most famous example of Chaos Engineering comes from Netflix, where they introduced <a href="https://netflix.github.io/chaosmonkey/">Chaos Monkey</a> to their Kubernetes cluster to simulate failures.</p><p>It&#8217;s a powerful, simple idea. But it&#8217;s SCARY to most people. It means building your system so that it can withstand being partially broken. And then, you proceed to actually break some of its parts, to ensure that your resilience assumptions stand up to reality.</p><h2>In conclusion</h2><p>Challenging the need for a staging environment isn&#8217;t just about saving time and money. It&#8217;s about embracing a more dynamic and efficient way of building software. By focusing on small, incremental changes, using feature flags to de-risk deployments, and leveraging a solid CI/CD pipeline, you can ship features faster and with more confidence.</p><p>So, before you spin up another complex, production-like environment, ask yourself: do you <em>really</em> need it? Or could you be moving faster and safer without it?</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.com/p/do-you-really-need-a-staging-environment?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 Serverless Mindset! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.com/p/do-you-really-need-a-staging-environment?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://www.theserverlessmindset.com/p/do-you-really-need-a-staging-environment?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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[The 5-Minute Rule for Serverless Decisions]]></title><description><![CDATA[Wise architectures prioritise simplicity]]></description><link>https://www.theserverlessmindset.com/p/the-5-minute-rule-for-serverless</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/the-5-minute-rule-for-serverless</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Sun, 12 Oct 2025 19:01:37 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5472" height="3648" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3648,&quot;width&quot;:5472,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;man in blue crew neck shirt covering his face&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="man in blue crew neck shirt covering his face" title="man in blue crew neck shirt covering his face" srcset="https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1618498390344-445c804f2ac5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb25mdXNlZHxlbnwwfHx8fDE3NjAwMTQxMTV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 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">Photo by <a href="https://unsplash.com/@sammywilliams">Sander Sammy</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>In serverless architecture (as in every non-trivial piece of software), complexity creeps in quietly. A clever pattern here, a nuanced tradeoff there &#8212; until your team&#8217;s mental model is a maze.</p><p>Here&#8217;s a rule I use to stay sane:</p><blockquote><p><strong>If a decision takes more than 5 minutes to explain to a teammate, it&#8217;s probably too complex for our current stage.</strong></p></blockquote><p>This isn&#8217;t about dumbing things down. It&#8217;s about protecting clarity, trust, and speed &#8212; especially in early-stage products.</p><h3>Why it matters:</h3><ul><li><p><strong>Serverless is already abstract.</strong> Adding layers of cleverness makes it harder to debug, onboard, or pivot.</p></li><li><p><strong>Cognitive load is real.</strong> Every extra concept costs brainpower &#8212; and brainpower is your most expensive resource.</p></li><li><p><strong>You&#8217;ll revisit it anyway.</strong> Most decisions aren&#8217;t final. Clarity now beats perfection later.</p></li></ul><h3>Would I still choose it if I had to maintain it solo?</h3><p>This is my favorite sanity check.</p><p>Serverless promises scale, speed, and delegation &#8212; but those benefits vanish if your architecture demands a team of specialists to understand it. </p><p>DHH once called Rails &#8220;the one person framework,&#8221; designed so a single developer could build and ship a full product without begging ops or frontend experts for help. I&#8217;ve had a taste of <a href="https://www.theserverlessmindset.com/p/what-gave-me-joy-in-2024">what that feels like</a> by (re)discovering simple frameworks and libraries like HTMX, honojs, and even Kamal for non-serverless workloads.  </p><p>That spirit matters more than ever.</p><p>Serverless should feel like that &#8212; not because you&#8217;ll always work alone, but because <strong>clarity scales</strong>. If your system makes sense to one person, it&#8217;ll make sense to ten. If it doesn&#8217;t, no amount of documentation will save you.</p><p>So when I&#8217;m tempted to reach for a clever pattern, I ask:<br><strong>Would I still choose this if I were the only one maintaining it six months from now?</strong> <br>If the answer is no, I probably shouldn&#8217;t choose it now.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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[The Trouble With Treating AIs as Humans]]></title><description><![CDATA[They're just computers after all!]]></description><link>https://www.theserverlessmindset.com/p/the-trouble-with-treating-ais-as</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/the-trouble-with-treating-ais-as</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Tue, 01 Jul 2025 13:20:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HPZo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.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_!HPZo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HPZo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HPZo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HPZo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HPZo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HPZo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg" width="728" height="610.0370370370371" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:905,&quot;width&quot;:1080,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:117530,&quot;alt&quot;:&quot;brown and gray lego blocks&quot;,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="brown and gray lego blocks" title="brown and gray lego blocks" srcset="https://substackcdn.com/image/fetch/$s_!HPZo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HPZo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HPZo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HPZo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8e46f74-6f4a-4e1b-b4f5-2f53b8d6c697_1080x905.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><figcaption class="image-caption">Photo by <a href="true">Yucel Moran</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>We&#8217;ve anthropomorphised these models to a ridiculous degree.  </p><p>We&#8217;ve accepted the absurd idea that they&#8217;re <em>thinking</em> rather than computing. That they&#8217;re performing "advanced reasoning" instead of just running calculations for a bit longer on more powerful hardware. We talk about them as if they&#8217;re human.  </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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>And now, a judge has ruled that it&#8217;s fine for an LLM to ingest and "recall from memory" a book because, well, isn&#8217;t that what humans do?  </p><p>The case in question involves Anthropic, which <em>purchased and scanned millions of print books</em> to train its model, Claude. The judge deemed this "fair use," arguing:  </p><blockquote><p><em>"Everyone reads texts, too, then writes new texts. They may need to pay for getting their hands on a text in the first instance. But to make anyone pay specifically for the use of a book each time they read it, each time they recall it from memory, each time they later draw upon it when writing new things in new ways would be unthinkable. For centuries, we have read and re-read books. We have admired, memorised, and internalised their sweeping themes, their substantive points, and their stylistic solutions to recurring writing problems."</em>  <a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p></blockquote><p>This reasoning is flawed because it equates <em>human learning</em> with <em>machine processing</em>. An LLM isn&#8217;t "reading" or "recalling from memory"&#8212;it&#8217;s running an algorithm on stored data.  </p><p>Would the judge have ruled the same way if, say, <em>Google Search</em> had scanned every book and reproduced its content in search results? Of course not. There would be outrage, and no court would extend the same leniency.  </p><p>But because we <em>chat</em> with these models&#8212;because they call us by name, "remember" our conversations, and their creators insist they&#8217;re <em>thinking</em>&#8212;we treat them differently. We&#8217;ve blurred the line between computation and cognition.  </p><p>It&#8217;s time to regain some sanity in this conversation. These aren&#8217;t minds. They&#8217;re algorithms running on computers. We already have the words for that&#8212;let&#8217;s use them.  </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>https://www.linkedin.com/posts/gtozer_ai-llms-activity-7343618868717793282-tzuM?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAdxQ7EB1Q27_NnwyjJjoiXNXPLCyzuao1g </p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Implementing RAG with Amazon Bedrock Knowledge Bases]]></title><description><![CDATA[The Cost-Effective, Faster Alternative to LLM Fine-Tuning]]></description><link>https://www.theserverlessmindset.com/p/implementing-rag-with-amazon-bedrock</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/implementing-rag-with-amazon-bedrock</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Fri, 23 May 2025 15:08:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/68265f25-a909-453f-961b-5adfbe4898be_950x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Large language models (LLMs) have a key limitation: they rely solely on their pre-trained knowledge, which might be outdated or incomplete. Imagine an LLM trying to answer questions about a brand new product that you&#8217;ve been working on. Its knowledge could be years behind (if it is even aware of it in the first place).</p><p>This is where <strong>Retrieval-Augmented Generation (RAG)</strong> comes in. </p><p>Unlike fine-tuning, which requires modifying model parameters and retraining with domain-specific data, RAG allows models to dynamically fetch relevant information from external sources. </p><p>RAG is <em>far more cost-effective</em> and significantly less time-consuming. It is ideal for scenarios where data updates frequently. When it comes to building lightweight <strong>business applications</strong>, it is likely the better option.</p><p>Fine-tuning, on the other hand, is useful for highly specialised applications like medical diagnostics or legal document interpretation, where consistent responses based on structured internal knowledge are required.</p><p>While the underlying principles of RAG are straightforward, implementing it effectively can involve a few moving parts. This is where cloud platforms like Amazon Bedrock significantly simplify the process, particularly with their <a href="https://aws.amazon.com/bedrock/knowledge-bases/">Knowledge Bases</a> feature which enables RAG-based querying. </p><p>With Knowledge Bases, you can easily iterate from the AWS Console, adding more knowledge to a model and testing it out until you're happy with the results. When you&#8217;re ready, you can integrate everything into your application using the AWS SDK.</p><h1>Setting Up a Knowledge Base in Amazon Bedrock</h1><h2>Step 1: Define Your Knowledge Base</h2><p>Amazon Bedrock&#8217;s Knowledge Bases can ingest structured and semi-structured data, including <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html">documents</a> in various formats like HTML and Markdown.</p><h2>Step 2: Prepare Your Data</h2><p>The quality of data ingested directly impacts RAG performance. Typically with RAG, the content you upload as a data source should be as clean as possible. For example, you&#8217;d want to:</p><p>- <strong>Remove unnecessary metadata</strong> (such as YAML frontmatter that isn&#8217;t useful for querying).</p><p>- <strong>Standardise headings and formatting</strong> to ensure logical information retrieval.</p><p>- <strong>Chunk content strategically</strong>&#8212;divide long articles into smaller segments for better retrieval precision.</p><p>- <strong>Ensure consistency in terminology</strong> to improve keyword relevance.</p><p>While the gold standard for RAG data is always meticulous cleanliness, one of the real advantages of Bedrock Knowledge Bases for rapid prototyping is its surprising tolerance for less-than-perfect data during initial setup.</p><p>Bedrock Knowledge Bases also offers to perform standard chunking out of the box. You <em>can</em> control how the chunking is done, but you may not need to. If you're not happy with the initial results, you can dig a little deeper there and find the chunking strategy that works best for your particular data set. </p><h2>Step 3: Index Your Knowledge Base</h2><p>Once your documents are cleaned and structured, they need to be indexed into a <strong>data source</strong> for efficient retrieval. This step converts textual data into numerical representations, allowing Amazon Bedrock to identify and fetch relevant information.</p><h3>What You Need:</h3><p>- <strong>An embedding model</strong>: Amazon Titan Embeddings is pretty much the only real option here (other Bedrock-supported embedding models might be available depending on the region, or you can integrate custom embedding models via advanced configurations.).</p><p>- <strong>A vector database</strong>: Amazon OpenSearch Serverless is the easiest solution, but Aurora PostgreSQL is a solid option too, especially if you&#8217;re already familiar with Postgres.</p><p>- <strong>Chunking strategy</strong>: Optimal chunk sizes (e.g., 200&#8211;500 words) for better retrieval. Again, don't worry about this when you're first experimenting with a new data set.</p><p>Traditionally, setting up these components can be a significant time investment when building RAG from scratch. However, Bedrock's Knowledge Bases streamline this entire process, allowing you to get these essential pieces in place with just a few clicks.</p><h2>Step 4: Connect Your Knowledge Base to Amazon Bedrock</h2><p>Now that your knowledge base is ready to go, you need to connect it to Amazon Bedrock so it can power your RAG-based queries.</p><h3><strong>How to Connect:</strong></h3><ul><li><p><strong>Configure your Knowledge Base:</strong> This involves pointing Bedrock to your S3 bucket (your primary data source) and selecting a vector database (like Amazon OpenSearch Serverless or Aurora PostgreSQL with <code>pgvector</code>) to store the embeddings. Bedrock then automatically handles the indexing and establishes the retrieval pipeline, which converts your queries into vectors and uses them to find relevant information.</p></li><li><p><strong>Set up access control:</strong> Use <strong>AWS IAM roles</strong> to make sure your data access is secure and controlled.</p></li><li><p><strong>Test it out:</strong> Run some <strong>sample queries</strong> to confirm that Bedrock is pulling the right information.</p></li></ul><h2>Step 5: Query Your Knowledge Base</h2><p>Once everything is connected, Bedrock makes it really use to try out the new knowledge. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K-FJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K-FJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png 424w, https://substackcdn.com/image/fetch/$s_!K-FJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png 848w, https://substackcdn.com/image/fetch/$s_!K-FJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png 1272w, https://substackcdn.com/image/fetch/$s_!K-FJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K-FJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png" width="1456" height="753" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:753,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:175222,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theserverlessmindset.com/i/163568717?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.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_!K-FJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png 424w, https://substackcdn.com/image/fetch/$s_!K-FJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png 848w, https://substackcdn.com/image/fetch/$s_!K-FJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png 1272w, https://substackcdn.com/image/fetch/$s_!K-FJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F784f3f49-f9e7-43d6-beb5-d6a7c895de5e_1572x813.png 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><figcaption class="image-caption">Testing Amazon Bedrock Knowledge Bases after adding some articles from The Serverless Mindset (using Llama 3.3 as the foundation model)</figcaption></figure></div><p>What&#8217;s fun about it, is that you can quickly and easily switch between foundation models. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mC3T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mC3T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png 424w, https://substackcdn.com/image/fetch/$s_!mC3T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png 848w, https://substackcdn.com/image/fetch/$s_!mC3T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png 1272w, https://substackcdn.com/image/fetch/$s_!mC3T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mC3T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png" width="1456" height="471" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fccca706-4fb0-4139-b135-9188eda048fb_1563x506.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:471,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100414,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theserverlessmindset.com/i/163568717?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.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_!mC3T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png 424w, https://substackcdn.com/image/fetch/$s_!mC3T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png 848w, https://substackcdn.com/image/fetch/$s_!mC3T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png 1272w, https://substackcdn.com/image/fetch/$s_!mC3T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffccca706-4fb0-4139-b135-9188eda048fb_1563x506.png 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><figcaption class="image-caption">Testing against the same RAG data source, but with DeepSeek as foundation model</figcaption></figure></div><p>Once you&#8217;re done playing with it, you can click on the <em>copy </em>icon on top right of the Configurations section. This conveniently places the JSON configuration for your setup into your clipboard, allowing you to easily transfer your experimental settings.</p><p>You can then pass that JSON when hitting the service using the <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/sdk-general-information-section.html">AWS SDK</a> from your application.</p><p>***</p><p>By following these steps, you can build an efficient RAG pipeline in Amazon Bedrock without costly model fine-tuning. The quality of the AI-generated responses will vary based on how well structured the data is.</p><p></p><div><hr></div><p><strong>Thinking about your own AI journey?</strong></p><p>I've been working closely with clients to help them navigate their AI strategy, especially when it comes to crucial areas like <strong>safety, security, and copyright protection</strong>. It's all about empowering your team to leverage AI internally without the risks of exposing sensitive information or compromising company secrets and IP.</p><p>If you're looking to integrate AI responsibly within your organisation, I'd love to chat and see how I can help. Feel free to get in touch!</p><p><em><a href="mailto:info@marcotroisi.com">Shoot me an email</a> to find out more!</em></p>]]></content:encoded></item><item><title><![CDATA[The Way to Great Software Is Slow and Steady]]></title><description><![CDATA[And you need very little AI for that]]></description><link>https://www.theserverlessmindset.com/p/the-way-to-great-software-is-slow</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/the-way-to-great-software-is-slow</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Mon, 05 May 2025 18:41:55 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="4272" height="2848" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2848,&quot;width&quot;:4272,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;white and blue ambulance van traveling on road&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="white and blue ambulance van traveling on road" title="white and blue ambulance van traveling on road" srcset="https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1579037005241-a79202c7e9fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxhbWJ1bGFuY2V8ZW58MHx8fHwxNzQ2NDcwNDgwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 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">Photo by <a href="true">Jonnica Hill</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Several years ago, I met a guy who worked as an ambulance driver in the area where I grew up.</p><p>Not being great at small talk myself, I decided to skip past through it and began asking him a bunch of questions about his work. He was delighted; he clearly loved what he did for a living, and had no patience for small talk either.</p><p>Within a few minutes, he revealed to me that he was considered one of the top ambulance drivers in the area. Unsure whether I was supposed to take this seriously or not (after all, I thought to myself, how would you even "rank" an ambulance driver?), I waited a few seconds before laughing, rather responding with a curious look which he interpreted as me wanting to find out more about it.</p><p>What he proceeded to explain has stuck with me for many years.</p><p>As an ambulance driver, there are a few metrics that matter:</p><ul><li><p>How fast you can get to the scene (and back to the hospital). Obviously this matters as a few seconds can make all the difference.</p></li><li><p>How many accidents you get involved in. Ambulances apparently get involved in a lot of them; that makes sense given that they're rushing through traffic trying to get their patients to the hospital as quickly as possible. </p></li><li><p>How stable is the ambulance environment while you're driving it. This is helpful as paramedics may try to help the patient while the ambulance is moving. Too much disruption (like hitting hard on the brakes) makes this much harder.</p></li></ul><p>After he told me all this, I was hooked. I had to know: how did he manage to perform better than the other drivers on all of those metrics?</p><p>He explained to me: "It's very simple. At the start, I pick a speed that feels comfortable, slightly on the slow side, and I stick to it. I never increase the speed, and I rarely ever stop". "Everyone else", he continued, "pushes on the accelerator as hard as they can, and then keep hitting the brakes HARD at every intersection or whenever another driver cuts them off. Me, I just keep going: <strong>slow and steady</strong>".</p><p>His ability to <em>calmly</em> focus on the task at hand and not be taken over by the frenzy of the moment literally saved lives. </p><div><hr></div><p>This little anecdote came back to mind as I was reflecting on what it means to "vibe code" your way into working software. </p><p>(If you, like me, don't spend much time on X/Twitter these days, you might have missed out on the conversation around "vibe coding". If that's the case, let me thank you on behalf of your neurons. You're a saner person for it. But just for the purpose of this post, I'll give you the <em>tldr</em>: "Vibe coding" is giving up on your hard-earned skills so that some Silicon Valley CEO or VC can get rich. That's it, you're now a vibe coding expert.)</p><p>I realised that this is very much what it feels like to write code with AI. You give it a prompt, and straight away you have code that it would have taken you, perhaps, several minutes to write by hand. It feels like going full speed, pushing hard on the accelerator. </p><p>What a huge time saver, right? </p><p>Not so fast.</p><p>Aren't you at least going to read the code and try to get a sense of what it's doing? That's what you would do if this was somebody else's code and you were being asked to approve its deployment. </p><p>So you proceed to read that code. This may take a few minutes, and it feels like slowing down drastically, coming from the high of a few moments ago when you were prompting your way to success. </p><p>At this point, you have a few scenarios. </p><p>The best possible one is that the code looks fine, reads fine, and is doing what you expect it to. This is the equivalent of driving the ambulance through a road with zero traffic.</p><p>The evidence is there to tell us that this scenario is pretty rare. Between hallucinations and the tendency to generate over-engineered, convoluted code, the chances of AI churning out highly readable, production-ready code are as slim as finding no traffic in New York City. It can happen, mind you, but you'd count yourself lucky if it did.</p><p>Another scenario is that the code is manifestly wrong. That's like hitting a traffic jam on a tight, one-way street. You'll need to turn around, and try another way altogether, assuming there is one. This is a huge waste of time.</p><p>There's a third scenario, and it's the most insidious. It's the one where everything looks good, there's nothing obviously wrong, but in the end the code is broken in some hard-to-find way. Perhaps the LLM made up a non-existent library, or it assumed that you could leverage a feature that your language doesn't actually support. </p><p>This is like Google Maps taking the inexperienced ambulance driver to the wrong hospital: everything looks good, you're going to a hospital after all, and you've no reason to doubt the GPS. Except that it's taking you to the wrong place, and by the time you realise (and correct) the issue you'll have wasted A LOT of time.</p><p>The veteran driver just knows where to go, and doesn't blindly rely on her GPS. </p><p>The same can be said for the software engineer. Nothing wrong with enhancing your experience with an LLM, but ultimately you need to know what you're doing.</p><div><hr></div><p>Speed alone is not a strategy. AI-generated code offers the illusion of instant progress, but without disciplined scrutiny, it leads to fragile results. The best engineers, like the veteran ambulance driver, move deliberately&#8212;balancing efficiency with reliability. </p><p>Mastery isn&#8217;t speed&#8212;it&#8217;s knowing that slow and steady wins when precision matters most.</p>]]></content:encoded></item><item><title><![CDATA[Three Quarters of Google's Code Is Written by Humans]]></title><description><![CDATA[On hard-to-check claims that we shouldn't care about]]></description><link>https://www.theserverlessmindset.com/p/three-quarters-of-googles-code-is</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/three-quarters-of-googles-code-is</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Wed, 02 Apr 2025 10:14:33 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="5184" height="3456" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3456,&quot;width&quot;:5184,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;person carving on black wood plank&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="person carving on black wood plank" title="person carving on black wood plank" srcset="https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1444069788560-6ae1deb4c0d4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw5fHxodW1hbiUyMGNyYWZ0fGVufDB8fHx8MTc0MzU4ODgxNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 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">Photo by <a href="true">Angelina Litvin</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Claiming that AI now writes x% of overall code is like saying WordPress powers 40% of the web.</p><p>It&#8217;s a vast, generic claim about the world out there<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. It says <em>nothing</em> about the code you&#8217;re writing or the application you&#8217;re building.</p><p>There are valid use cases for WordPress. And yes, there are valid use cases for code that AI fully generates.</p><p>But, in general, you shouldn&#8217;t unthinkingly default to WordPress for your next app just because so much of the existing web is powered by it. </p><p>Similarly, you shouldn&#8217;t delegate your hard-earned ability to think deeply and craft scalable code to AI just because some dude online managed to build a web page in 5 minutes with Cursor.</p><p>Keep honing your skills. Don&#8217;t allow billion-dollar companies and attention-seekers on social media to dictate what the right way to add value as a software engineer (or as a software business) should or shouldn&#8217;t be.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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 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>That&#8217;s, of course, assuming the veridicity of such claims. It&#8217;s not as though companies like Google (<a href="https://www.forbes.com/sites/jackkelly/2024/11/01/ai-code-and-the-future-of-software-engineers/">claiming</a> that AI generates a quarter of their code) don&#8217;t have <a href="https://www.theguardian.com/technology/2025/feb/04/google-alphabets-q4-earnings#:~:text=Google%20parent%20Alphabet's%20revenues%20disappoint%20Wall%20Street%20amid%20stiff%20AI%20competition,-This%20article%20is&amp;text=Shares%20of%20Google's%20parent%20company,analyst%20expectations%20of%20%2496.67%20bn.">a vested interest</a> in shoving AI down everyone&#8217;s throat. </p></div></div>]]></content:encoded></item><item><title><![CDATA[What Gave Me Joy in 2024]]></title><description><![CDATA[The year I found out that craft and simplicity really matter]]></description><link>https://www.theserverlessmindset.com/p/what-gave-me-joy-in-2024</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/what-gave-me-joy-in-2024</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Thu, 02 Jan 2025 01:32:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s face it, our industry hasn&#8217;t felt as fun as it used to in the last year or so.</p><p>Economies don&#8217;t seem to have fully recovered post-pandemic, companies aren&#8217;t hiring as much as in the good old days, and of course silicon valley VCs and executives are pouring <em>obscene</em> quantities of money into &#8220;AI&#8221; just so they can enjoy the look on our faces when they tell us that they&#8217;re coming for our jobs (not that they have any idea what our jobs consist of, but that&#8217;s kinda why they think ChatGPT can do it).</p><p>Meanwhile, I&#8217;ve done my best to isolate myself from the noise and focus on getting better at my craft, finding more ways to add value, and helping others grow and succeed.</p><p>So I thought I&#8217;d spend a moment to write down a few of the tools and technologies that have brought me joy in 2024. Some of them were just plain fun, but others have actually caused me to think more deeply about the way we build software; I&#8217;m looking forward to share some of those learnings and reflections throughout 2025.</p><h1><strong>1. Containers</strong></h1><p>Frankly, I was quite happy when Lambda opted for zip archives as opposed to Docker for the <a href="https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html">default runtimes</a>. It&#8217;s not that I hated containers, but they always felt quite heavy and cumbersome.</p><p>In the past, on the rare occasions when Lambda wouldn&#8217;t suffice (and I had to setup <a href="https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html">ECS</a> or <a href="https://aws.amazon.com/fargate/">Fargate</a>) I never enjoyed it.</p><p>But in 2024 I I got to work with Docker a lot more. We&#8217;ve introduced some Rust and Go into our codebase, so we had to use Docker because there are <a href="https://docs.aws.amazon.com/lambda/latest/dg/runtimes-provided.html">no provided runtimes</a> on Lambda for those languages. I got to interact with the Docker ecosystem again, setting up Docker Compose, pushing images into our private registry, etc.</p><p>It all felt polished and robust. I&#8217;m impressed by how much progress there has been in container-land and I was pleasantly surprised by how smooth the local development experience was.</p><h1><strong>2. Kamal</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://twitter.com/MarcoTroisi/status/1864406745608487000?ref_src=twsrc%5Etfw" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TfWm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png 424w, https://substackcdn.com/image/fetch/$s_!TfWm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png 848w, https://substackcdn.com/image/fetch/$s_!TfWm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png 1272w, https://substackcdn.com/image/fetch/$s_!TfWm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TfWm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png" width="341" height="160" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:160,&quot;width&quot;:341,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18062,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/MarcoTroisi/status/1864406745608487000?ref_src=twsrc%5Etfw&quot;,&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="" srcset="https://substackcdn.com/image/fetch/$s_!TfWm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png 424w, https://substackcdn.com/image/fetch/$s_!TfWm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png 848w, https://substackcdn.com/image/fetch/$s_!TfWm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png 1272w, https://substackcdn.com/image/fetch/$s_!TfWm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc0bf05b-0b8e-4939-9f76-146c3f5ac203_341x160.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>One of the main reasons why I wasn&#8217;t so keen on containers in the past is because I always felt that most deployment and orchestration solutions were insanely difficult to setup and operate. It&#8217;s always been my argument that unless you&#8217;re a Fortune 500, you probably don&#8217;t need <a href="https://kubernetes.io/">Kubernetes</a>.</p><p>But if you accept my point, then that leaves you with few options. On AWS, we have <a href="https://aws.amazon.com/fargate/">Fargate</a> which is not that complicated, but it can still be a bit of an overkill depending on what your use case is. There is also <a href="https://aws.amazon.com/apprunner/">AppRunner</a> which is <em>super simple</em> but potentially quite a bit limited in features.</p><p>None of the above-mentioned options are possible if you&#8217;re not on AWS though (or even if you are, but you&#8217;re worried about <a href="https://www.theserverlessmindset.com/p/how-to-fix-serverless-vendor-lock">vendor lock-in</a>).</p><p><a href="https://kamal-deploy.org/">Kamal</a> is the tool that someone should have come up with years ago, before so many startups built their whole businesses on <s>that monstrosity</s> Kubernetes.</p><p>I had the pleasure of working with Kamal for a consulting customer that doesn&#8217;t run on AWS. I was SO impressed: it is exceedingly simple to configure and to operate.</p><h1><strong>3. Go</strong></h1><p>I wrote a fair amount of Go several years ago, and I really enjoyed it. For various reasons though, for the last few years I&#8217;ve been almost exclusively exposed to Javascript (and subsequently Typescript).</p><p>As we set out to introduce some Go into our stack (primarily for performance reasons), I got my hands dirty again and it made me so happy. I still can&#8217;t get over how quickly you can get from near-zero to super productive with Go.</p><p>This experience has made me reflect on what it means to get the right balance between performance and simplicity. I shared some slightly <a href="https://x.com/MarcoTroisi/status/1861493038951944514">controversial thoughts</a> on the topic, comparing Go and Rust. While Rust is as performant as it gets, it is really <em>quite hard</em> to work with. Early in the year, it took us days to get a tiny bit of Rust code into production (with no prior Rust experience).</p><p>Go is <em>so much easier</em> to get going with. Everyone can work with it, everyone can understand it. But it still manages to deliver performance levels approaching those of Rust. That is remarkable, and I don&#8217;t think we give enough credit to <a href="https://changelog.com/podcast/3">Go&#8217;s designers</a> for this.</p><h1><strong>4. HTMX</strong></h1><p>I had heard about <a href="https://htmx.org/">HTMX</a> a few times in the past, but I kept assuming that it was something you could only use for childishly simple UIs. </p><p>I was intrigued nonetheless.</p><p>Since I needed to set up a small dashboard for internal use only, I decided to have fun with it and use HTMX instead of React (which would have been my go-to).</p><p>I was <em>astonished</em> at how quickly I got things done. And as I kept digging and pushing, I realised that I could build something truly complex and interactive with it. With no frontend Javascript whatsoever. No heavy frameworks like React. All coming straight from the server.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/MarcoTroisi/status/1867564511856562314?ref_src=twsrc%5Etfw" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kzfW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png 424w, https://substackcdn.com/image/fetch/$s_!kzfW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png 848w, https://substackcdn.com/image/fetch/$s_!kzfW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png 1272w, https://substackcdn.com/image/fetch/$s_!kzfW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kzfW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png" width="602" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:602,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89648,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/MarcoTroisi/status/1867564511856562314?ref_src=twsrc%5Etfw&quot;,&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="" srcset="https://substackcdn.com/image/fetch/$s_!kzfW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png 424w, https://substackcdn.com/image/fetch/$s_!kzfW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png 848w, https://substackcdn.com/image/fetch/$s_!kzfW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png 1272w, https://substackcdn.com/image/fetch/$s_!kzfW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F773fd4bb-f727-4c9b-a4af-3de05b10012c_602x424.png 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>It is now my belief that most projects should default to HTMX, whereas heavy frameworks like React should be seen as a niche, highly specialised tool for very specific use cases involving an unusually high degree of interactivity.</p><h1><strong>5. Hono</strong></h1><p><a href="https://hono.dev/">Hono</a> is a lovely, simple, lightweight, fast framework for building APIs. I was able to play with it and build a few projects in 2024. It is the framework we&#8217;ve always wanted (and needed) in the Javascript/nodejs world. </p><p>I highly recommend it.</p><h1><strong>6. Linux</strong></h1><p>I started using Linux as a teenager, and kept using it all throughout school and even into my first couple of jobs as a young developer. But then I joined a company that had a Mac-only policy; I made the switch to Mac, and decided to stick with it until a few months ago.</p><p>Over the summer of 2024, I decided that I wanted to try Linux again. I wasn&#8217;t sure what to expect to be honest! As much as I enjoyed playing with it back in the day, I had many memories of days <em>wasted</em> trying to get things working, all while my colleagues using Mac and Windows were busy shipping code.</p><p>I imagined that it would be a little better than it used to, but I didn&#8217;t think it would be <em>this</em> good. </p><p>Linux on desktop (<a href="https://ubuntu.com/">Ubuntu</a> is the distro I&#8217;m using) has improved so much. It&#8217;s smooth, it looks good, it works like a charm. </p><p>Sure some things take a little longer to set up than on Mac, but you get that feeling of <em>true ownership</em>. This truly feels like my machine. It may sound like a silly thing to say, but it&#8217;s a feeling worth exploring (and embracing) if you think of your work as your craft (as I do!).</p><h1><strong>7. neovim</strong></h1><p>For years, I would look at people working on vim wondering why would anyone want to work like this! But my return to Linux gave me a chance to look afresh at my tooling of choice.</p><p>Having used VS Code for the last few years, it didn&#8217;t take me long to realise that I felt no affection for it. I&#8217;m no Microsoft fan, and although VS Code is a solid product, it&#8217;s also quite bland. There&#8217;s nothing especially appealing about it apart from the fact that it gets the job done.</p><p>So I asked myself if perhaps <a href="https://neovim.io/">neovim</a> could be a better companion for my daily work. Having no idea where to begin with, I watched <a href="https://www.youtube.com/watch?v=X6AR2RMB5tE&amp;list=PLm323Lc7iSW_wuxqmKx_xxNtJC_hJbQ7R">a few videos</a> on YouTube and then installed the standard version of neovim. Within minutes I was banging my head against the wall in desperation. Let&#8217;s just say, neovim on its own is not for the faint of heart!</p><p>I threw neovim away in rage and contempt and decided that I would stick with VS Code. But something was nagging me! How is it that so many people are using vim and I&#8217;m the only idiot who couldn&#8217;t get to grips with it?</p><p>And then I realised!</p><p>It turns out, neovim (much like Linux) has flavours and distros. And, as far as I understand it, almost no one <em>with a life</em> uses the standard version of neovim. Most sane people download one of these distros. There are several, they&#8217;re all very nice and they come complete with plugins, plugin managers, sensible defaults, the works.</p><p>I ended up downloading <a href="https://www.lazyvim.org/">lazyvim</a>. After that, everything clicked into place within a few days. </p><p>I&#8217;ve been using it daily for almost a year now, and I regret not making the switch before. vim motions are a superpower! </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d9D0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d9D0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png 424w, https://substackcdn.com/image/fetch/$s_!d9D0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png 848w, https://substackcdn.com/image/fetch/$s_!d9D0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png 1272w, https://substackcdn.com/image/fetch/$s_!d9D0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d9D0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png" width="1456" height="805" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:805,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:361959,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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="" srcset="https://substackcdn.com/image/fetch/$s_!d9D0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png 424w, https://substackcdn.com/image/fetch/$s_!d9D0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png 848w, https://substackcdn.com/image/fetch/$s_!d9D0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png 1272w, https://substackcdn.com/image/fetch/$s_!d9D0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2122b153-f5a7-4a4d-ab5c-e017b06524f3_1884x1041.png 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><figcaption class="image-caption">Ghostty, zellij, and neovim: my current setup</figcaption></figure></div><p>As <a href="https://x.com/dhh">DHH</a> has nicely <a href="https://world.hey.com/dhh/wonderful-vi-a1d034d3">put it</a>:</p><blockquote><p>It&#8217;s just uniquely satisfying to string a handful of these combos together and see the text beneath you radically manipulated. In a way you just know would have been a drag to do in any other editor. That&#8217;s the game-like joy of vi&#8217;s power moves.</p></blockquote><div><hr></div><p>So these were the tools and technologies that brought joy into my daily work in 2024.</p><p>Getting exposed to each of them throughout the year made me grow as a professional. They gave me a better appreciation for the value of growing in my craft, picking the right tools, and prioritising simplicity over unnecessary complexity.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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[The Balance of Serverless Simplicity]]></title><description><![CDATA[Beware merchants of complexity, but don't settle!]]></description><link>https://www.theserverlessmindset.com/p/the-balance-of-serverless-simplicity</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/the-balance-of-serverless-simplicity</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Sat, 14 Dec 2024 19:10:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kgkX!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F21e2c970-1def-4fcd-89f9-a3f8b83dc3a1_500x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A clash of worldviews has emerged in the last couple of years, brought to the surface by certain well-known companies <a href="https://37signals.com/podcast/leaving-the-cloud/">leaving the cloud</a> as well as some equally well-known teams announcing that they&#8217;ve <a href="https://web.archive.org/web/20240223075245/https://www.primevideotech.com/video-streaming/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs-by-90">saved a lot of money by embracing the monolith</a>.</p><p>This conflict boils down to simplicity versus complexity. Critics argue that the cloud is overly complicated, designed for large enterprises. Just look at the myriad of AWS services&#8212;can anyone truly remember them all, let alone use them effectively? And microservices? They&#8217;re just as convoluted. Why not embrace the "Majestic Monolith," which is far easier to manage?</p><p>Having immersed myself in the cloud and championed Serverless for years, I don&#8217;t find myself especially sympathetic to these arguments. Yet, I can&#8217;t deny that they resonate with me on some level.</p><p>I don&#8217;t advocate for on-prem solutions; I genuinely believe Serverless is the way forward for most businesses. The cloud empowers us to focus on our core business logic while leveraging high-performance products and services that would be impossible to replicate on our own.</p><p>I also don&#8217;t think microservices are inherently bad. Throughout my career, I&#8217;ve <a href="https://medium.com/trilo/how-microservices-can-help-your-team-move-faster-and-produce-better-results-3007eb753eef">supported teams in transitioning to microservices</a>, as they help maintain order and cleanliness in our codebases. </p><p>Without exceptional discipline, monoliths can devolve into chaotic jungles. Microservices allow us to move quickly, with different teams owning distinct services without stepping on each other's toes.</p><p>And yet, there&#8217;s something undeniably appealing about the simplicity of tools like <a href="https://kamal-deploy.org/">Kamal</a>. With just a few lines of code, you can bypass much of the complexity and launch a production-ready application on your server of choice.</p><p>Let&#8217;s be honest: the cloud can be daunting. While I&#8217;ve greatly benefited from re:Invent talks and keynotes, many of them feel more like <em>advanced computer science lectures</em>. This complexity raises a question: aside from major enterprises like Amazon, who truly benefits from such an intricate array of services?</p><p><strong>Startups need far less</strong>. The fundamental building blocks of Serverless&#8212;Lambda, Dynamo (or <a href="https://aws.amazon.com/rds/aurora/dsql/">DSQL</a>), AppSync, and EventBridge&#8212;can take you almost anywhere you need to go as a business.</p><p>This brings us to a middle ground.</p><p>There are builders and architects aiming to create scalable solutions&#8212;not monoliths, not on-prem, and not limited to small VPS setups. They may not have a large user base yet, but they&#8217;re designing for growth because they believe in their vision.</p><p>However, attending cloud events or consulting microservices experts often introduces layers of complexity and bureaucracy that can be overwhelming.</p><p>This middle space is for those who want to harness Serverless to build highly scalable microservices in the cloud&#8212;without breaking the bank or feeling inferior just because larger enterprises are tackling more complex challenges.</p><p>I refuse to settle, but I also don&#8217;t want to feel like I need a team of 500 engineers to bring my product to life.</p><p>The allure of Serverless has always been its ability to enable rapid, cost-effective scalability with a small team.</p><p>That&#8217;s the space I&#8217;m excited about!</p><p>I want to challenge myself to learn from the no-cloud, no-microservices community and I want to take their learnings into the world of cloud and microservices. I want to strip my world out of all complexity, and make building highly scalable products exciting, intuitive, and simple.</p><p>I&#8217;m excited about <a href="https://htmx.org/">HTMX</a> as a way to enable server-driven, truly fullstack development. No more rigid separation between the React experts and the backend-only folks. With HTMX, everyone can build fully functional applications without a phD in frontend development.</p><p>I find <a href="https://hono.dev/">Hono</a> absolutely delightful. What a great way to build simple, fast APIs that deploy just about anywhere. I think that the so-called best practice of one Lambda function per API endpoint has been overused and abused. You can have a single Hono-based Lambda handling a whole bunch of routes. It&#8217;s fine, and it&#8217;s plenty fast.</p><p>I&#8217;m thrilled about Amazon&#8217;s <a href="https://aws.amazon.com/rds/aurora/dsql/">DSQL</a>. I feel like a whole lot of complexity over the years has been forced on us as we tried to shoehorne all of our use cases into using DynamoDB. Frankly, we didn&#8217;t have a choice because <a href="https://www.lastweekinaws.com/blog/no-aws-aurora-serverless-v2-is-not-serverless/">relational database alternatives on AWS were never truly serverless</a>. So we convinced ourselves that it was actually cool and <em>properly serverless</em> to pour hours into designing the perfect <em>Single Table Design</em> data modelling for our Dynamo tables. I&#8217;ve personally had enough of that. I&#8217;m looking forward to defaulting to a good old relational database unless something that screams &#8220;key-value&#8221; calls for the use of Dynamo.</p><p>There may other tools or technologies that I&#8217;m not yet aware of that can remove layers of complexity from our development lifecycle. I will be on the look for those moving forward.</p><p>No more blindly accepting what <em>the enterprise</em> thinks is right. Startups are different, and we don&#8217;t have to settle.</p>]]></content:encoded></item><item><title><![CDATA[Crossing the Fine Line of Customer Obsession]]></title><description><![CDATA[Innovation, not re-education, is what it's all about!]]></description><link>https://www.theserverlessmindset.com/p/crossing-the-fine-line-of-customer</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/crossing-the-fine-line-of-customer</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Fri, 25 Oct 2024 15:11:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OuGA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.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_!OuGA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OuGA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OuGA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OuGA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OuGA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OuGA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OuGA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OuGA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OuGA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OuGA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b66d837-59e5-4e88-a1d6-e9ff925b58a6_1024x608.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><figcaption class="image-caption"></figcaption></figure></div><p>Amazon&#8217;s famous leadership principle of <a href="https://www.aboutamazon.com/about-us/leadership-principles">customer obsession</a> is an encouragement to look at <strong>what a customer needs</strong> and then <em>work backwards</em> from that need towards a solution.</p><p>Customer obsession is a spectrum, not a binary switch. On one end, you give customers exactly what they ask for. On the other, you go above and beyond to deliver something truly remarkable. But there's a point where you cross the line from customer obsession to pursuing your own agenda.</p><p>Take relational databases, for example. When customers asked for a way to run their databases on the cloud with minimal hassle, Amazon delivered RDS. It was a straightforward solution that met their needs. But then came Aurora, a game-changing reinvention of relational databases that still looked and felt like a traditional RDBMS.</p><p>Let&#8217;s be honest: with Aurora, Amazon didn&#8217;t <em>exactly</em> deliver what customers were asking for. Aurora is such a novel take, and a complete reinvention of how relational databases had worked up until then that, frankly, no customer could have asked for something that specific.   </p><p>How, then, do we know that Amazon fulfilled their customer obsession principle with Aurora? I think that it comes down to how much overlap there is between the original need and what is being delivered.</p><p>With Aurora, no customer had to be convinced of the power of relational databases. Nor did anyone need to embark into a lengthy training programme. Aurora is a good old relational database. It&#8217;s compatible with the database engines (PostgreSQL and MySQL) that <a href="https://www.statista.com/statistics/809750/worldwide-popularity-ranking-database-management-systems/">most developers</a> have known and used for decades. </p><p>Aurora is <strong>a more innovative answer</strong> to the same customer need that brought us RDS. </p><p>Sure, it&#8217;s <em>technically</em> a new thing. If you&#8217;re trying to convince someone to use Aurora (as I have) you do need to explain a little bit of what it is and why it&#8217;s better. You can&#8217;t just say &#8220;It&#8217;s PostgreSQL on AWS&#8221; (as you would, rightly, if talking about RDS).</p><p>However, when we start telling customers that they need to abandon their relational databases and adopt something like DynamoDB, we've crossed the line. We're no longer obsessed with their needs; we're pushing them into something completely different and somehow assuming we know best (with no malice, I&#8217;m sure. I&#8217;ve done that myself many times). </p><p>I&#8217;m afraid that&#8217;s what's been happening in the serverless world!</p><p>For years, we've been evangelising DynamoDB as a key component of serverless architecture on AWS. But what about customers who have invested heavily in relational databases? Do we really think they're just going to rip and replace their entire architecture? It's not only unrealistic but also condescending.</p><p>The truth is, there's nothing inherently hostile to relational databases in the serverless paradigm. Cloudflare's <a href="https://developers.cloudflare.com/d1/">D1</a>, a serverless <a href="https://www.sqlite.org/index.html">SQLite</a>-based database, is a shining example of what's possible: cheap, fast, and there's nothing new to learn. It's good old SQL.</p><p>But if you&#8217;re building on AWS and you want the power of a relational database, you&#8217;re stuck with Aurora Serverless, a service which is possibly great for the enterprise but is far too expensive at low-to-medium volumes. </p><p>As I recently <a href="https://x.com/MarcoTroisi/status/1849725768953192791">pointed out on X</a>, <strong>how is it that DynamoDB can cost virtually nothing at low scale, whereas Aurora has to be so expensive?</strong> </p><p>Now, if your answer to that question is &#8220;oh but you don&#8217;t know how hard/expensive it is to set up backups/multi-AZs/read replicas, etc&#8221;, let me point out two things. </p><p>Firstly, a lot of us <em>do know</em>. We used to do all of that. Back a few years ago, everyone used to be able to set up a MySQL/PostgreSQL database locally and often even on a production server. It wasn&#8217;t that hard and it wasn&#8217;t at all expensive at low volumes.</p><p>Secondly, look again at DynamoDB! It does all of those things for you and you don&#8217;t even need to think about it. It just works, and it does so <em>inexpensively </em>(for the customer, that is).  </p><p>It's time for a change. We need <strong>True Serverless&#174;</strong> solutions that truly meet customers' needs, without pushing a specific agenda down people&#8217;s throats. </p><p>That's why my number 1 request for this year&#8217;s re:invent is an <strong>SQLite-compatible, truly serverless, hyper scalable, cost effective database</strong> service from AWS.</p><p>It can be done. Amazon knows how to build something remarkable under the pressure of an aggressive deadline. If they need more resources, they could just drop one or two GenAI initiatives. That would be a double gift!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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[How to Fix Serverless Vendor Lock-In]]></title><description><![CDATA[Overcoming the #1 reason preventing serverless adoption]]></description><link>https://www.theserverlessmindset.com/p/how-to-fix-serverless-vendor-lock</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/how-to-fix-serverless-vendor-lock</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Mon, 16 Sep 2024 17:17:04 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" 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://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="5760" height="3840" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3840,&quot;width&quot;:5760,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;black and white bicycle at daytime&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="black and white bicycle at daytime" title="black and white bicycle at daytime" srcset="https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1515912347396-8a82507c42a0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxsb2NrZWR8ZW58MHx8fHwxNzI2NTA2NzIzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 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">Photo by <a href="true">Josh Bean</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>I've long advocated that you need to <a href="https://www.theserverlessmindset.com/p/vendor-lock-in">embrace vendor lock-in</a> to make the most of the cloud.</p><p>I'm changing my mind slightly. </p><p>Cloud providers <em>can</em> choose to provide a common interface to their services. When they don't provide such an interface, they're creating vendor lock-in. When they do, they're making it easier for customers to switch should they ever need to. It's a choice, whether intentional or not.</p><p>Don't believe me?</p><p>Take a look at <a href="https://azure.microsoft.com/en-us/products/cosmos-db/">CosmosDB</a> from Azure. It provides, according to some benchmarks,  performance comparable to our beloved DynamoDB. And yet, by design, it supports SQL as a query language. It gets better: if you want to, you can even use MongoDB&#8217;s syntax! </p><p>It's easy to see the implication of this choice: if you have an existing app built on top of a standard relational database, you can point it to CosmosDB instead. You get Dynamo-like performance and scalability, while barely rewriting any code. And, of course, you can ditch CosmosDB as soon as it no longer makes sense to you, and just move over to any PostgreSQL-compatible database. </p><p>"Oh", I hear you saying, "but AWS has Aurora/RDS for that!". I know that, but it's not the point. The point is that if you choose to build something on top of DynamoDB, you're never getting out of it (not without massive effort, that is). This simple idea acts as a blocker towards greater adoption not just of DynamoDB, but also of Lambda, EventBridge, you name it. </p><p>Serverless as a whole is badly penalised and, arguably, under-adopted because of the lack of common interfaces.</p><p>The services mentioned above are, incidentally, my favourite ones. I've spent years advocating for them and the #1 pushback I get ALL THE TIME is that folks don't like getting vendor locked-in.</p><p>So here's a simple idea for AWS. </p><p>Build interfaces on top of these serverless, cloud-native products that make it easier for people to switch to and from them. </p><p>They may never need to leave. But if that's all that's stopping them from adopting these beautiful services and, more broadly, serverless, why not address those concerns? These are potential customers whom AWS claims to be obsessed about.</p><p>I like the Amazon way, how they listen to customers and learn from them. I'm not a fan of companies that think they know best, whose mission is chiefly to &#8220;educate&#8221; their customers.</p><p>We&#8217;ve been trying to educate people about the value of vendor lock-in for too long. </p><p>It's time to embrace a more open approach and to welcome a new cohort of amazing teams that should really be building their products with serverless, but whose leaders are too worried about vendor lock-in to make the leap.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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[What Makes a Great Programmer?]]></title><description><![CDATA[The Delicate Balance That Drives Software Success]]></description><link>https://www.theserverlessmindset.com/p/what-makes-a-great-programmer</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/what-makes-a-great-programmer</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Thu, 01 Aug 2024 10:06:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!o6sz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.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_!o6sz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o6sz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!o6sz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!o6sz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!o6sz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o6sz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg" width="1152" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:640,&quot;width&quot;:1152,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o6sz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!o6sz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!o6sz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!o6sz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F488d3257-fd80-44cf-8469-7af3aa4ad486_1152x640.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><figcaption class="image-caption"></figcaption></figure></div><p>As someone who's spent years working with developers, I've often found myself wondering what sets the truly exceptional ones apart. It's not just about technical skill, although that's certainly important. Nor is it solely about experience, although that helps too. </p><p>No, I've come to realise that what makes a great programmer is a rare combination of two essential skills: a sense of urgency and a drive for quality.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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>Let's start with the sense of urgency. A great programmer knows that time is of the essence. They understand that the best way to add value is by shipping software that users can actually benefit from. <em><strong>Unshipped</strong></em><strong> software, no matter how beautifully crafted or cutting-edge, is worthless.</strong> It helps nobody, and it adds no value. This sense of urgency is what drives great programmers to prioritise, to focus on the essential tasks, and to eliminate unnecessary complexity.</p><p>But a sense of urgency alone is not enough. Without a corresponding drive for quality, you end up with software that may ship quickly but is riddled with bugs, inconsistencies, and poor design choices. <strong>A great programmer has an innate desire to structure things, to create order out of chaos</strong>. </p><p>As Yegor Bugayenko so <a href="https://www.yegor256.com/2019/12/31/talented-programmers.html">eloquently put it</a>, <em>"A talented programmer feels [ambiguity, inconsistency, chaos, irrationality, and lack of logic] physically, while a mediocre one says 'Whatever works!' and gets on with it."</em></p><p>This drive for quality is what sets great programmers apart from the rest. It's what makes them take the time to refactor code, to write automated tests, and to ensure that the software is maintainable, scalable, and efficient. It's what makes them care deeply about the user experience, about the performance, and about the overall craftsmanship of the software.</p><p>But here's the thing: these two skills need to exist in tension with each other. A great programmer should feel equally uncomfortable when the quality of what they've built isn't as good as it should be, as well as when something is taking too long and thus no value is being added to paying customers. This tension is what creates a sense of balance, a sense of harmony between the need to ship quickly and the need to build something of high quality.</p><p>When I think back to the great programmers I've worked with, I realise that they all possessed this rare combination of skills. They were able to balance the need for speed with the need for quality, and they were able to do so in a way that was both efficient and effective.</p><p>So, what can we learn from this? Firstly, we need to recognise that great programmers are not just born, they're made. They're made through a combination of experience, mentorship, and a willingness to learn and improve. Secondly, we need to create an environment that encourages and rewards this rare combination of skills. We need to give our developers the autonomy to make decisions, the resources to learn and grow, and the support to take risks and experiment.</p><p>Finally, we need to recognise that great programmers are not just technical experts, they're also craftsmen, artists, and problem-solvers. They're people who care deeply about their work, who take pride in what they build, and who are driven by a desire to create something of value.</p><p>In the end, what makes a great programmer is not just about technical skill or experience, it's about a mindset, a way of approaching problems, and a commitment to excellence. It's about finding that delicate balance between the need for speed and the need for quality, and it's about creating software that truly adds value to people's lives.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.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">Thanks for reading The Serverless Mindset! Subscribe for free to receive new posts and support my work.</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[Why You Should Build Your Next Product With AppSync]]></title><description><![CDATA[One of the most powerful, yet underrated AWS services]]></description><link>https://www.theserverlessmindset.com/p/why-you-should-build-with-appsync</link><guid isPermaLink="false">https://www.theserverlessmindset.com/p/why-you-should-build-with-appsync</guid><dc:creator><![CDATA[Marco Troisi]]></dc:creator><pubDate>Wed, 24 Jul 2024 12:39:47 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;m unabashedly an <a href="https://aws.amazon.com/appsync/">AppSync</a> apologist. It&#8217;s been a game-changer for me and the teams I&#8217;ve led over the last few years. It&#8217;s a massive productivity booster, and I can&#8217;t imagine us being able to build fully serverless, production-ready applications so quickly without it.</p><p>If you're looking to supercharge your development process and create robust, scalable products quickly, AppSync might just be the secret weapon you've been searching for.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="5472" height="3648" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3648,&quot;width&quot;:5472,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a close up view of a puzzle piece&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a close up view of a puzzle piece" title="a close up view of a puzzle piece" srcset="https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1635772429028-f0375f2fbddb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8Ym9vc3QlMjBwdXp6bGV8ZW58MHx8fHwxNzIxODIzMTMxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 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">Photo by <a href="true">Pierre Bamin</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p><strong>Rapid Prototyping: From Idea to MVP in Record Time</strong></p><p>One of AppSync's most compelling features is its ability to <a href="https://www.theserverlessmindset.com/p/parallelise-development-by-using">accelerate the prototyping process</a>. By leveraging GraphQL, AppSync allows developers to define their data models and APIs quickly and efficiently. This means you can bring your ideas to life faster than ever before, iterating rapidly and gathering valuable feedback early in the development cycle.</p><p>With AppSync's schema-first approach, you can start building your frontend applications even before your backend is fully implemented. This parallel development process can significantly reduce time-to-market.</p><p><strong>Infinite Scalability: Growing from MVP to Enterprise</strong></p><p>Scalability is often a major concern when choosing a technology stack, especially for startups and growing businesses. AppSync's serverless architecture addresses this concern head-on, providing virtually infinite scalability out of the box.</p><p>As your user base grows from a handful of early adopters to millions of daily active users, AppSync seamlessly scales to meet demand. There's no need to worry about provisioning servers, load balancing, or managing complex infrastructure. AppSync handles it all, allowing you to focus on what matters most: building great products and growing your business.</p><p><strong>Bridging the Gap: Enhanced Team Collaboration</strong></p><p>Communication between frontend and backend teams is often difficult. AppSync, with its GraphQL foundation, provides a shared language that both sides can understand and work with efficiently.</p><p>Frontend developers can specify exactly what data they need, while backend developers can focus on efficiently providing that data. This clear contract between the two sides reduces misunderstandings, minimises unnecessary data transfer, and ultimately leads to faster development cycles and higher-quality products.</p><p><strong>Seamless AWS Integration: Reducing Complexity, Enhancing Reliability</strong></p><p>For teams already invested in the AWS ecosystem, AppSync offers a major advantage: native integration with a wide range of AWS services. Whether you're working with DynamoDB for your database needs, Lambda for serverless compute, S3 for file storage, or Bedrock for GenAI, AppSync provides seamless connectors that drastically reduce the amount of glue code you need to write.</p><p>This tight integration not only speeds up development but also enhances overall system reliability. With fewer custom integrations to maintain, you're less likely to encounter unexpected issues or performance bottlenecks as your application scales.</p><p>Less custom code means fewer potential points of failure, leading to more robust and maintainable applications. This is particularly valuable for small teams who may not have the resources for extensive testing and debugging of complex integrations.</p><p><strong>The Evolution of Cloud-Native Development</strong></p><p>For many developers, frameworks like Ruby on Rails, Django, or Laravel have long been the go-to choice for rapid application development. While these tools certainly have their merits, AppSync represents the next evolution in this space&#8212;offering similar productivity benefits but with the added advantages of a serverless, cloud-native architecture.</p><p>With AppSync, you get the rapid development capabilities you love, combined with the scalability, reliability, and cost-efficiency of modern cloud services. It's like having your cake and eating it too&#8212;fast development and enterprise-grade infrastructure all in one package.</p><p>(I&#8217;m of course aware that AppSync is not a battery-included framework like Rails. All I&#8217;m pointing out is that AppSync can give us much of the same productivity boost without the obvious limitations of a big, fat framework).</p><p><strong>AppSync as Your Competitive Advantage</strong></p><p>In my view AWS AppSync offers a compelling solution for teams of all sizes.</p><p>Whether you're a startup looking to launch your MVP, a growing company aiming to scale your existing products, or an enterprise seeking to modernise your tech stack, AppSync provides the tools you need to succeed in the modern cloud.</p><p>So, as you contemplate your next product or consider ways to optimise your current development process, give serious thought to AWS AppSync. It might just be the key to unlocking your team's full potential and building the successful, scalable products that will define the future of your business.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.com/p/why-you-should-build-with-appsync?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">Thank you for reading The Serverless Mindset. This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.theserverlessmindset.com/p/why-you-should-build-with-appsync?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://www.theserverlessmindset.com/p/why-you-should-build-with-appsync?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><p><em><strong>Do you find that Slack wastes more of your time than it saves?</strong></em></p><p><em>I definitely feel that way! Countless engineers and creators I've talked to agree.</em></p><p><em>That&#8217;s why I&#8217;ve decided to take matters into my own hands. I&#8217;ve built an alternative software for communicating with my team. It&#8217;s called Roga.</em></p><p><em>It&#8217;s built to deliver the opposite experience to Slack, Teams, and the likes.</em></p><ul><li><p><em>Messages are asynchronous: Instant Messaging is simply the wrong tool for most professional communication. It&#8217;s fun if you want to chat with family and friends, but it&#8217;s not how serious work should be discussed.</em></p></li><li><p><em>One clear thread per topic: In Slack, discussions on the same topic can scatter across various channels, threads, and sub-threads, leading to confusion, lost information, and the compulsion to constantly check notifications.</em></p></li><li><p><em>Host it on your AWS account: Remember when Slack/Salesforce decided to start using your company data to train their own AI models? Yeah, I don&#8217;t want that for my team and nor should you. Roga can be deployed with a simple CDK command to your AWS account.</em></p></li><li><p><em>You pay for it once and it&#8217;s yours forever: the ability to communicate with each other is as basic a need as it gets for a team. The idea of having to pay more as the team grows has always bothered me. With Roga, you pay a ridiculously low amount once and then you just own the software. Grow as big as you want.</em></p></li></ul><p><em>I&#8217;m still finishing up the last touches before I go public with it, but for now I&#8217;m giving it away for a super low price.</em></p><p><em>I&#8217;m especially interested in receiving feedback from the amazing readers of The Serverless Mindset.</em></p><p><em><a href="https://rogahq.com/">Get your copy of Roga now,</a> or shoot me a message if you have any questions!</em></p>]]></content:encoded></item></channel></rss>