First blog post in an ongoing series on developing the Crunch message serialization framework. Its main design goals are opt-out rather than opt-in message and field validation, pluggable serialization formats, and completely static memory allocation.
In my time working as a professional embedded software engineer, I have seen a lot of code that super tightly couples abstract business logic to a particular peripheral device or low level OS facility. I was inspired to write this blog post about how folks can write more maintainable and extensible C code using a concept called dependency inversion.
Hopefully its insightful and something ya'll can apply to your own projects! The post links a github repo with all the code in the example so you can check it out and run things yourself!