Container-Driven Development:
Beyond Production, Into Your Workflow
Why Extreme Programming Matters
More Than Ever
In today's fast-paced development environment, we're surrounded by frameworks and methodologies, yet something essential feels missing. We have more tools than ever—AI assistants, collaboration platforms, and advanced CI/CD systems—but teams still struggle with fundamental engineering discipline. I've been observing how the industry has largely forgotten about Extreme Programming, the very methodology that provided the practical engineering practices behind Agile. While everyone focuses on Scrum ceremonies and Kanban boards, we've lost sight of the actual engineering rigor that makes teams truly effective. This isn't just about nostalgia; it's about recognizing that the solutions to many of our current challenges were already articulated decades ago.
Digital Sovereignty
Beyond the Buzzwords
Lately, it feels like everyone’s talking about digital sovereignty. Whether it’s the push for Open Source, the debate around 'local' clouds, or concerns over foreign tech dominance, the conversation is growing louder. But what does sovereignty really mean when you break it down? In this article, I want to look beyond the buzzwords and explore the practical layers where our choices truly matter—from the infrastructure we rely on, to the platforms and code we build with, and finally, to the data that lies at the heart of it all. This isn’t about prescribing one right way; it’s about understanding the consequences of our decisions and recognizing that sovereignty isn’t a destination, but a mindset.
Lit vs Svelte: Rethinking Web Component Development
When I embarked on creating a sophisticated web component, Lit seemed like the natural choice given its alignment with web standards and efficient rendering through template diffing. However, as the project evolved, much of the core functionality—custom scrollbars, navigation markers, and extensive event handling—existed independently of the framework itself. This led me to critically assess what Lit actually brings to the table beyond basic component setup and reactive state management. The experience raised fundamental questions about when full web components are truly necessary versus using Custom Elements alone, especially considering the additional complexity of styling isolation. Now I'm looking toward Svelte's precompiled, runtime-free approach as a potential path forward that prioritizes developer efficiency without sacrificing performance.
Avoiding Over-engineering
and Unnecessary Dependencies
Every piece of software we create begins with a simple goal: to solve a problem. Yet, somewhere between the initial idea and the final commit, complexity often creeps in. We anticipate future needs that never arrive, incorporate libraries for problems we don't have, and build elaborate architectures for straightforward tasks. This journey away from simplicity usually starts with good intentions but leads to fragile, hard-to-maintain systems. In this article, I'll walk through the core principles that help me stay on track, from defining clear problem contexts to making small, tangible steps and critically evaluating every dependency. It’s a plea for building what matters and avoiding the 'arrogance tax' of over-engineering.
Mastering Go's Concurrency:
Goroutines and Channels
When I first encountered Go, what struck me wasn't just its clean syntax or fast compilation, but how it reimagined concurrent programming. Where other languages burden developers with complex thread management and synchronization primitives, Go offers something fundamentally different. The combination of goroutines and channels creates a concurrency model that's not only powerful but also accessible and practical for everyday development. This approach has evolved significantly since Go's early days, with improved patterns and abstractions that make concurrent programming more intuitive. In this article, we'll explore how these features work together and why understanding them is essential for any Go developer looking to build scalable, efficient applications.