Writing
Essays, learnings, technical notes, and the occasional rant.
-
Psychology of learned helplessness to tackle issues in engineering teams
Tech debt is rarely a tooling problem — it's often learned helplessness, and external intervention plus small repeated actions is how teams break the cycle.
-
Strangulating bare-metal infrastructure to Containers
An incremental strangler-pattern migration from bare-metal Ansible deployments to Kubernetes with under a few minutes of production disruption.
-
Patterns for microservices - Sync vs Async
Trade-offs between synchronous and asynchronous communication styles in a microservices architecture.
-
How I learned to love personal development
Finding structure in personal development so it doesn't get crowded out by delivery and deadlines.
-
Building Adaptive Mobile APIs with Legacy Services
An adaptive proxy layer between mobile apps and legacy backends to decouple release cadence, trim payloads, and aggregate sources.
-
Reinforced design with TDD
How TDD reinforces good object design — breaking problems into small units, forcing behavior-first thinking, and building a safety net for refactoring.
-
Objects that talk domain
Why models should own behavior tied to the domain — and what's wrong with the data-transfer-object reflex many enterprise developers carry over.
-
Objects that are loose and discrete
State vs behavior, Tell-Don't-Ask, unidirectional associations, Law of Demeter, and dependency injection — guidelines that keep object models loosely coupled.
-
Design patterns for win
Why design patterns are worth learning — illustrated with Command and Strategy refactorings on the Mars Rover problem.
-
Decoding ThoughtWorks' coding problems
An intro to a series on what "good code" means in the context of ThoughtWorks' interview code reviews, using the Mars Rover problem.
-
Validating SSL certs in Mobile Apps
Preventing Man in the middle attacks with certification .
No posts match.