Efficient Web Workers with Bun and CBOR Serialization
When working with web technologies, I prefer keeping things minimal and dependency-light. That’s why I’ve been experimenting with Bun to bundle TypeScript code efficiently. However, Web Workers present two specific challenges: Bun doesn’t automatically adjust worker instantiation for TypeScript, and JSON-based communication is both inefficient and untyped. In this article, I’ll share how I solved these issues using a custom build script and CBOR serialization—resulting in faster, more reliable worker communication.
Using AI as a Pair Programming Partner in Development
The integration of AI into the daily workflow of a developer is more than a trend; it's a fundamental shift in how we approach problem-solving. Rather than replacing human intellect, the true power of these tools is unlocked when they act as a collaborative partner. In my own practice, I’ve established a simple but crucial rule: I only delegate tasks I am fully capable of doing myself. This ensures I maintain expertise and make informed final decisions. This article delves into the specific, practical ways I leverage AI for everything from high-level design discussions to tedious refactoring, treating it as a virtual pair programmer that enhances my capabilities without overriding my judgment.
Beyond Kubernetes: Choosing the Right Infrastructure Abstraction
Simplicity has always been my guiding principle for building sustainable and maintainable software. But there's a stark contrast between the clean architecture of a developed service and the complex toolchain required to run it in production today. The cloud, with its endless parade of CI/CD, IaC, and orchestration tools, offers convenience but often at the cost of clarity and direct control. This article isn’t a dismissal of powerful platforms like Kubernetes; it’s a call to make conscious, informed choices. We’ll explore the landscape of infrastructure tools, from simple compute units to full-blown platforms, and discuss how a deep understanding of the fundamentals empowers you to choose the right level of abstraction for your needs, prioritizing efficiency and cost-effectiveness without sacrificing capability.
Containers, Kubernetes, and the Value of Understanding Basics
Over the years, I’ve watched containers evolve from a niche technology into the backbone of modern development. But with that growth comes a danger: we’re layering on so much abstraction that we risk losing sight of what makes containers powerful in the first place. In this article, I want to revisit the core ideas—namespaces, cgroups, and the elegance of Docker Compose—and discuss why sometimes, stepping back from complex orchestration can give us faster, more transparent, and more efficient systems. It’s not about rejecting tools like Kubernetes, but about remembering what’s underneath them.
Reclaiming Pragmatism
in Software Development
Lately, I’ve noticed a troubling trend in our industry. The term ’pragmatism’ has been co-opted, twisted into a justification for cutting corners and shipping subpar code. It’s now used as a synonym for ’quick and dirty’, casting a long shadow over what should be a core principle of good engineering. But I believe we’ve lost the plot. The real meaning of pragmatism is something far more powerful and intentional. It’s not about ignoring best practices; it’s about deeply understanding them so you know when and how to mindfully bend them to serve a greater purpose. This article is my attempt to reclaim the word and explore what it truly means to be a pragmatic developer in a world full of rigid frameworks and pure theory.