Header Background Header Background Header Background Header Background Sebastian

Dive into my Writing Journey—a personal chronicle of thoughts, experiments, and evolving ideas in software craftsmanship, product building, and the broader world of technology.

Here, you'll find raw reflections, in-depth essays, case studies, and stories from the trenches: everything from deep dives into product philosophies to practical lessons on architecture, team dynamics, and navigating the chaos of real-world development.

It's not polished perfection—it's the unfiltered path of exploration, mistakes, insights, and growth. Whether you're a seasoned builder, an aspiring creator, or just curious about the human side of making software, join me as we unpack these ideas together, one post at a time.

Upcoming

Beyond the Tools:
Rediscovering the Craft of Coding

From Browser Hacks to Modern CSS:
A Frontend Evolution

It wasn't long ago that crafting a consistent web experience across different browsers felt like an exercise in frustration. We relied on cryptic hacks, image sprites for simple shapes, and entire Flash plugins just to use a custom font. The landscape of frontend development has undergone a quiet revolution. The tools available to us today aren't just incremental improvements; they represent a fundamental shift towards robust, standardized, and expressive native web technologies. This article traces that journey from the problematic past to the powerful present, highlighting the specific CSS features and approaches that have made cross-browser development not just manageable, but genuinely enjoyable.

When to Split a Monolith
and How to Connect the Pieces

The debate between monolithic architectures and microservices is a constant in software design. While the industry often pushes for decomposition by default, my experience has led me to a more measured stance. This article distills the decision down to three core, practical drivers: scalability, reusability, and tech stack requirements. I'll argue that a well-structured monolith is often sufficient, and that moving to services should be a deliberate, reason-driven choice. Then, we'll explore the inevitable challenge that arises when you do split things up: communication. I'll share my journey through different solutions for connecting services, focusing on tools that prioritize simplicity and power without introducing overwhelming infrastructure complexity.

Beyond Containers: Unikernels and the Future of Secure, Efficient Services

When we think about deploying modern web services, containers are the default answer. They offer fantastic density and operational speed compared to traditional virtual machines. Yet, that efficiency comes with a well-known trade-off: a reduced security boundary that, while often sufficient, has proven vulnerable to escape exploits. On the other side, VMs provide robust isolation but feel too heavy and slow for the dynamic, scalable world of cloud-native applications. This tension led me to look for a middle path—a way to achieve the strong security of a VM with the lightweight, fast-booting nature of a container. My exploration brought me to the compelling world of Unikernels and the tools, like Unikraft, that are bringing them into mainstream consideration. This article dives into that journey, examining how these specialized kernels work and why they might be the next step in our quest for performant and secure infrastructure.

Beyond Rust: Rethinking Software Safety in a Legacy World

Last year, 2025, reinforced a familiar and worrying pattern: critical vulnerabilities, often stemming from memory-safety issues in foundational C++ code, continue to plague our most essential software. The logical, compelling answer from many corners of the industry is a shift towards memory-safe languages like Rust. I understand this push completely. However, by framing Rust as a silver-bullet solution, we risk addressing only the symptom while ignoring the underlying disease of complexity and superficial understanding in massive codebases. This article explores the tangible benefits and subtle pitfalls of the Rust transition, the immense reality of our C++ legacy, and why the future of software safety might not be decided by a compiler, but by the tools we build to augment our understanding.

Beyond Go Modules:
Sharing Resources Across Repositories

Dependency management with Go Modules has become a standard part of the workflow, but it only solves one part of the puzzle. In environments with multiple repositories, we often need to share more than just libraries—think configuration templates, Docker service definitions, or shared mock objects for testing. These resources don't fit neatly into the module system and demand different approaches. This article looks at the landscape of options, from project generators that create and maintain snapshots of code to more direct methods like Git subtrees or even simple curl scripts. The goal is to find maintainable ways to ensure consistency and reduce manual toil, whether you're bootstrapping a new service or keeping a suite of projects in sync.
Page 1 of 20