Platform Engineering

Post Image

The Unix Philosophy for Agentic Coding

Most people use AI coding agents backwards. They hand the agent a problem and ask it to solve the whole thing. The agent reads, reasons, generates, and hopes for the best.There’s a better way. One that’s cheaper, more predictable, and already well understood. It’s the Unix philosophy, applied to how we work with AI.The Unix philosophy boils down to: do one thing well, compose small tools, let the shell orchestrate. When you work with an AI coding agent, the agent...

Read
Post Image

A Skill Map for Learning AI-Assisted Development

Principles are useful, but they don’t tell you what to practice.In my previous post on intelligent Engineering principles, I outlined the ideas that guide how I build software with AI. Since then, I’ve had people ask: “Where do I start? What skills should I build first?”This post answers that: a map of the skills that make up intelligent Engineering, organised into a learning path you can follow whether you’re an individual contributor looking to level up or a tech leader...

Read
Post Image

Context Engineering for AI-Assisted Development

Same model, different tools, different results.If you’ve used Claude Sonnet in Claude Code, Cursor, Copilot, and Windsurf, you’ve noticed this. The model is identical, but the behavior varies. This isn’t magic. It’s context engineering.In Principles for Building With AI, I mentioned that “context is everything” and that “context engineering matters more than prompt engineering.” But I didn’t explain what that means or how to do it. This post fills that gap.Imagine you’re in a day-long strategy meeting. There’s one whiteboard...

Read
Post Image

Structuring Claude Code for Multi-Repo Workspaces

Claude Code understands one repo at a time. Most teams have thirty.Microservices, shared libraries, infrastructure-as-code, frontend apps, data pipelines, all in separate git repos. Start Claude Code in one and ask about another, and it has no context. It doesn’t know the workspace exists.Here’s how I’ve been setting this up to work across repositories.When you start Claude Code in orders/order-service, it has no idea that orders/orders-ui exists next door, or that shared libraries live in shared/, or that the data...

Read
Post Image

The Comfort Plateau AI Built For You

I’ve spent the last year watching engineers and writers adopt these tools, and the same pattern keeps showing up. The first three months look transformative. The next nine look almost identical to the first three.The output keeps coming. The confidence keeps building. The skill stops moving.This isn’t a story about AI making people dumber. It’s a story about a comfort plateau that didn’t exist before, and what it costs to stay on it.Draw a spider chart. Hundreds of axes: SQL,...

Read

Hibernate Internals: Three Gotchas Every Developer Should Know

When developers start using Hibernate (via Spring Data JPA), it can seem highly automated—define a repository interface, call findById, and the data is retrieved. However, this abstraction comes with underlying assumptions, and without a clear understanding of them, subtle production issues can arise. This post explores three common pitfalls: Hibernate’s first-level cache, why checked exceptions do not trigger rollbacks, and why Kotlin’s runCatching may not behave as expected in a Spring Data setup.All examples are from a small Spring Boot...

Read

The Thin Line Between AI-Assisted Development and Vibe-Coding

I still fondly remember my first-hand experiences of using GitHub Copilot and Cursor. When I used GitHub Copilot for the first time (around 2023), I was a college student in my third year. It was an evening time, sitting alone in the HoD room, working on a project. I had applied for GitHub Education Pack and got access to GitHub Copilot through JetBrains Rider. It was those early days when Copilot was just autocompletions with specially-trained LLM called "Codex" and...

Read
Post Image

Designing Resilient Event-Driven Systems

How we handle failures changes drastically in the event-driven systems world. Unlike the immediate feedback loop with API-based systems, producers fire off a message and assume things will work fine. This is not just technical; it's also about trust and reliability.When I was working on an e-commerce application, it really taught me the importance of failure handling in event-driven systems. It became more apparent when we hit peak sales campaigns. The volume of events coming in really tested the system,...

Read

Agent-Assisted Story Crafting: Shaping Your Stories with AI

We’ve all been immersed in the hype surrounding Generative AI. It’s becoming a critical part of business operations, whether for sales, support, or analysis. As a techie, I’ve also been exploring how to leverage these tools to boost my productivity. Ideally, I’d use them for code generation and analysis. However, the effectiveness of these tools purely depends on the wielder.“A smartphone is only as smart as the user.”While everyone around me was getting accustomed to smart code completion tools, we’ve...

Read
Post Image

Agent-Assisted Story Crafting: Shaping Your Stories with AI

We’ve all been immersed in the hype surrounding Generative AI. It’s fast becoming a critical part of business operations, whether for sales, support, or analysis. As a techie, I’ve also been exploring how to leverage these tools to boost my productivity. Ideally, I’d use them for code generation and analysis. However, the effectiveness of these tools purely depends on the wielder.“A smartphone is only as smart as the user.”While everyone around me was getting accustomed to smart code completion tools,...

Read