Blog: July 2016

DConf 2016 Report

| Christian

This May the yearly DConf was held in Berlin. The DConf is one of the meeting platforms of the community around the D language. Quoted from the homepage:

The D Programming Language

D is a systems programming language with C-like syntax and static typing. It combines efficiency, control and modeling power with safety and programmer productivity.

For me dlang is a language in which I can program almost with the same comfort as in ruby or java with additional very strong compile time capabilities and a sane approach to concurrency. It even suggests to write small scripts in it and run them by the means of rdmd. With the latest release of DUB its package manager this will be even possible when requiring dependencies.

The last year saw a lot of changes in dlang so that it is now reigned by the D Language Foundation with Walter Bright, Tudor Andrei Cristian Alexandrescu and Ali Çehreli as officers. Several implementations of the compiler are available, including the reference compiler written by Walter, as well as compiler backed by gcc and ldc.
dconf_panel

The conference

After Sociomantic volunteered to co-host this years conference and came up with a fantastic venue as well as an incredible organization 150 happy dlang coders showed up. Between hobbyists, many of the big names of the dlang community showed up and we’re available for chats and talks about dlang, its application and new ideas.
dconf_pano

The three days of the conference we’re packed with a tight time schedule that was enforced by DConf’s own MC, featuring around 18 talks, some lightning talks and two panel discussions around the dlang ecosystem.

All talks are available at YouTube and UStream, I just want to highlight some of my favorite sessions:

  1. Make sure not to miss the keynote given by Andrei Alexandrescu himself. Although the presentation starts with non technical (but very important) topics of the first 5 minutes and how to contribute, it gets more technical when Andrei dives into getting rid of the garbage collector and annotations for Big O Notation.
  2. Equally enjoyable is Don Clugston’s talk about floating point numbers. This is even applicable for languages != dlang.
  3. Amaury Sechet shows how to work efficiently with your memory. One especially tricky thing are tagged pointers. I was glad to learn, that our estl makes also good use of this, although I am pretty sure, that the generic API provided by dlang is nicer.

Of big importance to the dlang community are the presentations that showed how dlang is used in production. Although those can only go so far from a technical perspective those show, that dlang is production ready and can be used to build products.

Considering all, this was one of the best conferences I ever went to and I hope to come back next year and do more dlang in the meantime. I think you can see the spirit of dlang best by looking at the enthusiasm of the speakers in the lightning talks. They would go on and on, because everyone wanted to show off some cool dlang stuff.

What to do better next time? From an organizational point of view it was a flawless event so I do not have any improvements as feedback to the organizers. But on a personal level I really must plan in more time at the end to not miss the last talks and the group shot and I also have to bring my books to get them signed by the authors. Hopefully they will be again around next year!

CppNow 2016 Trip Report

| Alexander Schlenk

As you may have seen on our blog, we like to go to tech conferences all over the world. The C++-Now is especially loved. Last year two of my colleagues were at this event – this year it was my turn.

The conference

C++Now is a conference with its own particular charm and atmosphere and is now in its tenth year. Located at a high altitude in Aspen, Colorado it is surrounded by the beautiful landscape of the Rocky Mountains. Most people tend to connect Aspen with skiing or high society, but every year after the skiing season ends a group of C++ enthusiasts gather there for a whole week to discuss the latest developments in the C++ world.

Starting originally as BoostCon, the organizers later opened the conference up to a wider range of topics. But since the beginning it has been limited to 150 attendees giving it its special character and making it easy to get to know the other participants. If you look at other events like CPPcon which typically have about 700 attendees, you won’t probably get that kind of familiar atmosphere.

Experience

My trip started with a long but pleasant flight from Munich to Denver and ended with an exhausting 4-hour drive to Aspen through darkness and rain. But after a good night’s sleep I was already meeting fellow participants in the hotel lobby for breakfast. One big advantage of a small town like Aspen. The mix of attendees was quite interesting with almost every country represented. I personally made contact with some guys from Canada, Sweden, Romania and of course the US. Even more astonishing was the variety of business sectors that people came from. Some were from the embedded domain (like me). But there were also guys working in gaming, CAD calculations and even one developer from a content delivery network (CDN) that uses C++ for its webservers.

The social highlight of the week was the BBQ dinner at the Aspen Center of Physics. Sitting outside in the sun beer in hand and enjoying a delicious American self-made burger was just the right setting to chat to a lot of different people. My personal favorites were the discussions with the firmware development lead at Apple and the LLVM Compiler lead at Google.

Interesting talks and projects

Library in a week Library in a week is a nice idea born some years ago at this conference. Imagine a lot of C++ enthusiasts gathering every morning before the actual conference and working together on a certain project. This year’s project was about kickstarting a new way of documenting boost in the style of cppreference.com. We decided to try to get the current docu into some kind of wiki to offer a nice place for editing content. Unfortunately this turned out to be much more difficult than we thought! Especially since there are lot of different documentation styles available in boost. The work was far from complete at the end of the week but people are still working on it after the conference. So let’s hope for the best.

Boost.Hana Louie Donnie attended the conference last year when he presented his work on the metaprogramming library Boost.Hana. He has continued his work on the library and this year showed how some day-to-day coding problems could be solved with the help of metaprogramming.

Variants and Tupels Two reoccurring topics were Variants, which will be partially introduced into the C++17 standard as part of the standard library, and Tupels which are the base for many metaprogramming patterns. Variants are basically the safe version of a union. You can store different types of data inside the same variable, but with the advantages of C++ type-safety. Variants are being heavily discussed in the standard meetings at the moment. The current state is that there will be a library-based variant in C++17 and probably a language-based version in C++20. Tupels have been part of the standard since C++11. They are the more universal version of std::pair. Tupels become really interesting when you start combining them with metaprogramming. You can basically pass any pair of types around in your code and evaluate them during compile-time.

Dependency Injection for C++ Dependency Injection (or DI) is probably something you’re familiar with from modern, mostly managed programming languages which are based on some kind of virtual machine (like Java or C#). DI is a clever technique where the order dependency passing is reversed. You simply specify which class depends on which other class and the framework takes care of the initialization and its order. The problem is, DI normally makes heavy usage of reflection which is not (yet) available in C++. However, a library was presented which makes use of metaprogramming to generate a compile-time only variant of DI which outperforms common implementation in different languages.

CopperSpice A small team of two people calling itself CopperSpice was pretty active at the conference. They started with a fork of the old QT4 (the current version is Qt5.7) and tried to create a fully CPP++11-compatible version of it. Along the way they removed the dependency on the MOC compiler and reworked the whole signal framework. But they didn’t stop at QT. During the documentation phase they recognized the need for a better C++ documentation framework – so they forked doxygen and created DoxyPress with better C++ language parsing. They also had a challenging talk with the title “Multithreading is the answer – what was the question?”.

Cpp++14 on ARM / Ciere Consulting creating MQTT client Of personal interest to me was a talk from Ciere Consulting about implementing an MQTT client based on the new design patterns of C++14. As an embedded developer it was particularly interesting that the whole implementation was running on an ARM Cortex-M0 core with very limited resources. They were even using standard STL containers with dynamic memory allocations. The implementation should appear on their website soon.

Further Information

If you like to have a look on some of the good presentations, you can find the collection of the whole week on Github.