The first time I heard about Herb Sutter was when he took over as editor of the now defunct C++ Report magazine. IIRC, the introduction by the then editor mentioned that Herb could remember over 100 digits of Pi. We’ll have to ask him about it one of these days.
One of the undeniable things over the years that can be said about C++ is that its syntax is complex. Heck, you can make a living just highlighting its complexity and how to get around it. Once you go past the proverbial Hello world program, things can get difficult very quickly. Add to that that some mainstream, table-stakes support is unavailable in Standard C++ (I’ll probably retire by the time the Networking TS is standardized).
But seriously, now with “skin in the game” (a daughter that is taking C++ for next year), I’ve pondered whether to recommend learning C++ over other systems programming languages (e.g., Go).
In essence, I believe this is the direction that C++ should take.
The syntax will take a little time to get used to, but it’s manageable–we’re creatures of habit and having all operators left-to-write (or west-to-east) will require mental retraining.
Couldn’t help but think that I’ve seen motifs of the syntax in other programming languages present in the cpp2 syntax (Python, Erlang). But then, those languages most likely used syntax available in other languages, too.
So, if you have a couple of hours to spare on a lazy Sunday afternoon, as I did, check out Herb’s talk. You’ll be inspired.
Paraphrasing Dr. Seuss:
The wonderful things C++ can do. It can use cpp syntax, or cpp2.
This is the first CppCon hybrid (in person and virtual) conference, and in my opinion, it was a success in terms of content and organization, particularly from the virtual side. Sure, there were the occasional quirks, or the first day emergencies if one didn’t read the “instruction manual” (ahem) beforehand. But ’nuff said.
I’m writing this trip report while the experience is fresh, and before the glitter fades, drinking a hot cup of coffee while everybody else sleeps.
The Words of the Conference
I’ve joked in the past that every conference seems to coin a term that other presenters and attendees start using. Last year’s it was incantation (if C++ feels like magic to you, then you know why).
This year the words of the conference were: respect, inclusion and harassment-free. It is sad that at 21% into the 21st century we still have to be talking about this, but thanks to the organizers for making this a conference where everybody is treated respectfully.
There were two formats: in person, which you had to shell some green (a.k.a, money) to land a seat in the conference and a bed in the Gaylord Rockies hotel or a nearby hotel. This is no different than in 2019, albeit the attendance numbers I ignore (I remember Jon Kalb mentioning the number of attendees, but that detail escapes my mind. A constraint for attendees this year was being able to fly to the U.S. due to COVID, even while vaccinated.
I will concentrate on my experience using the virtual format.
The virtual format, which is the one I used, had an excellent body of volunteers and presenters that were answering every question I had. The conference used a Discord server with plenty of channels, and again, people were very, very helpful. Several of the volunteers were from Europe, which brings me to a kudos moment: thanks to the organizers for accommodating attendees from all over the world; even though the schedule was early (at least for me: I gave a lightning talk and had to get up at 4 AM PDT to be ready for 5 AM). It shows the commitment to the C++ community and I for one appreciate it.
There were three virtual facilities to be aware of: Discord for social media, digital medium (CppCon.digital-medium.co.uk) and Zoom for the presentations online, and Gather Town, a virtualization of the facilities that required too much fingering, in my opinion.
Discord, as mentioned above, was key to follow up on several topics. It also had specialized channels, but I mostly used the ones referring to the online experience. Again, the body of volunteers was excellent. It was funny to see some of the statuses as “Sleepy” for those of us on the West coast in the U.S.
The presentations were available from a nifty website from digital medium (CppCon.digital-medium.co.uk) that updated the upcoming sessions and one could just click the link and join using Zoom, which in my opinion was a nice choice. It a was very flexible and familiar medium–who doesn’t use Zoom, and one could chat with other attendees and post questions. Furthermore, it allowed presenters to pre-record their presentations and answer questions as the session was in progress. Two sessions that come to mind are Sy’s and Bryce’s.
Now we come to Gather Town. This is the part that I did not enjoy much. A few of the online sessions had to be accessed through Gather Town. Now, you could “practice” beforehand and move around using, literally, your arrow keys. I was late to a couple of sessions because on the first attempts either the session posted did not have a Gather Town shortcut or I missed it. Regardless, to participate over a virtual microphone it was confusing–a session by Nico Josuttis comes to mind, where it was painful to have to wait until a participant could “walk to the mike” and ask the question, receiving instructions online. Nico was patient, though ;-).
I guess that as a participant I was expecting last year’s virtual format, but alas, it wasn’t so. To the organizers credit, the links appeared in Discord and one could just click on them and then join a session in Gather Town by “picking a seat” and clicking X. Yep, X marks the spot.
As feedback to the organizers, this is one of those cases where a physical metaphor does not translate onto a virtual one.
Well, there were too many (you can find them in the expanded schedule, right hand side here). My favorite was the Software Design track and gravitated towards those sessions, as well as the Async/Concurrency and Parallelism and Algorithms/Functional tracks.
My Favorite Keynotes
Keynotes are the anchors of the conference, and as one would expect, they rise above the common talks and concentrate on the timeless and not the timely. I will be brief here and say that my favorite keynotes were Value in a Procedural World, by Lisa Lippincott, and Extending andSimplifying C++, by Herb Sutter. I’ll be writing more about those keynotes in future posts.
My Favorite Session
I have to say it. Eric Niebler‘s Working With Asynchrony’s Generically: A Tour of C++ Executors (Parts 1 and 2) , was a delight to attend. Besides the expertise, the presentation was well done, with animation, coloring, and examples. Definitely worth your while once the sessions start to appear in YouTube.
My Other Favorite Sessions
Jason Turner – Your New Mental Model of constexpr. This is the first time I attend one of Jason’s sessions, and boy, it was an attention turner (punt intended). The session is a tour around constexpr from its beginnings to what it is today, and Jason’s experience as well as an accomplished trainer, made the session very enjoyable. And sure, I reminesced that I was playing Space Invaders while waiting at the bus station in my college years. Oh, did I mention that a Commodore 64 was my first computer?
Walter Brown – Correctly Calculating Min, Max and More: What Can Go Wrong? Well, apparently, a lot! Joke aside, this is a talk that I can explain to my daughter (at least half of it) even though she programs in Java and I like Walter’s style. By the way, I went back to es.cppreference.com and documented std::less<void> in Spanish.
Klaus Iglberger – Type Erasure: Breaking Dependencies – A Design Analysis. This is a prescriptive talk that everybody should attend. I had seen other talks and read material online, but this one brings it home. The analogy of the Strategy design pattern went a little too far, in my opinion (Strategy encapsulates an algorithm), so not everything is a strategy (policies are not strategies, so policy-based design wouldn’t qualify as a strategy, again, in my opinion), but the talk is very solid.
Andrew Lumsdaine and Phil Ratzloff – Generic Graph Libraries in C++20. This is a very promising talk. I keep a copy of The Boost Graph Library in my bookshelf and hearing Andrew, one of the authors, express that C++20 is ripe for standardizing graphs in C++ was music to my ears. This is one of the projects that I’ll probably join if there’s space in it.
Bryce Lelbach – C++ Standard Parallelism – Nice presentation, easy flow, prerecorded, which gave Bryce the time to answer questions on the fly. Between becoming a New Yorker, baking, and leading the LEWG, I don’t know how he finds time for anything else, but check this out. And if you can say mdspan…
Lightning talks are supposed to be light. and so they were. That’s C++ for the rest of us, that love it and live it, and some loath it. The talks were nicely coordinated online and in person. In my particular case, kudos to Phil Nash for herding us, a bunch of C++ enthusiasts and practitioners onto the void. Nah. Check them out once they’re online. You’ll have fun. I gave one entitled C++ en tu idioma, where I share my experience in slowly, very slowly documenting es.cppreference.com, the brother/sister site of cppreference.com, but in Spanish. If you have some time, check the talk and the site, and participate!
I attend one C++ conference a year, and this one is it. It is the time for me to recharge, to absorb, and use it as a directive on what to learn and expect in the coming years The virtual format worked for me, and I hope that the organizers keep it in coming years. The “human touch” is needed too, and I’m glad that there was an in-person option too. For personal reasons I had to cancel my trip to Aurora, and I appreciate that the organizers provided a hefty window for refunds, and an affordable price for online attendance.
Where will C++ be in C++23, C++26, C++29? (heck, hopefully I’m retired by the time C++29 hits the proverbial stands). Well, if this conference is an indication, C++ will be used in even more spaces than it is today, richer, hopefully easier to use, and as I’ve said before, what I love about the language is its expressiveness, its flexibility, and of course, its community.
Finally the book is here! I’m biased, extremely biased about this book, and for good reason. We met Renda and the Madrigals when our daughters went to the same kinder garden, elementary and middle school. We’ve vacationed together and have spent time together as families and still go out together every couple of months.
So you can say we know them well.
When we found out that Renda was writing this book we couldn’t help but be happy. Writing a book is such an endeavor, and a topic about mindfulness and families is a rare thing to find, and this book is unique in that way.
We have been happily part of Renda’s mindfulness sessions as a family and can attest to their effectiveness. One of the first things that you notice is that you do practice, well, as a family! That awareness in itself, that you’re doing something you like with the someones you love makes all the difference. Besides, Renda has a unique way of creating an ambiance, calming you down, focusing you in the moment, in the now, in the present.
So, if you’re into mindfulness and want to share this experience with the rest of your family, go ahead and get a copy. Got mine. On Kindle.
With a large percentage of vaccinated people in the US, and the number of COVID-19 cases dropping dramatically in our county in California, it seems inevitable that some time in the near future we’ll have to return to a physical office, if only partially. For those of us with kids at home, there’s also a large possibility that they’ll have to return physically to school.
Last year I took the plunge and got a one-year subscription to Zoom, and our family meetings and community service have benefited from it. We schedule at least three meetings during the week, but it seems all this will be coming to an end. Zoom has proven resilient and useful–I have to provide an attendance list for about 25 kids in a class, and the reports are great. But being candid, I won’t miss it a bit once we’re able to meet people in person. So nope, I won’t renew.
Transitioning (as a family and not as an individual) will be stressful. There is some anxiety kicking in because of the unknown.
Regardless, it is concerning that other countries are still in the thick of it, and my thoughts go for those friends of ours with family in India. We’ve had the misfortune of losing three uncles and two aunts, in the span of three months, one just last week, albeit only one of them to COVID. This is on my side of the family.
If you’re in the US, how are you coping with the transition?
This is my Lightning Talk for CPPCON 2020. I’m super grateful to Chris Ryan for posting it on LinkedIn.
Quality C++ documentation is abundant…as long as it is in English. If you’re a Spanish speaker your options are limited. This talk is about my experience in bringing es.cppreference.com, the Spanish companion site to cppreference.com, up to date to enable Spanish-speaking C++ lovers and enthusiasts a quality experience when learning C++…en español.
Many years ago I read a follow-up book to the seminal Design Patterns book by The GoF, called Pattern Hatching: Design Patterns Applied by John Vlissides. He kept a homonymous monthly column in C++ Report, a magazine now defunct. One of the things that called my attention is that he mentioned that keeping on with design patterns was a labor of love.
Before his passing, he was kind enough to review an article that I intended to publish on Pluggable Factory and gave me very valuable feedback, as well as feedback on using the nifty counter technique–originally in the C++ ARM and then in John Lakos‘ book, Large Scale C++ (first edition)–to implement a variation of Singleton.
To me, John was an inspiring figure to give to the community without expecting anything in return, and hopefully the effort of translating C++ documentation to Spanish will enable others to learn and love this programming language that has given me so much.
Three-way comparison (aka “the spaceship operator <=>) is a cool new feature in C++20. While the usage is simple, the documentation is not :-). Strong, weak, partial ordering…concepts, more concepts, type traits, and so on.
Documentation a long time in the making, but I finally had a good couple of days working on it. There are some examples missing–ditto in the English version–but nonetheless much needed documentation. You can find it here.
La comparación de tres vías (también conocida como “el operador nave espacial”, <=> ). Mientras que el uso es simple, la documentación no. Ordenamiento fuerte, débil, parcial…conceptos, más conceptos, rasgos de tipo y así sucesivamente.
La documentación tomó bastante tiempo, pero finalmente tuve un buen par de días para trabajar en ella. Hay algunos ejemplos que faltan–lo mismo en la versión en inglés–pero no obstante, se necesita mucho la documentación. La puedes encontrar aquí.