Reporting and Production Make Terrible Roommates
March 11, 2026
12 min
Reporting pressure gradually distorts production schemas until they serve two masters and compromise for both. Separating the workloads lets each model evolve for the consumers it was designed to serve.
Read post →
The Measure of a Decision
March 05, 2026
10 min
A triad for measuring the integrity of decisions that affect others: Justice, Service, and Cultivation. All three must hold simultaneously, and all three require foundational axioms and tenets that no human authority can redefine.
Read post →
Stop Hunting for Sales, Start Farming Chickens
February 20, 2026
6 min
One-time sales make every customer a dead end, creating a death spiral where acquisition costs are recurring but revenue isn't. Subscriptions fix the math by compounding cash flow, lowering customer expectations, and funding sustainable marketing.
Read post →
How One Screen Holds the Entire Industry Hostage
February 17, 2026
13 min
The web platform already does what most apps do, but Apple's control of the phone screen keeps the industry building native. The 'users prefer native' narrative is circular logic created by the constraint itself.
Read post →
Observability Is Authored, Not Installed
February 11, 2026
6 min
Most observability failures trace back to code that doesn't classify its own behavior. When your system can't distinguish 'handled correctly' from 'actually broken,' no platform can compensate.
Read post →
The Most Dangerous Sentence in Software Development
February 07, 2026
11 min
Every methodology assumes that when discovery arrives, someone will stop and act on it. Plan continuation bias is the pre-rational impulse that prevents exactly that.
Read post →
The Advantage of a Turtle with a Pen
January 11, 2026
6 min
Those who must write to remember, ask 'why' to understand, and prioritize ruthlessly to focus end up developing the disciplines that let them teach, lead, and build things that outlast them.
Read post →
How Shared Libraries Become Shared Shackles
January 06, 2026
14 min
Shared libraries promise reuse and consistency but more often bind team autonomy and development tempo through coupling and coordination overhead. The consistency they claim to provide is better achieved by sharing principles, tradeoffs, and values rather than sharing implementation.
Read post →
AI in Practice: The Skill Inversion
December 31, 2025
6 min
As AI commoditizes code generation, the bottleneck shifts from technical execution to business judgment. The middle is hollowing out: you either go deep-and-mechanical or broad-and-human.
Read post →
To Create is to Choose
December 24, 2025
9 min
Progress requires sustained effort against entropy; regression requires nothing. The choice to create is what we owe each other.
Read post →
Making Invalid States Unrepresentable: The Billion-Dollar Mistake That Wasn't
December 18, 2025
14 min
Structure your data so invalid states cannot exist. Validate at construction, trust internally, and let null crash loudly rather than masking absence with defaults that propagate corruption silently through your system.
Read post →
SEO Still Works, Just Not How We Hoped
November 22, 2025
5 min
The 'SEO is dead' narrative draws a false binary between SEO and social media. SEO has a real problem: authority signals that once filtered spam now create insurmountable barriers for newcomers. But it still excels at surfacing authority and trust. Use social channels for democratic reach and speed; let SEO compound as a long-term credibility asset.
Read post →
Shaped Kanban: Complete Features, Not Sprints
November 17, 2025
11 min
Sprints organize around time intervals. Shaped Kanban organizes around completing features with clear boundaries and circuit breakers to bound risk. Work flows at its natural pace within disciplined constraints.
Read post →
Why 'Tech Debt' Does Not Get Fixed
November 11, 2025
6 min
The term 'tech debt' perpetuates the communication failures that created the problem. It's ambiguous, defensive, and guarantees deprioritization. Replace it with Corrections, Optimizations, and Re-Alignments to break the cycle.
Read post →
Why the Fastest Incident Responders Slow Down First
November 08, 2025
11 min
Reproduction is the fulcrum of effective troubleshooting. Without it, you're guessing about the problem and guessing about the fix. The teams that resolve incidents fastest have internalized the fundamentals so completely that gathering facts, testing assumptions, and proving causation become automatic even under pressure.
Read post →
Rebuild Success Often Comes from Realignment, Not New Technology
November 07, 2025
8 min
Many celebrated system rebuilds appear successful not because of new technology, but because they force teams to realign with value and best practices. This realignment work could have happened without the rebuild.
Read post →
Package Updates Are Investments, Not Hygiene Tasks
November 07, 2025
9 min
Treating package updates as investments rather than chores means making deliberate, context-driven decisions based on value and risk instead of following dogma or chasing version uniformity.
Read post →
Why I Changed My Mind About Exceptions
October 29, 2025
11 min
Evaluating arguments for Result types versus exceptions for handling expected failures in modern distributed C# systems, examining which claims have measurable backing and which are subjective preference.
Read post →
Why Your Agile Team Might Be Building on Hope, Not Discipline
October 23, 2025
15 min
It is impossible to deliver what is expected and valuable if there has been no agreement on the expectation. Without discovery and genuine agreement, you're operating on hope, not discipline.
Read post →
Terraform Was the Bridge, Not the Destination
October 16, 2025
5 min
Cloud platforms have matured to the point where native IaC tools offer fundamental advantages that third-party solutions can't match. State management, security integration, resource coverage, and brownfield migration all favor platform-native approaches, and market sentiment is shifting to reflect this reality.
Read post →
Why Configuration Files Don't Belong With Your Code
October 11, 2025
13 min
Storing configuration files alongside application code creates security risks and deployment complexity. Distributed config stores solve these problems while introducing new trade-offs worth making.
Read post →
How Weak Leaders Weaponize Empowerment
October 11, 2025
7 min
Personal development goals, family culture, and unlimited PTO sound empowering. In practice, they're often control mechanisms that externalize leadership failures onto employees through ambiguity, emotional manipulation, and blame-shifting.
Read post →
Auth Sessions Should Never Be Transient Across Boundaries
October 10, 2025
5 min
Authentication sessions belong at security boundaries, not flowing through internal systems. Treating them as ambient context violates architectural boundaries, creates coupling, and breaks down in async and event-driven scenarios.
Read post →
First to Market, First to Fail: The Economics of Architectural Decisions
October 10, 2025
5 min
Rushing to market creates delayed costs that compound over time. Second movers learn from pioneers' mistakes while building on solid foundations. Architectural decisions are economic decisions, and the bill always comes due.
Read post →
Why JWTs Make Terrible Authorization Tokens
October 10, 2025
5 min
Embedding authorization in JWTs creates security risks and UX problems because immutable tokens don't match dynamic permissions. Learn why session-based grants are worth the minimal latency cost.
Read post →
Why Experts Explain Things Simply (And How to Get There Faster)
October 09, 2025
3 min
Understanding emerges from acknowledged ignorance expanded through research and compressed through teaching. A methodology for accelerated learning.
Read post →
Consolidate Architecture to Rediscover Lost Agility
October 08, 2025
4 min
When distributed systems lose their rationale through team churn, consolidation reveals true boundaries. Merge tightly-coupled services to discover what boundaries actually make sense, then split correctly when justified.
Read post →
Are You Using Hexagonal Architecture, or Just Dependency Injection?
September 29, 2025
3 min
Most developers achieve hexagonal architecture's goals without implementing its structure. Modern frameworks offer testability and decoupling through different means, and understanding this distinction clarifies what you're actually building.
Read post →
Avoid Forcing REST onto Domain-Driven Architectures
September 27, 2025
6 min
Why REST's resource-centric design conflicts with domain-driven architectures and how RPC provides better alignment with business operations.
Read post →
Single-Minded Focus Atrophies Everything Else
September 19, 2025
4 min
Single-minded focus atrophies everything else you know. Real focus means being fully present with what matters right now, shifting attention as the work reveals what needs it.
Read post →
The Switching Cost Trap: When Better Technology Sits Unused
September 09, 2025
4 min
Better technologies exist and sit unused because switching costs create rational reasons to maintain the status quo, potentially leading to decades of maintaining increasingly fragile systems.
Read post →
Blazor and Microsoft's UI Framework Track Record
August 29, 2025
3 min
Blazor offers a solid development experience for .NET teams, primarily through Blazor Server for internal enterprise apps. But Microsoft's history of abandoned UI frameworks raises questions about its long-term viability.
Read post →
Learning Platforms Sell Badges, Not Skills
August 27, 2025
2 min
Building real projects teaches more than passive learning platforms ever could. Real capability comes from doing, failing, and fixing, not collecting completion checkmarks.
Read post →
Why LeetCode Interviews Measure the Wrong Thing
August 19, 2025
4 min
Algorithm interviews optimize for pattern memorization while ignoring the multidisciplinary skills that define effective software engineering.
Read post →
Know What You Are, Regardless of Your Title
August 10, 2025
3 min
Job titles rarely reflect what you actually do or how you think about your work. Understanding whether you operate as a coder, developer, or engineer matters for your growth, even when your title doesn't match.
Read post →
Adaptability Over Cleverness: What Makes Code Actually Good
August 05, 2025
2 min
Good code isn't clever or fast; it's adaptable. Systems that survive change, not chase perfection, win over time.
Read post →
TDD Tests Assumptions, Not Just Code
July 28, 2025
5 min
TDD's real value isn't code coverage, it's catching wrong assumptions before you deliver the wrong thing.
Read post →
The Housing Lock-In Effect and Remote Work
July 22, 2025
2 min
High mortgage rates create a housing lock-in effect that prevents homeowners from relocating. This could force employers to embrace remote work as talent becomes geographically immobile.
Read post →
AI Code Generation Requires the Skills It Promises to Replace
July 17, 2025
3 min
AI assistants generate code faster, but only if you already know what good code looks like and can validate their output; the very skills they claim to eliminate.
Read post →
Agile Works When People Align, Agree, and Deliver
July 03, 2025
4 min
Why Agile works when teams align, agree, and deliver consistently: identifying common failure points and how to avoid them.
Read post →
Monoliths for Discovery, Microservices for Optimization
June 21, 2025
2 min
Why monoliths are effective for discovery and microservices are optimizations: principles for choosing the right architecture for your context.
Read post →
What Engineering Leaders Ask That Others Don't
June 11, 2025
4 min
Key characteristics that define effective leaders and mentors in software development: accountability, continuous learning, and building others.
Read post →