Jon Kalb & Phil Nash
Each fortnight, or thereabouts, we chat with guests from the C++ community about what they're doing, what interests them, and what's going on in the world of C++
This episode is slightly different to the normal. Rather than being a pure cpp.chat session, it's a recording of an interview, conducted by KDAB, of a panel of C++ experts, including our own Jon Kalb - but also past cpp.chat guests Ivan Čukić and Jens Weller, as well as Matthias Kalle Dalheimer. The interview is around the future of C++, but also takes a look at its past and present.
39 min 23 sec
In this episode we welcome back Tony and Klaus to talk about the [SOLID](https://en.wikipedia.org/wiki/SOLID) Principles, and how they relate (or not), to C++. Tony is about to give a keynote at C++ Now about his take on the SOLID Principles. Klaus has been giving a talk on applying SOLID to C++ and even Phil has recently given a talk on a similar topic. Perhaps somebody should have mentioned this to Tony before! Along the way we get plenty of SOLID advice, discover what the single responsibility is that Tony's objects have, what COLID is, who is going to argue against Liskov, and who is just there for the jokes. The answer, of course, is: it depends.
1 hr 11 min
This week we get back on track and chat with Christopher Di Bella from Google about working on the Chrome OS toolchain - including his newly finished concepts implementation. We talk a bit about the practicalities of bringing C++ 20 features to compilers, interoperating GCC and Clang and how to deal, portably, with std libraries that can’t be implemented without compiler support.
1 hr 4 min
This week we have a special panel made up of members of the C++ community, joined by members of the Rust community. We have a round table discussion of how the two languages relate, differ - and how entwined their fates may be. We also learn why Rust doesn't have random numbers, but why it's lucky to have Burnt Sushi.
1 hr 9 min
This week we chat with Isabella (Izzy) Muerte about modules, build systems and more. We talk about xyr new job (which, at the time of recording, was with Netlify), and how that still involves working on build systems - but particularly CMake, where xe has found an intriguing special use for emoji! We segue into a discussion about modules, which Izzy was definitely down on a couple of years ago, and what xe thinks of them now. To avoid spoilers don’t read the title!
1 hr 9 min
This week we chat with Tony Van Eerd about what comes after Post Modern C++, what the single most important principle for good code is, and what Dr. Seuss and Shakespeare have to do with all this. The off-by-one jokes are regular, or at least semi-regular, but what proposals has Tony killed? And how can opening your mind to unexpected ways of thinking lead you to better code?
1 hr 10 min
This week we chat with a Conor Hoekstra, about dreaming in algorithms, being a programming language addict and writing beautiful code. We look at what Conor is jealous of in other languages, why his competitive coding entry came dead last, and why he really likes sugar and dopamine. And is it really true that no-one is listening to Sean Parent? Note that this episode was recorded over four months before editing, so the news items are a bit stale.
1 hr 5 min
This week we chat with a vector-of-bool (a.k.a. Colby Pike). We talk about pseudonyms, modules, build systems and his standard layout proposal, Pitchfork. At the last minute we branch into TDD and what makes good design. But what prompts Michael Caisse, in the chat, to respond, 'because we are not monsters', and why does that cat say 'test first'?
1 hr 4 min
This week we chat with a Yuri Minaev, of PVS Studio, about static analysis - and why you shouldn't be skipping on this essential part of software development. Why is using a static analysis tool better than peer review (the clue is in the title)? Should you do both? What is the most common bug? And what does happen if you write to address zero? We also discuss the billion dollar mistake and the perils of copy & paste (and how you can mitigate them). All in all, a step towards safer coding.
1 hr 6 min
This week we chat with a panel of C++ trainers from around the world (but mostly from Germany, for some reason) - Nicolai Josuttis, Jason Turner, Rainer Grimm, Klaus Iglberger and Mateusz Pusz. We talk about how bringing in a good trainer will keep your costs down, whether online training works or not, and why C++ is different to most other languages when it comes to training. One of our guests reveals that he has had, and has recovered from, COVID-19 - but who?
1 hr 7 min
This week we chat with Bryce Adelstein Lelbach about how the ISO C++ WG21 committee is evolving - and his roles within it (and beyond) are evolving, too. We also look at the cross-over and interaction with the C standard, and even other languages. Is C really the Latin of programming languages? What is the relationship between the languages and the committees at this point? And why did so many committee members agree to a plan that contains items they may not be interested in? And what happened to the Varna meeting, anyway?
1 hr 8 min
This week we chat with five members of the SG16 Unicode Study Group, Zach Laine, Tom Honermann, Steve Downey, Peter Brett and Corentin Jabot. We talk about their efforts to get all things Unicode into the C++ standard in a tour that takes us from 5000 years ago, through the 80s and 90s up to the 2020s! We look at every known language, including a few dead ones - and some that are purely fictional. Do you know the difference between a code unit and code point? A glyph and a grapheme cluster? String a Text? And what's wrong with Locales anyway? This show sorts it all out.
59 min 4 sec
This week we chat with James Berrow about colo(u)r, and how we're doing it all wrong (and not just the spelling). We look at why colour management is complicated, how RGB doesn't exist, and how everybody (well, almost everybody) gets it all wrong. We also look at the graphics proposal, and James' critique of it, as well as how he is working with the authors on some improvements.
1 hr 1 min
This week we chat with JeanHeyd Meneide (A.K.A. ThePhD) about coming full circle on std::embed, as well as whether optional references should rebind or assign-through. Packed with edge-of-the-seat stories of interesting proposals adventures through the standardisation process, as well as a decent amount of ranting.
58 min 40 sec
This week we chat with Ansel Sermersheim and Barbara Geller about Copperspice, Doxypress, csLibGuarded and kitchen utensils. We find out that Barbara and Ansel are not just library people but are actually programmers - and programmers that know how to build abstractions. We chat about why they started CopperSpice, how it got it's name, and what else they've been working on.
1 hr 4 min
This week we chat with Greg Law about debugging and going back in time! How do things change when we can wait for something to go wrong, then go back to any point in time and examine the program state, like The Matrix's 'Bullet Time'? How is this even possible, and what challenges need to be overcome? We also answer that age old question: what's the first thing people ask for when you say you can give them a time machine?
1 hr 1 min
This week we chat with Vittorio Romeo about the pros and cons of backwards compatibility in C++, and his proposal to get the best of both worlds: Epochs. As well as language compatibility, we also discuss _ABI_ compatibility - why breaking these things is such a problem, but how _not_ breaking them is increasingly becoming a problem. We also, finally, get an answer to the age of question of, 'how many programmers does it take to change a lightbulb?'
57 min 50 sec
This week we chat with Clare Macrae about Approval Testing, testing in general, the challenges (and some solutions to) testing legacy code - as well as highly visual environments like Qt GUIs or image processing apps. Working with an existing codebase that doesn't have tests can be scary and time consuming. But getting it under test is challenging, too. Clare explains how Approval Testing helps here, and how it all works. We also talk about how she has quickly become a sought after speaker, with some tips for first time speakers, and some more general ideas from Agile and Continuous Delivery circles.
58 min 56 sec
This week, in a cpp.chat exclusive, we chat with Sean Baxter about Circle - the C++ compiler that he wrote. That’s a C++ compiler. That he wrote. Oh, and it does meta-programming in a way that we’re only dreaming of part of for C++23 or 26! So what can it do, and what is it useful for? Why is Jon struggling to wrap his head around what Sean has achieved and can it really turn Twitter into code? If you want to follow along screen shared segment, I've tried to embed screenshots in the podcast mp3 - or you can go to [this point in the YouTube recording](https://youtu.be/Tcaoz56uSKs?t=1044). And finally, contrary to what Phil says during the show, there were not 130 lightning talks at CppCon. It was more like 70 - and we're not including a link to the ACCU CfP as it has now closed).
59 min 33 sec
In our second live CppCon 2019 episode we chat with Sean Parent about relationships, working with Alexander Stepanov, over-object-orientizing things and, yes, even rotate. Sean tells us stories from his years at Adobe, including how he first came to work with Stepanov (the father of the STL) - a well as some spectacularly bad responses to interview problems.
45 min 43 sec
The first of our two, live, CppCon 2019 episodes - this time we sit with Andrei Alexandrescu and Herb Sutter to introspect about introspection and take exception to exceptions. We also talk about the 'Engage, Entertain, Educate: Technical Speaking that Works' class that Andrei was involved with, again, at CppCon 2019. But Andrei describes himself as a 'free radical' and 'too much plutonium' and claims he needs Herb as 'a bit of graphite' to keep him in check. Listen to find out what the debate is about!
40 min 37 sec
This week we chat with David Sankel and Michael Park about their Pattern Matching proposal, as well as a language level variant. We look at how some judicious use of syntactic sugar can improve even the ugliest part of the sausage. Pattern Matching (as well as the language version of Variant) are progressing well through the committee - potentially on track for C++23. We discuss how, when these land, they are going to impact every single developer - allowing us to inspect and handle values in a far more declarative way, We also talk a bit about CppCon, which was upcoming as we recorded, but already in the past as we release this episode.
52 min 40 sec
This week we chat with Patricia Aas about secure coding practices, using computers to count votes in elections and the two hardest problems in software development. Patricia and Phil have both been at NDC TechTown all week where Patricia gave a keynote, a two-day class, a talk and hosted a meet-up - but still found time to chat with us. We discuss the relationship between secure code and just plain good code (spoiler: they're essentially the same), and how much rigour went into computerising the Norwegian election vote counting system (spoiler: none). We also discuss whether it is possible to fully computerise national voting systems reliably (spoiler: you'll just have to listen).
1 hr 3 min
This week we're joined by Victor Zverovich as we chat about his string formatting library - which has just been adopted into C++20 - as well as the possibility of a corresponding input library, various smaller C++17 features, and whether it's possible to travel continuously from C++ event to C++ event. We also announce the dates for C++ on Sea 2020, Phil's vision for CppCon's Lightning Talks, as he takes them over, whether we should be removing more from the standard, and look forward to seeing The Last Macro.
57 min 12 sec
This week we chat with Guy Davidson about linear algebra coming to C++, other mathsy stuff, audio, games dev and C++ training evenings. We barely even mention 2D graphics once! Did you know that Guy has written four linear algebra libraries in C++ since 1990? He's in a good position to be involved with the standardisation effort. But how do you bring something that Fortran excels at to modern standard C++ without it just being the C++ification of Fortran? Listen to find out.
1 hr 3 min
This week we chat with Juan Pedro Bolívar Puente (a.k.a. JuanPe) about immutable data structures, value types and more - and definitely not functional programming! How can data types be valuable if you can't change them? How can copying huge amounts of data be cheap? How can we go beyond Object-Oriented Programming - and get concurrency almost for free - all without making moral judgements about our code? The answers to all this and more drop out of our chat with Juan Pedro.
1 hr 2 min
This week we chat with Pablo Santos, founder and chief engineer of Plastic SCM, and SemanticMerge. Pablo talks to us about how the 'full stack' version control system he created at Plastic SCM differentiates itself in the age of GitHub, how times have moved on for VCS systems (largely driven by GitHub), and how it might even be being used outside of software projects now. We also chat about SemanticMerge, which can automatically - and accurately - merge far more cases than the traditional text-only merge tools, and what this means for coders.
55 min 6 sec
This week we chat with Ivan Čukić about Functional Programming, despite him not wanting to be known as 'The Functional Programming Guy', TMP and OO, and how he was taught C++ in high school. How does Ivan balance writing books (in fact will he write another book?) and speaking at conferences internationally, while teaching full time at university?
58 min 36 sec
After a break of a few weeks we're back with an episode actually recorded on March 12th (when Phil had a cold). We chat with Gor Nishanov about Coroutines, which were just adopted into the draft standard for C++20. We talk about what Coroutines are, why recent talks may have been given the wrong impression (as they focused on a library writer's perspective,) what is going into the standard (the core language features) and what is not (library support, performance guaranteed by construction) and why. We also look at Microsoft's open-sourcing of the Calculator source code - and the bugs contained therein - as well as some follow-up on contracts.
1 hr 2 min
This week we're joined by Ben Craig as we chat about Modules, as was recently adopted into the C++20 draft standard in the meeting at Kona. We talk about how modules interact with build systems, what the deal with macros is, and the new study group set up to advise tools vendors on best practices for supporting modules in an optimal way. We also talk about Ben's ongoing work on moving the Free Standing mode of the standard forwards - and what that really means. To find out what the beneficial crisis is, and why John Lakos might be angry, listen to this episode.
58 min 54 sec
We've talked about contracts before, but this week Björn Fahller joins us to give us his thoughts, based on his recent talk at C++ on Sea. This is all pre-Kona - the recent Standards meeting that saw several tweaks to the wording for contracts in the draft standard for C++20. Björn gives us a refresher of what contracts actually are, and how many of us have been using them in some form for years - even decades. Then we discuss what's actually going into C++20, why that's worth having compared to assert() or hand-rolled or library solutions - but also what the shortcomings are - including a couple of weakenesses that have cause some to think that contracts may be 'dead on arrival'. Where does the truth lie? Björn makes his case and (somewhat boringly) Jon and Phil tend to agree. But what does it matter? The whole show is undefined behaviour, anyway.
This week we talk to Adi Shavit and Michael Gopshtein about their new conference in Tel Aviv - Core C++. We also get thoroughly distracted by talking about modules - and whether there is a major toolability issue with them, as currently proposed.
1 hr 5 min
This week we welcome back Kevlin Henney and talk to him about Deliberate Practice: what it is, how to relates to C++ programmers, and the workshop on it he's running with Jon Jagger at C++ on Sea. Along the way we also get into gaming the documentation writing system, the PDSA cycle and Boyd OODA loop, Mind Mapping and TDD. All in the pursuit of becoming better programmers.
1 hr 4 min
This week we chat with Frances Buontempo and Andy Balaam about Machine Learning, Artificial Intelligence and Genetic Algorithms. We learn how ML is mostly just 'multiplying and adding up' with a bit of 'randomly trying stuff out' but that you might need a kill switch - except when you don't. We also revive the 'C++ Lamentations' debate and try to make an iota of difference.
1 hr 3 min
This week we're joined, once again (yet for the first time) by Nicolai Josuttis, and we talk about how much of a C++ expert you need to be to write 'Hello, World' and initialize objects. We also discover how strongly Jon feels about initializer_list constructor syntax - and what Nico thinks about it.
1 hr 3 min
This week we welcome Hana Dusíková to the show and we chat about her compiler time regular expressions library, Protocol Buffers, std::embed and getting good compile and runtime performance when doing metaprogramming. Unfortunately, due to an extended edit time, the volunteer and diversity ticket programmes for C++ on Sea, mentioned during the discussion, have already closed. The student programme is still open as this show is published.
52 min 32 sec
This week we're joined by Matt 'Compiler Explorer' Godbolt as we chat about what your compiler is and isn't doing for you, doing a keynote for your first talk, and how having co-maintainers lets you go to flute concerts.
1 hr 1 min
After a bit of a break, we're back - and with non-other than Bjarne Stroustrup! We chat about the state of C++, from the hardcore of the committee to the whole community and also look at where we think it should go and maybe where it is going.
58 min 46 sec
After a bit of a break in the lead up to CppCon, in this interview we chat with Herb Sutter - in front of a live audience at CppCon itself. We chat a bit about the conference, how it has been 'the best ever' (yet again), but also how it is the last one in that location (CppCon moves to Aurora, just north of Denver, Colorado, next year). We then dig into Herb's Static(aly-typed, deterministic) Exceptions proposal - what it really means for everyone in the community - and how it fits into Herb's master plan of simplying the language, while doubling down on what C++ is strongest at: zero-cost abstractions, primarily through static-by-default approaches.
44 min 40 sec
This week we chat with Tristan Brindle, Oli Ddin and Tom Breza about C++ London Uni - a free course, based in London (and remotely), for learning C++. We hear, not only what the course is about and how you can join, but some inside insights into the challenges - and rewards - of teaching C++ to beginners. We also talk about how this is useful even to experienced developers.
1 hr 6 min
C++ on Sea free ticket winner. This week we chat with David Schwartz, CTO of Ripple, the company behind the XRP cryptocurrency. He tells us what sets XRP apart from Bitcoin, summarises what Proof Of Work actually means, and how XRP's Distributed Agreement Protocol is better, and some of the reasons that C++ was chosen as the implementation language.
56 min 57 sec
This week we welcome back Howard Hinnant and Arthur O'Dwyer to discuss Arthur's paper, P1144, 'Trivially Relocatable'. We talk about what it is, what problems it solves, older papers covering the same ground, and even another in-flight paper (P1029) that it overlaps with. As one of the original authors of C++11's move semantics, Howard is on hand to flesh out the historical perspective.
1 hr 8 min
This week we manage to align with the calendars of Kevlin Henney and Martin Hořeňovský to talk about testing and beyond - with a particular focus on Catch2 - past, present and future. We discuss how some of Kevlin's ideas influenced Catch originally, and how Martin later joined as a co-maintainer (who does most of the work).
1 hr 3 min
The week we chat with Eva Conti, Troy Hunt and Matthew Butler on the topic of secure coding (so that's what safe coding is!). Eva and Matt are reformed hackers themselves and share some of their unique insights from the dark side, and how that can inform all of us in our coding practices - including those that think they don't need to worry about security in their environments.
1 hr 7 min
This week we welcome Anastasia Kazakova and Dmitry Kozhevnikov to talk about the recent release of CLion 2018.2, as well as the upcoming release of ReSharper C++. We particularly talk about the new clangd based language engine that CLion now uses alongside it's own, as well as the next step towards alternate build system support - and C++/CLI support in ReSharper C++. We also talk about JetBrains' involvement in the standards committee and the new tooling group, SG15. And Anastasia talks excitedly about a really great promotional discount on JetBrains' products which, sadly, expired before this episode could be edited.
59 min 46 sec
This week we chat with Timur Doumler and Brian Heim about the challenges peculiar to audio development, and find that most are shared with other domains - especially those that consider themselves low-latency and/ or real-time. Timur has, in the past, worked on audio software at ROLI and Native Instruments, and has been a maintainer of the JUCE audio library - but now works on CLion at JetBrains. Brian is a maintainer of SuperCollider, a platform for audio synthesis and algorithmic composition.
1 hr 2 min
This week we discuss some of the challenges of embedded development. We're joined by Michael Caisse, Ben Craig and Odin Holmes for a chat that, at times, touches on volatile subjects! We'll also consider why those of us not working in embedded should care - and what possible future features and directions of C++ could benefit everybody and, perhaps, unify our currently disparate worlds.
1 hr 5 min
This week our main topic is Simplicity and we're joined by Kate Gregory, who will be keynoting CppCon on the subject, and Jonathan Boccara, whose blog is often focused on pursuing simplicity, too. We cover how to deal with complexity in legacy code, e.g. a report function containing thousands of lines of switch statement (and a 27 step process to add a new report), what simple code looks like to begin with, techniques that help - including functional programming and TDD, and some of the limitations of all these approaches.
1 hr 3 min
This week we didn't start out with a theme topic, but spent time discussing conferences around the world as well as whether too many diluting proposals are going through the standards process. Also, is it actually easier to get a library into the standard than Boost? What really was the moral of the story of the Vasa?
1 hr 7 min
This week we discuss Contracts, both as an idea (and possible implementations) and as the language level proposal currently progressing through the ISO process. We have one of the proposal's authors, John Lakos, as well as an interested bystander, Kévin Boissonneault. We finally get to Jon's rant on non-const arguments in post-conditions, and realise that the proposal authors may be one step ahead of us!
1 hr 6 min