Essays
Short arguments on software architecture, context engineering, and design for reliable modification.
- What's Left for Programmers After AI Takes Over the Code?
Code generation by AI is no longer a prediction—it's observable reality. But the work of solving real-world problems with software isn't going away. A framework for understanding what remains human territory: value judgments, problem definition, and the future of the software practitioner.
- Multi-Agent Systems: From Division of Labor to Division of Attention
Why do we need multiple AI agents when one LLM can do everything? The answer isn't about skills—it's about memory isolation and context sharding. Exploring how Multi-Agent systems solve the attention problem through context separation.
- Software Design First Principles
Exploring the fundamental principles of software design through the lens of cognitive science and information theory. Understanding how limited cognitive bandwidth shapes architecture and why Context Engineering is the endgame of software engineering in the AI era.
- From Clean Architecture to Balatro: When 'Bureaucracy' Meets 'Emergence'
Exploring how game development's ECS paradigm challenges traditional Clean Architecture, and why sometimes perfect order is the enemy of joy. A reflection on bureaucracy vs. emergence in software design.
- Dependency Injection as an Evolutionary Step: From Self-Sufficiency to Specialization
Dependency injection isn't just a clever technique—it's an evolutionary step that transforms codebases from self-sufficient systems into specialized, scalable architectures. Learn why DI matters beyond edge cases and how it enables teams to compound their work effectively.
- When Documents Become Programs
How AI Skills represent a fundamental shift: documents evolving from passive knowledge containers into executable programs that agents can run, humans can learn from, and teams can refine together.
- AI Programming: Replaying 50 Years of Software Engineering in 2 Years
AI coding has replayed decades of software engineering in fast-forward — from vibe coding chaos, to spec-first echoes of waterfall, to agile design that makes systems changeable. Here's how to steer it.
- The Missing Click
Exploring the subtle UX mistake of missing click targets and how to fix them.
- Context Engineering in Software Engineering
How the principles of software engineering become even more critical in the age of AI, with a focus on interfaces and SOLID principles as context management tools.
- Architecture-Aware AI Agents: Principles for Coherent Collaboration in Domain-Heavy Software
Twelve principles for designing AI agents that maintain architectural coherence while collaborating on complex software projects.
- The Context Conundrum: A Shared Limit for Humans and AI
Exploring how abstraction, functional programming, and Clean Architecture help both humans and AI manage context complexity in software development.
- Domain-Driven Design: Streamlining AI-Powered Software Development
How Domain-Driven Design provides a strategic framework for tackling complex, domain-heavy software projects with AI assistance.
- Beyond Vibe Coding: Why AI Won't Replace Software Engineers
An exploration of why AI coding tools excel at simple tasks but struggle with complex, domain-heavy software engineering challenges.