Keep public header files clean. Clean header files are easier to understand, improve build times, and simplify unit testing.
An enum combined with a lookup table presents a unique code maintenance concern. Learn more in this post.
Concurrency is hard. Multithreaded code is hard. This post surveys common concurrency related bugs and outlines possible solutions.
How do we unit test an active object or state machine? This post explores techniques for successful unit testing of modules driven by state machines.
Be wary of exit-state driven behavior when designing for UML statecharts.