Blog
Documenting my journey through software engineering, embedded systems, and continuous learning. Each post explores practical challenges, design decisions, and lessons learned from building real systems.
Beyond Busynness: Why Output Is Not Value
- Newport, Kim, Farley, Martin: different worlds, same conclusion
- Greenfield or legacy: flow, trust, and small batches create value in both
- Regulatory constraints are rarely the real barrier, organizational belief is
- The job is not to produce code, it is to reduce complexity and create value
Read article →
When 'It Works' Is No Longer Enough
- From working prototype to production-ready: refactoring a physics simulation
- Factory, Strategy, Builder patterns eliminate code duplication and silent failures
- std::variant over inheritance: compile-time safety instead of runtime crashes
- The goal: move error detection from runtime checks to compiler guarantees
Read article →
From Defensive Programming to Type-Driven Design
- Defensive programming: catching errors at runtime through discipline and process
- Type-driven design: making invalid states impossible at compile time
- In C: half the code is error handling. In Rust: types prevent the errors
- The goal: move safety from manual checks to compiler guarantees
Read article →
Why I Do Not Like Linux Distro Hopping but Keep Doing It Anyway
- From Xubuntu to EndeavourOS to Mint to Arch, each switch sharpens understanding
- Simplicity is not a limitation but a deliberate choice
- Easier to build aligned systems from scratch than reshape misaligned ones
- The real goal: a system that enables focus instead of distracting from it
Read article →
Dr. Strangelove or How I Learned to Stop Worrying and Love Testing
- TDD is not a testing technique but a design method
- Test behavior, not implementation: the key insight that changed everything
- Verification vs. Validation: building the product right vs. building the right product
- Tests as a safety net: refactor with confidence, not fear
Read article →
From C to Rust - Evolving Programming Languages in Automotive Development
- C remains essential for hardware-near programming where every cycle matters
- C++ bridges low-level efficiency with modern software design patterns
- Rust offers memory and thread safety at compile time without runtime cost
- The future is hybrid: choosing the right language for the right layer
Read article →