Since 2015 there is a fixed event in the calendar of ESR Labs at the beginning of May - C++Now. This year, the company funded the trip to the conference for Marta, Christian, and me.

The three of us flew in to Los Angeles and had the pleasure to see several landmarks of the Southwestern US (including four National Parks) during our one week camping trip prior to the conference. Highlights have been our tent site on Jumbo Rocks Campground within Joshua Tree NP, the South Kaibab Trail hike into the Grand Canyon and the impressive photo tour through Lower Antelope Canyon.

C++Now (formerly known as BoostCon) is a very special event that differs a lot from other C++ conferences. It’s taking place in the scenic surrounding of Aspen (Colorado) with a constantly small amount of people, but - as several committee members and other language experts attend - at a very high density of expertise. The long breaks between the high-class talks offer good chances to continue discussions about recent topics. As most attendees and speakers are walking group wise into town for lunch and dinner it’s also a perfect place to do community networking.

The conference was themed this year by the term Compile-Time Magic. Not only a series of three keynotes handled this topic.

Keynotes

Daveed Vandevoorde: C++ Constants

Daveed is a well-known expert for template programming in C++ and author of “C++ Templates - The Complete Guide” which is still the benchmark in this area. He gave an overview how constants in C++ evolved from the “a-priori model” (static constants with fixed values in the code) in C++98/03 to an “a-posteriori model” since C++11 (constants are evaluated at compile-time). He also showed some related new language features from C++20 and forecasted some future directions for further developments like static reflections or allowing side effects like reading from a file at compile-time.

Hana Dusíková: Compile Time Regular Expressions with Deterministic Finite Automaton

Hana is a researcher at Avast Software and organizer of the Prague C++ meetup. She presented her revolutionary library CTRE in a mind-blowing way. It can be used to match regular expressions at compile time. She gave a lot insights to implementation details of the constexpr LL(1) parser, the finite automaton and her optimization algorithms which allow ultra-fast code execution.

David Sankel: C++ Reflections TS

David is a team lead at Bloomberg LP and co-author/project editor of Reflection TS in the C++ standardization committee. In his keynote he gave an overview to Reflections in C++ which allows the programmer to evaluate data types and values of structs/classes at compile time. David pointed out some promising examples of how this could be used to ease generic implementations of serialization, command line parsers or user interfaces.

Talks

Michael Caisse: Embedded Domain Specific Languages for Embedded Bare Metal Projects

Michael is the owner of Ciere Consulting and a fantastic speaker. As his company is often confronted with complex problems to be solved on tiny microcontrollers, he is exploring the usage of modern C++ language features in highly constrained embedded environments. In his talk he showed some examples how Embedded DSLs (such as [Boost].SML) can be used efficiently to add expressive abstractions to a project.

David Sankel: C++: Engineers Wanted, Programmers not so Much

This talk was a very special one as it was more about philosophy. David explained his definition to differentiate between programmers and software engineers and why he thinks that companies are more looking for the ladder. He gave some examples from other industries to show how people are acting there way more focussed on their business case and its growth. In software development, programmers tend to follow their ideologies and “die virtuously”, whereas software engineers take care of the business case and create appropriate solutions.

Odin Holmes: Hey C, This Is What Performance Looks like

Odin spent the first years of his career writing Assembler for small embedded devices until he finally got to know C++. During the last years, he has become an active contributor to the C++ community by co-organizing the embedded C++ conference EmBO++, holding a chair in Standards committee and developing the metaprogramming library Kvasir for embedded devices. During his talk he showed a way to speed up multiple write accesses to microcontroller peripheral registers, which often occur on system start-up, by using compile-time optimization routines to merge accesses to same registers. He emphasized that C++ can offer a human-friendly interface to hardware resources that is type-safe and even faster than direct access to common C-style register APIs.

Matthew Butler: Threat Hunting / If You Can’t Open It, You Don’t Own It

Matthew is a security expert who worked as a software engineer and system architect in network security, law enforcement and military. He gave these two talks about secure system architecture. The first one focussed on threat modelling of a speculative project to understand how attackers would analyse weaknesses in a system and how they will try to infiltrate it. The second talk outlined the “dark art of hardware hacking” based on the real-world super-hacks Operation ShadowHammer [Kaspersky], x86 God Mode [HITB GSEC 2018], Diginotar [Slate] and Supermicro [Bloomberg]. Both talks gave the audience several reasons to not trust any system and to add further security features like encryption on application layer to ensure data integrity and safety.

Conor Hoekstra: Algorithm Intuition

Conor is a software engineer working for Amazon. It’s hard to believe, but this talk at C++Now was his first one ever given at a conference and it turned out to be a real gem! Every developer is aware of the different container classes available and has learned about the pros and cons of each of them. But there is only a little knowledge about algorithms besides sorting. Conor gave an overview about the numeric library in STL, how its features have been widely extended in C++17 and how they can be used to apply common algorithms to data structures. For me this was the most educational and most engaging talk during the conference and it was well-deserved that Conor won almost all categories of this year’s attendees’ voting.

Andreas Weis: Exceptions Demystified

Andreas is a software architect at BMW and co-organizer of Munich C++ User Group. In his talk he gave some detailed insights about how exceptions in C++ are implemented and why this language feature often gets deactivated in several domains. He showed some possible ways of getting around existing drawbacks (dynamic memory allocation, runtime penalties, lack of determinism) and ended up in showing some details of the proposed language feature Deterministic Exceptions (P0709) by Herb Sutter.

Lightning Talk Sessions

Like the previous years, there have been two nights offering Lightning Talk sessions, where several speakers got the chance to talk for five minutes about their language proposal, side project or other related topics. Besides a lot of informative talks, there have been few not too serious ones to relax the atmosphere. Christian spontaneously prepared an own talk during the conference week and presented the ESR Labs implementation of multi-span to the audience.

Christian giving his Lightning Talk
Christian giving his Lightning Talk

Conclusion

Again, C++Now has been a blast! You get to know so many awesome people and you can learn a lot new stuff. Thanks to everyone who is involved in setting up this wonderful conference. Once again, we want to thank ESR Labs for letting us participate and for sponsoring our trip!