Odin Holmes


Odin was allocated from a pool of hippies in the middle of the forest. He spent most of his career designing electronic circuits and programming micro controllers in assembler. One day after having shot himself in the foot particularly badly a friend introduced him to C++, a seriously powerful and ongoing addiction followed. Odin has authored many proof of concept libraries in the embedded field and is trying to revolutionize this domain. Odin co-authored the kvasir::mpl library, co-founded the embo.io conference and was a heavy contributor to the brigand library. In his day job, he teaches people how to shoot themselves in the foot less and get more from their compiler, both with his in-house team as well as in a training and consulting role.



Modern Embedded APIs, Bare Metal Should Cause Less Pain (2016)

Scott Meyers has often publicly expressed our communal goal as software developers and library designers: “make interfaces easy to use correctly and hard to use incorrectly”. Current bare metal embedded code is often about as far from that goal as syntactically possible. In other words we have failed at that goal, as is true in many other domains. There are many reasons given for this disparity, however most of them are either myths or outdated. C++11/14 has given us an incredible new tool set to work with, its high time we used it. The domain specific constraints, namely the flexibility of threading model, memory management, exotic hardware drivers and the uncompromising need for speed are quite stringent. On the other hand the fact that programs are smaller and RTTI is usually stripped any way make this domain a metaprogrammers paradise. In this talk I will show many domain specific as well an universal methods with which complex, powerful and highly flexible libraries leveraging advanced generic techniques such as lazy evaluation and policy based class design can be hidden behind friendly, intuitive and fully static checked public interfaces. This will not be a typical API talk, lets face it, most "typical" APIs are outdated. This will be a rabble rousing "rethink what you think you know about APIs" talk and a "heres a syntactic tool you (probably) didn't know existed" talk.