|
 |
Hello,
This week’s edition is a true full-stack buffet: we’ve got IO performance deep-dives, JavaScript/SQL puzzles to sharpen your skills, a spicy critique of Go’s return (T, error) pattern, and even a dead-simple GitHub Actions workflow for deploying static sites. Whether you’re debugging a legacy monolith or tinkering with greenfield code, there’s something here to fuel your next “aha!” moment.
PS: I’ll be at AWS Community Day Italy in Milan on April 2nd! If you’re there, come say Ciao, I’d love to connect!
Stay curious & keep learning ✌️
— Your editor, Luciano |
“A year spent in artificial intelligence is enough to make one believe in God.“ — Alan Perlis |

|
IO devices and latency — Damn! I love those articles with tons of interactive widgets that allow you to play around with the concepts that are being presented to you. This is one of those and it's an excellent one to understand different types of IO devices and their tradeoffs truly. OK, this is maybe not out usual bread and butter as full-stack web devs, but I'd argue that understanding how storage works will make us more well-rounded software engineers, so I'd recommend having a peek at this one! Read article |
Design by Decision Fatigue — Last week, I bumped into this article and really enjoyed it! The author unpacks how early technical choices (frameworks, code structure, etc.) in greenfield projects seed future tech debt. They share battle-tested strategies (prototyping, documenting decisions, leveraging opinionated tools, etc.) to combat decision fatigue. Full-stack devs juggle layered decisions daily; this is a playbook that can help you balance speed of delivery and long-term maintainability. Read article |
Rsdoctor hits v1.0 — Last week, the team behind Rsdoctor announce the release of their first stable version. If you never heard of Rsdoctor, it is a build analyzer for the Rspack/webpack ecosystems, that offers visualized build insights, bottleneck detection, and custom optimization rules to understand what happens behind the scenes of complex builds. You can think of it like a "CT scan" for your build process. It pinpoints slow plugins, debug Rspack’s built-in loaders, and auto-scan for warnings. As a bonus, being written in Rust (in case you didn't guess that from the name!), it's supposedly super fast! Read article |
A Perplexing Javascript Parsing Puzzle — OK, I admit that even with more than 15 years of JavaScript experience I failed at this one... So, are you ready for a little intriguing challenge? You'll need to look at some seemingly simple piece of JavaScript code and guess what is the value that the script is going to be evaluated to... I'll give you just one spoiler: you'll be learning something new and unexpected about some legacy characteristics of the language. Also, I have a strong recommendation: please don't use this challenge in a technical interview! Read article |
Building and deploying a custom site using GitHub Actions and GitHub Pages — GitHub actions and GitHub pages are my favourite way to deploy static websites (and I have loads of them!) so I couldn't pass on this article :). This article showcases a minimal pattern for building a completely custom website using GitHub Actions and deploying the result to GitHub Pages. If you use something not custom (e.g. Next.js, VuePress, Docusaurus, or Astro) you can easily swap that echo '<h1>Hello, world!</h1>' > _site/index.html with your framework specific build step and off you go! Read article |
SQL Squid Game — Here we go with another challenge. This is actually more than a single challenge. It's an entire game where you can test and improve your SQL skills while competing for rounds of Squid game (Yeah the same one of the TV Show). So, is your SQL good enough for you to survive through these challenges? A funny little way to get better a SQL. Check it out! Play the game |
Were multiple return values Go's biggest mistake? — Whenever I use JavaScript, Python, C#, Java, or other exception-based languages I always find myself trying to avoid exceptions. There are many reasons for that and I should eventually write a blog post about it, but in short, it comes down to the "action at distance" problem. Your catch blocks often end up very far away from the exceptions you are handling, which is something that makes the code hard to read and maintain in the long term. That's why I have always appreciated different approaches based on plain value types like the ones adopted by Go and Rust. This article is actually a bit critical on some details of the Go implementation, but if you are a languages nerd like me, I am sure you'll enjoy this perspective. Read article |
|
Architecture Patterns with Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservicesby Harry Percival, and Bob Gregory |

|
As Python continues to grow in popularity, projects are becoming larger and more complex. Many Python developers are taking an interest in high-level software design patterns such as hexagonal/clean architecture, event-driven architecture, and the strategic patterns prescribed by domain-driven design (DDD). But translating those patterns into Python isn't always straightforward. With this hands-on guide, Harry Percival and Bob Gregory from MADE.com introduce proven architectural design patterns to help Python developers manage application complexity―and get the most value out of their test suites. Each pattern is illustrated with concrete examples in beautiful, idiomatic Python, avoiding some of the verbosity of Java and C# syntax |
|
Here's a little gift for you: more content! 🎁 |
👋 That’s all for this week. See you next Monday! Greetings from your full stack friends Luciano & Andrea |
| If you enjoy FullStack Bulletin, consider sharing this newsletter with your friends and colleagues.
If there's something we can improve, let us know!
You can also sponsor the next issue! |
|
|
|
|
|
|
|
|