Don't Trust Your Event Stream Alone — Pair It With a Periodic Diff

Event-driven sync drifts. Pair it with a cheap periodic dump-and-diff and you get reconciliation almost for free.

Go's Developer Experience Problem: Why Spring Boot Still Wins for Business Applications

Go is a fine language for infrastructure tooling. But for the 90% of software that is business applications, Spring Boot’s developer experience is dramatically superior – and AI-assisted development has eliminated the last argument against Java’s annotation-driven model.

What Oracle ATG Got Right (And Wrong): Lessons from a Legacy Commerce Platform

Oracle ATG Commerce is legacy now, but its Nucleus component model, immutable repository items, and config layering were ahead of their time. Its distributed locking, custom messaging, and datasource switching were not. A reflection on what held up and what didn’t.

The Identity Provider Customization Cliff: When OAuth2 Is Overkill and SaaS IDPs Aren't Enough

The identity industry is stuck between SaaS IDPs that aren’t flexible enough and custom solutions that aren’t secure enough. And for a surprising number of applications, the entire OAuth2 token ceremony is overkill – a session cookie would do.

Overengineering Microservices: When Smart Decisions Compound Into Complexity

HAProxy sidecars for mTLS. Hystrix for circuit breaking. Apache Camel between layers within the same service. Six API versions. A mandated common framework. A squash merge ban. Each decision was defensible. Combined, they created a system that took three months to onboard into.

Stop Returning 200 OK for Everything

HTTP status codes are a contract consumed by clients, load balancers, monitoring, and caches. When you return 200 OK for partial failures, every one of these systems is blind.

Hybris OCC: A REST Facade Over a Stateful Monolith

SAP Commerce OCC promises a stateless REST API for headless commerce. Underneath, every request hydrates an HTTP session and routes through the same stateful facades built for the JSP storefront. The API is stateless in contract but stateful in implementation.

Hybris Populator Framework: Design Flaws and Memory Pitfalls

The SAP Commerce Converter/Populator pattern optimized for extensibility at the cost of predictability. Deep chaining, invisible runtime graphs, and JVM heap exhaustion are the consequences.

The Hybris Persistence Layer: Why a Generation of Commerce Developers Learned to Fear ORMs

Hybris gave engineers a beautifully simple API – modelService.create(), modelService.save(), modelService.remove(). Underneath, it fired hundreds of invisible queries, consumed unbounded memory, made bulk operations impossibly slow, and refused to let you delete data. This is why people are scared of ORMs.

Module Federation Is Coupling Disguised as Micro-Frontends

With 40+ MFEs federated into a single shell, Module Federation creates a distributed monolith – all the operational complexity of microservices with all the coupling of a monolith.