Zero Cost Abstractions, Hardware and great people at emBO++ 2018.
I had started writing this post in the train on my way back home from the emBO++ conference in Bochum. The intention was to have the post done and online before going to bed. However, being rather tired, I ended up going straight to bed when I came home. Then the daily life started again, new jobs were started and now it's been over a month since I started writing this post.
I realize now that I actually needed the time to process the entire awesome experience that was emBO++. The whole conference was a very positive, inspiring and welcoming experience. A lot of the content was new for me and I learned a lot about the problems in this domain. A very enjoyable part of all the C++ conferences I've attended so far has been meeting interesting people and talking about the things that fascinate me.
In the following sections I'll try to give an overview of the conference.
Day one, workshop-day
The first day was workshop day and in the (early!) morning I attended Rainier Grimm's workshop about templates. Having done a two day course on template programming at CppCon only a few months ago, I did not learn as much this time. However, it was good to refresh some topics. I also felt confident enough to join in the discussion, which was valuable.
After the first workshop we had an absolutely brilliant and healthy lunch. This provided a nice opportunity to get to know some more of my fellow attendees as well as some of the speakers. Everything was very well organised and the food was really great.
Recharged and fresh once again there were now two other workshops: One workshop about compile-time construction of state machines, by Kris Jusiak, and the other about a new C++17 library aimed at programming hardware directly (HwCpp) by Wouter van Ooijen.
I decided to attend the workshop about HwCpp as I'm quite new to embedded programming and new to dealing directly with hardware. Wouter brought a whole bunch of hardware for everyone to try out. He started with an introduction to his library and how he went about implementing it. Then he showed some example programs and helped us to set-up our machines and the hardware he brought to try out his library.
It took a little bit of effort to set-up the right compiler toolchain and install all the necessary tools, but within 30 minutes most people were able to flash their Arduino Due's. With the help of one of Wouter's students I managed to get everything connected correctly and got some simple programs running. It was very impressive how little code I needed to write myself to get some simple programs working. Even though I was only making some LEDs blink I now feel the urge to explore this domain much further.
Day two, talks and Q&A.
The second day of the conference was filled with talks on several different topics. The day was kicked off with a presentation by Simon Brand about embedded DSLs in C++. One of his main examples was his own (very cool) library for building keyboard drivers. I am almost convinced now that I should also start building my own mechanical keyboard and use his library to program it! This talk really reinforced my belief that DSLs, both standalone and embedded, are a very powerful paradigm worthy of more attention.
The next talk I attended was by Denis Bakhvalov on 'Dealing with Performance Analysis in C/C++'. His approach was quite interesting and highlighted some aspects of performance analysis that I haven't yet explored myself. He showed techniques for inspecting the alignment of the code and how much this can affect the instruction cache. He has a very enlightening blog which you can find here.
Before the final lightning talk and the Q&A session, Odin Holmes took the stage and gave us his views on the future for C++ on bare metal platforms. It was interesting for me, as a new-to-embedded programmer, to learn about the complexities and issues that arise in these very constrained situations.
At the end of the day there was a very interesting Q&A session with some good feedback on the conference and some interesting discussions. The day was finished with a trip to the tallest building in Bochum where we had dinner and drinks. The atmosphere was great and there were some great discussions about all sorts of topics.
Day three, unofficial standards meeting (SG14) and brainstorm session
Though the conference was officially at an end, I was able to join a small group on Sunday for an unofficial SG14 meeting. The focus was on some of the problems of using C++ in the embedded software domain and making sure they would be addressed. Although I could not really contribute here, given my unfamiliarity with the field, it was very interesting to learn more about the issues and ongoing discussions. Needless to say, there are still some important steps to take.
The day was concluded with a very good lunch in a restaurant in the center of Bochum. I had a great time, learned a lot, got to discuss learning C++ with one of Odin's magical unicorns (@tabeatheunicorn) and got to meet many cool people. See you next year at emBO++ 2019!