Title: Issue #227: Works on my machine Publication: Ready, Set, Cloud! Series: Ready, Set, Cloud Picks of the Week Author: Allen Helton Published: August 03, 2026 URL: https://www.readysetcloud.io/newsletter/227/ Last week was full of great solutions that solve some specific use cases. But they might not solve everybody's. ### 🦸 Community Superhero Our community superhero this week is [Nicola Cremaschini](https://www.linkedin.com/in/nicola-cremaschini), Staff Engineer at TheFork and AWS Community Builder. Nicola built and open sourced [Q-Vibes](https://github.com/ncremaschini/amazon-q-vibes-memory-banking), a context preservation framework for coding agents that works across sessions. He also [has a blog](https://haveyoutriedrestarting.com/) and is a fun follow for AI-assisted development. Thanks for everything you do, Nicola! ### 💯 Spotlight If you've hosted a site on the internet, you've undoubtedly seen bot traffic. Both bots that scrape your site for data or ones that are trying to find vulnerabilities to exploit. But recently there's been a considerable uptick in bot traffic because AI agents have taken over. Which is fine (maybe?), but it's getting in the way for many of us. [David Behroozi](https://www.linkedin.com/in/david-behroozi/) wrote an article last week showing how he [blocks requests with Lambda Function URLs](https://speedrun.nobackspacecrew.com/blog/2026/07/23/blocking-requests-with-lambda-function-urls.html) to mitigate errors and save some unnecessary downstream compute. His post goes through what bot visits look like and the defense in depth layers he's added as a result. It's a great read with the code provided to do it yourself. ### 🔥 My Favorite Content Oddly enough, [Ran Isenberg](https://www.linkedin.com/in/ranbuilder/) wrote a very similar story to David, but taking it from a content creator's perspective rather than a deep engineering one. His article is [how he fought back against bot traffic](https://www.linkedin.com/pulse/my-blogs-biggest-fans-ai-bots-so-i-foughtback-ran-isenberg-llasf/) and is an entertaining read. His version describes what to look for in Google Analytics and AWS WAF, and walks through several options you have, both managed and unmanaged. They reach roughly the same conclusion, which is reassuring. 😅 I'm all for environmentally conscious software habits. [Paul Santus](https://www.linkedin.com/in/paulsantus/) had a great example last week of an eco- and wallet-friendly design he calls [serverless lazy generation](https://dev.to/aws-builders/serverless-lazy-generation-generate-once-cache-forever-with-cloudfront-origin-groups-s3-and-4098) for immutable assets. His design uses CloudFront to fetch assets from S3 (a pattern we all know and love), and falls back to API Gateway and Lambda when the asset doesn't exist. The idea is that you pay the generation cost only when someone actually requests a file. If dozens or hundreds of assets are never requested, they're never created. No generation means no money spent and less unnecessary compute. I did spot a gap in the solution though. If the first requests for an asset arrive through different CloudFront edge locations at roughly the same time, multiple generations will be triggered. CloudFront does some request collapsing, but it's not a global exactly-once guarantee. At scale, the design would need a slightly different request-coalescing or coordination mechanism. Great design overall! Another novel approach for a long-time problem came from [Johannes Geiger](https://www.linkedin.com/in/johannesfloriangeiger/) last week where he [invalidates secrets in a Lambda function](https://medium.com/@johannesfloriangeiger/aws-lambdas-secrets-and-asynchronous-updates-59ba2d46ba3a). His claim is that now that Secrets Manager emits EventBridge events on update, you can add a trigger to your functions that will invalidate a globally stored value. It's a clever design, but only works when you run your functions with [reserved concurrency](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) of 1. Lambda can have multiple execution environments alive at once, each with its own copy of that globally stored value. An EventBridge event will trigger only a single environment (heck, or even start a new one if the others are busy) for an update. The others would continue using the stale secret. In my opinion, the safer approach is still to give globally cached secrets a TTL so every execution environment eventually refreshes its own copy. I wrote a short and sweet blog post last week about a [delayed event publishing primitive](https://www.readysetcloud.io/blog/allen.helton/send-your-events-later/) I built. It's not much more than a Lambda function that manages EventBridge schedules to publish an event, but the story is more about how I've turned it into a platform capability so all I need to do is fire a single `PutEvents` message in my app, and the scheduling and delay send is handled for me. Might be worthwhile in your apps, give it a look! ### 💡 Tip of the Week Many of us know the struggle of wanting to give a talk but not knowing what conferences are looking or when something is going to be available. I like the initiative from [Aaron Hunter](https://www.linkedin.com/in/aaronshunter/), who last week published a blog about a CFP agent he wrote to proactively find conferences for him. Very cool! ### Last Words This week is a good reminder to not take everything at face value. What is a genuinely complete solution for one person could fall apart at the scale of another. We all have our use cases and we build and share the things that solve them. So take that next post you read with a grain of salt. Or better yet, if you can figure out a way to enhance it and make it better, why not contribute back so more people can benefit? What did I miss? What made you nod along (or 🙄)? Hit reply if you're reading the email. Prefer socials? Ping me on [Twitter](https://twitter.com/allenheltondev), [LinkedIn](https://www.linkedin.com/in/allenheltondev/), or [email](mailto:allenheltondev@gmail.com). Happy coding! Allen