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.


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 →