This year, Incredibuild went to the first-ever CPP North conference held in Toronto, Canada. Our very own Dev Advocate, Amir Kirsh, was a contributor at the event, and we asked him to give us a recap.
I’m back from Toronto after attending the first CppNorth Conference, and I have to say – it was a huge success!
I arrived in Toronto on July 17. The festivities started off with three great workshops over the weekend:
- “Concurrency with Modern C++” by Rainer Grimm (a known C++ trainer and the man behind Modern C++ web site),
- “Game Development with Low Latency and High Excellence” by Stephanie Brenham and Guy Davidson (both are from the Gaming Industry, Ubisoft Toronto and Creative Assembly respectively)
- “Generic Programming: from Strange to Normal” by Patrice Roy (who is a Professor at Sherbrooke University and a known C++ speaker with vast practical experience).
It was great to take a peek at the workshops and see the enthusiasm of both the presenters and attendees. But after getting arranged I used the time I had till the evening reception for a short walk in lovely Toronto.
(pictures by Amir Kirsh)
The conference started in full on Sunday evening with a reception and a board game night. The reception was a great opportunity to catch up with people from the C++ community.
Monday July 18th started with a great keynote by Kate Gregory, titled “Am I a good Programmer”. This is one of those talks that inspire you and give you ideas – for yourself and your team – on how to be a good programmer and how to keep doing good, with great examples, morals and takeouts.
After the keynote we had three tracks of talks and as usual it was quite hard to pick. I tried to vary between talks on subjects I know something and want to learn more and those on subjects that are really far away from me – to be exposed to new domains and ideas. And of course I’m consoled with the fact that all sessions that I missed are recorded, though you cannot compare being in the room to seeing the recorded session (which is one of the reasons for physically attending in person).
The talk I picked was “Programming for Warm Days: Avoiding Dangerous Conversions” by Patrice Roy, who did a live coding on safe types. This is a very important topic that I also discuss in this post and it was nice to see how others present it. Plus, live coding is always fun.
For the next talk right after lunch I didn’t have much of a choice. Though there were still three parallel sessions I had to attend a specific talk, which was mine, on “The fine details behind C++ containers and algorithms”. The talk focused on the considerations to be made when selecting or using C++ containers and algorithms. I was happy to have a decent audience, as my talk was competing with two other great talks: “The Power of Compile-Time Resources” by Jason Turner, and “Building Abstractions at the Hardware-software Boundary” by Andrew Bitar and Aidan Wood. One of the nice things in the conference was that the audience was quite diverse, with C++ experience ranging from beginners to experts. My talk was aimed for beginners and intermediate-level developers, and I was happy to have this audience, together with a few more advanced programmers (such as David Sankel, who contributed a few very good comments).
The next session for me was the “Cute C++ Tricks (and what you can learn from them)” by Daisy Hollman. Daisy is a great speaker. You have to focus hard to follow the high level C++ she presents, but it is always a pleasure following her. The trick that she focused on in her talk was related to another session I was about to give on Tuesday, on structure binding.
The next talk I attended was Titus Winters’ on “Software Engineering Languages”. Titus analyzed the requirements that we have from Software Languages and the difference between programming and engineering. He discussed the goals that we have from different pieces of code, including the expected lifetime (there are programs which are written for a one time execution and others that should survive for decades). Titus is very methodical, building his arguments very persuasively. For me it was like a keynote talk, carrying meaningful insights and in a way preparing the ground for the next talks.
In the evening we had the speakers’ dinner, having the opportunity for speakers and attendees to converse over a nice dinner. We switched places during the event to be able to meet more people. I had very interesting conversations with Jason Turner and Stephanie Brenham, and not only on C++ (but also on the Java desert that we got).
(Source: https://twitter.com/lefticus/status/1549171213431410688 )
To make sure we get the most out of the event, at 8:00 PM we continued with “Movie Night” organized by Walter Brown. It included a few very interesting videos with great transitions. For example, do you know how is it that the personal computer (PC) is not protected by a patent?
The first day of the conference ended at about 10:30 PM and we were excused to our rooms to get some sleep.
Tuesday July 19th started with a keynote by Caruth Chandler on Carbon – a new language originating from Google employees and others meant to be a potential successor of C++. This was in fact the first public announcement about Carbon and it made a lot of waves in the SW development community (#2 in Hacker News at the time of the talk and #6 at the end of the day).
As if we didn’t need to digest these massive news, the next talk did not wait too long, with Tony Van Eerd speaking on “Value Oriented Programming”. As always Tony is very figurative and a great speaker. With Tony on the stage you feel you are in the best show in town.
The next talk that I attended, right after lunch, was Guy Davidson’s on “Abstraction: the true superpower of C++”. It was a very dense talk with a lot of information and ideas. Again a talk that could easily fit as a keynote.
For the next two slots I was giving my own two talks. The first was: “Are you structure bindable? A tour via concepts, SFINAE and Herb Sutter’s pattern matching”. The name says it all. The second was on “What Makes Good C++ Programmers: a Continuous Search for C++ Teaching Recipes”. The second talk that I gave was competing with two parallel talks by Jason Turner (“The Best Parts of C++”) and Bryce Adelstein Lelbach (“C++ Standard Parallelism”). Given such a competition I was a bit worried about attendance, but was happy to have a nice audience, including Dave Abrhams, who shared very meaningful comments on teaching value semantics and more.
The day was not over yet, with a nice Pizza evening followed by a lightning talks night hosted by Tony Van Eerd. I like lightning talks very much. You get so many ideas packed into an hour or so. The evening started with Dave Abrahams presenting the Val language and discussing value semantics. The importance of value semantics for correctness and efficiency is becoming more agreed upon. It should affect the way we design our systems and write code. Sharing is not caring, not anymore. The problem with sharing is that it increases the contingency in the system, thus limiting the amount of potential parallelism (be it multithreading or vectorization).
Another unforgettable lightning (talk?) was a remarkable song by Guy Davidson, going back to his days as a pirate.
I also had my own lightning talk, titled “Filling the Bucket”, presenting an exam question on… well – filling a bucket, which the audience got as a pop quiz.
The second day of the conference ended at about 10:00 PM.
Wednesday July 20th. We are on the third and last day of the conference. It was so great so far, what else could we expect?
The day started with a great keynote by Tara Walker from Microsoft on Robotics and the ROS operating system. It was very technical and into the details. I like such talks that give you not only the high level of things but also get into the bits and bytes.
The next talk I attended was “Programming with kids” by Fatemeh Jafargholi. A great talk on environments, methods and practical advice for teaching kids how to program. Being involved in similar initiatives, this topic is close to my heart.
The next session, by Olivier Giroux, was on the C++ memory model. This is one of those complicated corners of C++ which very few actually master. The talk made it clear why this is a complicated issue!
Then came the closing keynote by Sean Parent which had the pessimistic title “The Tragedy of C++, Acts One & Two”. The talk relates very well to many of the previous talks and presents the problems – or challenges – C++ is facing today as a mature language. The talk didn’t present any specific solution, but was good food for thought about future directions of C++ and the challenges of evolving without making things more complicated.
Yes, the conference ended. With a feeling that we need more of it.
One of the great experiences in attending a conference is meeting the community and speaking with people about C++ but not only. I really enjoyed talks with Jason Turner, Walter Brown, Guy Davidson, Chris Ryan, Stephanie Brenham and many others. I had the opportunity to talk about Carbon with Chandler Carruth after his announcement. And I got very good comments and insights from Dave Abrahams, David Sankel and others, during my talks. Meeting Kate Gregory, Timur Doumler and Daisy Hollman is always a pleasure. Now, you may read this and think that this is relevant only for “the inner circles” of the C++ community. Well there are no inner circles in a conference, everybody feels welcomed and can be part of the gang! Just join a table and start by listening to the discussion. It is very easy to become part of this community, just join along.