I design and build software systems that are simple to reason about, explicit in their behavior, and resilient over time.
My primary interest is software architecture — understanding how systems should be structured, how their components interact, and how to keep complexity under control as they evolve.
I'm particularly interested in backend engineering, asynchronous programming, APIs, distributed systems, and engineering practices that make software maintainable rather than merely functional.
Good architecture isn't about adding layers. It's about making the important things obvious.
My areas of interest include:
- System and software architecture
- Event-driven and asynchronous systems
- Modular design and separation of concerns
- APIs, services, and integrations
- Domain modeling and system boundaries
- Concurrency and distributed systems
- Testing strategies and software correctness
- Designing systems that evolve without becoming fragile
| Area | Focus |
|---|---|
| Async PHP | ReactPHP · AMPHP · Concurrency |
| APIs & Services | Slim Framework · REST · Service design |
| E-Commerce | WooCommerce · Integrations · Custom systems |
| Testing | Unit testing · Mutation testing · Test design |
| Architecture | Modularity · Boundaries · System design |
I prefer software that is boring in the best possible way.
Less magic.
More understanding.
Explicit over implicit.
Simple over clever.
Small components.
Clear boundaries.
Test behavior.
Question complexity.
Build for change.
Design for longevity.
I believe good engineering is less about how much code we can write and more about how much complexity we can avoid.
I'm particularly interested in the intersection of:
Architecture × Concurrency × Simplicity × Correctness
My goal is to explore how these principles can be applied to systems that remain understandable, predictable, and maintainable as their requirements and complexity grow.
Architecture should reduce complexity, not relocate it.
Abstractions should earn their existence.
If you can't explain how it works, you probably don't understand it yet.
Software should be designed to survive its next requirement.