CppCast - CppCon Lightning Interviews

Episode Date: October 4, 2018

Rob and Jason give a brief trip report of CppCon before being joined by several guests who gave Lightning Talks at CppCon 2018. Lightning Talkers Anastasia Kazakova Timur Doumler Phil Nash St...affan Tjernström Matthew von Arx Tony Wasserka Jens Weller Anny G. Borislav Stanimirov Ezra Chung (@eracpp on slack) Jean-Louis Leroy Links CppCon 2019 will be in Denver, Colorado from September 15 to 20th CppCon 2018: Bjarne Stroustrup "Concepts: The Future of Generic Programming (the future is here)" CppCon 2018: Mark Elendt "Patterns and Techniques Used in the Houdini 3D Graphics Application" CppCon 2018: Kate Gregory "Simplicity: Not Just For Beginners" CppCon 2018: Herb Sutter "Thoughts on a more powerful and simpler C++ (5 of N)" CppCon 2018: Chandler Carruth "Spectre: Secrets, Side-Channels, Sandboxes, and Security" Sponsors Backtrace Patreon CppCast Patreon Hosts @robwirving @lefticus

Transcript
Discussion (0)
Starting point is 00:00:00 Episode 169 of CppCon. Then we talk to several guests in a series of lightning interviews recorded at CppCon. Then we talked to several guests in a series of lightning interviews recorded at CppCon 2018. Welcome to episode 169 of CBPCast, the first podcast for C++ developers by C++ developers. I'm your host, Rob Irving, joined by my co-host, Jason Turner. Jason, how are you doing week after CBPCon? Week after CBPCon, I'm doing by my co-host, Jason Turner. Jason, how are you doing week after CPPCon? Week after CPPCon, I'm doing all right. Kind of lost my voice a little bit in my two days of training that I did afterward.
Starting point is 00:01:33 You sound fine to me. Yeah, I do sound fine at the moment, but it's been, today is much better than yesterday, yeah. Okay. Well, with this episode, we just wanted to do, I guess, kind of maybe a quick mini trip report about how the two of us felt about CPCon. And then while we were there, we managed to interview several people with kind of quick lightning talk interviews. Because three of the nights they did lightning talks, and we managed to grab a bunch of people who were giving those lightning talks and talk to them about how they were enjoying the conference and what their lightning talks are about right yeah so i guess lightning interviews about the lightning talks yeah although i think some of the interviews were actually longer than the lightning talks
Starting point is 00:02:18 yes a couple of them probably were yeah but before we get to that um do you want to talk just a little bit about uh the conference we had uh you know five days five four keynotes right um well day without a keynote i thought i thought there was one every day that's right yeah at least plenaries depending on how you slice it so there's bjarne yes Yes. There was the Academy Award winning guy. Yes. We had Kate Gregory, Herb Sutter. Yes.
Starting point is 00:02:52 And Chandler. Right. So there were five. Yeah, that sounds right. Yeah. And all five of the keynotes are online already. Oh yeah.
Starting point is 00:03:01 They did that super fast as usual. Super fast. Like within 24 hours, each one was up. Yeah, and you know, I know John gives a lot of credit to Bash Films, but for real, they are super professional, really good, get the stuff done quick. I think there's only been maybe one mistake that I've heard of from all of the talks and all of the years that they've done conferences. Like one thing that was supposed to be recorded and had to be re-recorded or something like that.
Starting point is 00:03:29 But I mean, it was, it was, it's almost never, it's, it's really solid stuff. And the, the cameramen, I think they are, I think all the camera operators are actually men, but anyhow, they're all like super nice and great to talk to. From the perspective as a speaker, I always go and meet the person who's recording my video. Because it helps me relax a little bit to chat with them for a minute. I've gotten to know several of them a little bit. In fact, one of them just got married last week. Was there at CBPCon and is leaving on his honeymoon like today or something. Cool.
Starting point is 00:04:07 Yeah. And I guess before we talk more about the keynotes, we should talk a little bit about the announcement that John called made at the very end of the conference, right? Yes, sure. So the conference has been at Bellevue at the Maiden Bower Center for the first five years of its existence. And it's now going to be closer to your neck of the woods. Yes, I just measured it 12 miles from my house. Oh, wow. That's real close. Yes, it is the Gaylord of the Rockies Convention Center.
Starting point is 00:04:42 And it is near the Denver International Airport. I've been watching it get built over the last, I think, two years. It is brand new. It hasn't opened yet. And I think they said their first event will be in December. So it will just be nine months after they opened. Oh, wow. wow okay and the thing is massive i describe it as the great pyramid of giza rising from the plains of colorado it is it is truly massive building right now you can only see like a handful of pictures online on
Starting point is 00:05:19 the website but it does look pretty huge yeah and I think all of the pictures that are on the website still are renders. Yeah. Okay. Yeah, and I checked recently on Google Maps, and the satellite photography hasn't been done recently enough to show any of the building outlines or anything, but it really is truly huge. Yeah, and my understanding is this is nothing against the Seattle Bellevue area,
Starting point is 00:05:43 but just that the Maiden Bower Center is maybe not going to be big enough because the conference is up to almost 1,300 attendees this year, and we were filling up that keynote hall. Yeah, I think 1,250 is what John said was the official number in the opening talk, but yeah, John has said publicly that maybe the last two years, we have been too big for the Maiden Bower, and they work very hard to make sure that it doesn't...
Starting point is 00:06:12 We don't realize just how crammed we are in there, but the Gaylord of the Rockies is something like ten times the size. Yeah. It's absolutely huge. So we can fiddle with more C++ developers. Hopefully they do a good job filling that up. Yeah, and for at least the first year, we will all likely be in the same hotel under the same roof.
Starting point is 00:06:34 So it'll be a conference of over 1,000 people, but we'll have the opportunity to feel like we're all kind of hanging out together and it should be easier to find people and easier to just organically hang out and stuff. Yeah. Whereas the main Bauer, there's at least like five hotels working with the conference that people book into. I think it was like eight working with the conference this year.
Starting point is 00:06:57 And then you have all the people who, for whatever business reasons, they stay at whatever hotel chain that their company has a contract with or whatever and yeah we're so spread out uh and and bellevue and we will not be here okay well were there any um you know highlights you wanted to mention with any of the keynotes oh goodness i should have spent some time thinking about that before we got on the air, huh? Well, I guess Kate Gregory's, we kind of talked with her about her topic, which is about simplicity in programming. Yeah, and Kate has kind of had this theme, I think, for like the last four keynotes that she's done. Yeah.
Starting point is 00:07:39 And interestingly, I mean, she manages to have the same theme, I feel like, like it's an overall theme. But, I mean, there are fresh different keynotes each time. Don't think that it's the same thing each time. I'm totally on board. Like, I pretty much agree with every single word she says. Yeah. And then Bjarne, the opening keynote, was all about concepts. And I thought he did a really good job of kind of explaining concepts for those of us who haven't been paying too close attention to it.
Starting point is 00:08:11 Yeah. Yeah. And he, he made one thing that I definitely said one thing I definitely wrote down because I haven't played with concepts yet, but he said, if you see requires requires, that's a code smell because you should have had,
Starting point is 00:08:24 um, um, if you see requires requires, that's a code smell because you should have had another concept to like describe that other requires statement. So if you do requires and then requires, and then you put like a bunch, like a big expression in there, really that thing should have been separated out into another concept so that we have composable concepts. And I'm like,
Starting point is 00:08:42 yeah, that's a really good point. And I'm like, yeah, that's a really good point. And I think if you see no except, no except, you could apply the exact same thing. Right. One of the things I thought was kind of interesting is he talked about how if we had concepts a few years ago, we may not have had auto.
Starting point is 00:09:01 And how he kind of sees concepts as taking the place of auto in a lot of contexts at least when you're using generic programming i guess i totally missed that i think that was in bjorn's talk i believe you i i'm quite certain i didn't pay you know 100 attention to every single thing that was going on you you know? Yeah. And it was a long week. It was a long week. And his was the first talk. Yes. Yeah.
Starting point is 00:09:34 And then I guess Herb Sutter talked more about metaprogramming updates and the lifetime analysis, which was really, really cool looking. And I'm glad to see that that's coming. And, you know, hopefully track down dangling pointers. Seems great. Yeah. I did a little bit of experimenting and it seems that clang has the best main support for lifetime checking right now. I need to double check and see what's in it.
Starting point is 00:09:58 What is in MSVC, but that was kind of, is it coming on the next update? I don't think it's out yet uh the most recent preview was just released the previews yesterday but it's not if you're just getting the normal updates it's not out yet right but if you have the latest release of clang you have the lifetime checker what was in it yeah okay and then uh chandler's closing keynote was all about Spectre. Spectre and Meltdown.
Starting point is 00:10:29 That was intense. Trying to follow along with everything was difficult. Yeah. And they released something new from Google, right? Although something that would basically eliminate Spectre, I think, but at a very high CPU cost. Yeah, there was something, and like I said, I had a hard time following it, but there was something that would cost like 40% CPU usage,
Starting point is 00:10:56 which is basically considered not a solution because no one wants that. I feel like from my perspective, the questions and answers after that on the panel was more valuable than the Spectre talk. Of course, Chandler's talk was good and well-presented, as usual. I would suggest maybe to the listeners who are having a hard time following along with Chandler's talk to just go ahead and leave it play for the hour and a half and try to soak in what you can. And then go ahead and watch the panel discussion on it.
Starting point is 00:11:37 And you'll probably fill in more details than you will. And the panel was hosted by Matt Godbolt. And who else was sitting on it do you remember it was chandler and two people that i didn't previously know the name of unfortunately so i would have to look that up all right okay um yeah and i guess the one other thing i wanted to mention is in your talk jason you made made a little announcement, right? You, you released a new, not library, but a new kind of GUI sample application, right? Yeah. I'm, I've been working on this project for a couple of months. I don't know when I started it. Actually, I can actually remember this. This is how my year has
Starting point is 00:12:20 been, Rob. I can remember which hotel room I was sitting in when I was working on it, but I don't remember hotel room I was sitting in when I was working on it, but I don't remember what month that was in. That's terrible. But anyhow, so I've got a project. It's called the C++ Box, basically. The website or the GitHub page needs help, but it's at lefticus slash cbp underscore box on GitHub. And the idea is that I've got an ARM emulator that I've written and this kind of integrated environment with Clang. So as you type in a program, it will compile it with Clang in the backyard, that doesn't make sense, background, and then automatically copy that binary into the virtual machine that i wrote that's running arm that's an arm processor and then give you the full cpu state and let you like monitor the stack and which line of code is currently executing and
Starting point is 00:13:18 everything and immediately execute it you can pause it and step one instruction at a time and see what's actually happening in the system. And I've got a little virtual display that you can play with and like write pixels to and stuff. So I, the idea was, you know, really to make C++ programming fun for learning. And I think, I think it's fun to play with. I play with it. And we'll see where it goes from here, I guess. And you kind of exposed yourself to a couple new things just while working on it, right? Like SFML, I think you mentioned, was being used. Yeah, I had used SFML just briefly before that.
Starting point is 00:13:57 So I got more use with it, the mGUI library, the immediate mode GUI. we've talked about that with alias dollar i believe yeah um and i also had to learn how to parse elf binaries because i can't compile an arm executable on windows with clang for windows but i can compile an arm object file so i have to take that object file and i have to parse it out well and then i have the problem that symbols aren't linked so i have to do some relocation so i had to do some simple like linker kind of stuff and it was a huge uh huge learning thing for me oh and conan real first use of conan Right, right. Which I was very pleased with, actually. Yeah, and that's part of your talk, going over kind of build scripts and Conan package management, right? Yeah, I had like, what, seven, eight different package managers that I evaluated.
Starting point is 00:14:59 Right. And Conan was literally the only choice. It was the only thing that had all of the packages that I wanted in an easy-to-use way. I think you said vcpackage came close, but it had a little asterisk next to one of the libraries. It had an asterisk next to SFML because there's open issues with it. And while vcpackage SFML will work on Linux, it doesn't actually work on Windows. And that's kind of important for a cross-platform tool, I think. So, yeah, so it worked.
Starting point is 00:15:30 And then when I was done, I realized that my AppVeyor build script for actually compiling this on Windows is only like eight lines long. Wow. So I think that's a pretty good build story. It's basically install conan install the required packages run cmake build it nice yeah pretty happy with that yeah okay well is there anything else you want to talk about or should we just take it over to the uh lightning interviews well i think uh since you just asked me about my talk i mean you didn't speak or have any official role at the conference this year
Starting point is 00:16:08 yeah I did participate in the community panel okay I feel like I didn't have too much to say there the discussion kind of went more into kind of helping people build up their user group you were sitting in there as well yeah I was yelling from the back of the room yeah more into kind of helping people build up their user group. You were sitting in there as well. Yeah. I was yelling from the back of the room. Yeah.
Starting point is 00:16:29 But yeah, I really enjoyed the conference. Um, you know, we, we didn't go to any of the same talks, so we both have a whole bunch to watch online. Yeah.
Starting point is 00:16:38 Well, on that topic, was there any talk that you went to that really stood out to you other than one of the keynotes? I might need to think some more about that i really enjoyed the lightning talks um some some of them are just so much fun i really liked uh james mcnellis he did one on um the shape of a program okay which was entertaining i highly recommend everyone will go and watch that. Yeah, his lightning talks are always, yeah. And I saw this comment from Kate several months back
Starting point is 00:17:12 about how you might spend three weeks working on that four-minute lightning talk to get it exactly what you want it to be, but you can prepare an entire day of training in a couple of hours if you need to, basically. I'm exaggerating things on both ends there. How many nights of lightning talks did you go to? I went to two.
Starting point is 00:17:33 I really wish I had made it to the third night, but I think I was a little tired towards the end of the conference. Yeah, I know my limits, and I know that I had to get back and sleep a few nights so that I was ready to go and able to spend two days standing on my feet teaching on Saturday and Sunday. And how did your classes go by the way? I thought they went pretty well. I had one student to a topic came up and I believe he is going to actually write a paper for, for his first proposal to the standard
Starting point is 00:18:07 based on a conversation in the class. So that could be fun. I don't feel like I want to give any details to that because you know, it's, it'll be his project. Uh, I might help him a little bit with it, but I've never written a paper either. Um, but other than that, yeah, I thought it went well. Cool. Okay. Well, we'll be back next week with the normal interview episode, and now we'll play those Lightning Talk interviews. All right, great. Okay, so we are doing Lightning Talk interviews here on day four of CppCon. Yes, it's Thursday.
Starting point is 00:18:39 Yeah, and we are currently joined by the JetBrains team. Do you all want to introduce yourselves? Yeah, so my name is Anastasia Kazakova, And we are currently joined by the JetBrains team. Do you all want to introduce yourselves? Yeah. So my name is Anastasia Kazakova, and I work as a product marketing manager for all of the C++ tools, including CLan and ReSharper C++. My name is Timo Dumler, and I work on the CLan team as a developer,
Starting point is 00:18:58 doing mostly the C++ language front end of CLan. I'm Phil Nash. I'm developer advocate for all of the C++ tools. C-Line, ReSharper, C++, and MapCode. Okay. So you're all either giving or have given lightning talks already. Anastasia, do you want to tell us a little bit about yours? Yeah, I did a lightning challenge on Tuesday.
Starting point is 00:19:18 That was fun. So explain the lightning challenge. Yeah, the challenge is a new format for this year. It's actually great. You have actually three minutes guaranteed. After that, you need 50% of the audience to vote yes, and then you get another three minutes. And then if 70% of the audience actually vote yes, then you get another two minutes. So eight minutes total.
Starting point is 00:19:41 And I got eight minutes. I'm very good. So I'm pretty much happy. Yeah. So the Lightning Talk was mostly about not a very technical topic. It was about reporting the feedback. So it was called like talk to me. And like we're mostly known not only for our tools,
Starting point is 00:19:57 but also for professional level of handling users' feedback. And so we're actually getting like dozens and hundreds feedback requests per day. And I was supporting their actual developers. They were professional and would like talking to our users. And sometimes they're very funny. So the idea of the talk was actually to share some funny stories, sometimes crazy stories, and just to show example of how you can provide a valuable feedback to get a valuable result back. Yeah, so some pros and cons about what maybe you should not be doing.
Starting point is 00:20:31 Okay, is there any one particular feedback maybe that was memorable that you could share with us right here? There is one very funny story. When we started C-Line back in 2015, we keep getting feedback requests saying, like, nothing works, the cursor looks strange, like the IDE editor doesn't respond. And we found out, actually, you know what? We have a Vimumulation plugin
Starting point is 00:20:56 which you can install from the welcome screen. And the people are just actually installing all the plugins from the welcome screen. Just because they usually do that. And they got installed the plugins from the welcome screen. Just hit select all. Yeah, just because they usually do that. And they got installed the Vim emulation plugin. And you know that joke about the Vim. You don't know how to exit Vim. Yeah.
Starting point is 00:21:13 And it seems like some of them actually didn't know how to do that. Okay. So we put a warning finally in the end on the welcome screen that you should do that only if you really know how the meme is actually working i think i've actually seen that warning i didn't know the history of it though yeah so there's a story behind that warning that's awesome how about you timor i'm good um so my lightning talk challenge is going to be um tonight uh the talk's going to be called uh can i has grammar it's not a very serious can i has grammar like canmar? Like, Can I Has Cheeseburger? Yeah, yeah, yeah. So it's
Starting point is 00:21:46 like a funny one. So this is basically about... I spent some time last year fixing bugs in our C++ parser and actually rewriting parts of that parser. And then I had to deal with a lot of weird code snippets that, you know, short little code snippets
Starting point is 00:22:02 that don't compile, or like most of the popular compilers, they choke on them. But it's not immediately obvious whether it's valid code. And then you kind of have to go into the actual C++ grammar, like in the standard, and figure out, like, if you have this extra pair of brackets here, and if you do this other weird thing there, whether that's actually still valid and should still compile. And then kind of from that, and then you you can go back to the positive fix it so it does everything properly but then also I kept a list of these weird snippets and
Starting point is 00:22:32 then basically the talk is just enough a collection of those and well if you if you have this weird construction here like you know it looks like no one like shouldn't compile but it does you know and then because you know the grammar says it's valid or whatever. So does the audience get to vote on whether or not it should compile or something like this? I'm not sure if there's going to be time for that. So most of the snippets are, okay, here's one line of code, which looks really weird, and then Microsoft compiler does this, GDC does that, and Clang does something else.
Starting point is 00:23:01 And who's right? Does anyone know the answer? I think maybe I will have time to do a few of those, yeah. That could be fun. Yeah, so it's intended to be just basically fun. Like, no practical value, just, you know. Well, to be fair, the most lightning talks really are just fun. Some of the best lightning talks are
Starting point is 00:23:18 just fun, yeah. But also a little glimpse into the pain of what it takes to maintain a C++ parser. Okay. Because you have to actually deal with it. If there's a bug like that, you actually have to fix it, right? So you have to actually figure out what's going on. Now, you're actually, or have you given a talk on parsing C++? Yes, that's actually funny.
Starting point is 00:23:37 So this lightning talk that I'm going to give tonight, I already gave it in April at the HCCU conference, but back then it wasn't recorded. Okay. And then it was just that talk and then people approached me and said hey this was really cool can you do like a longer version of that and this is how the parsing talk like the one hour talk about parsing actually developed that i gave a couple days yesterday so that's easy to lose track of time okay kind of yeah so that was like okay let's do actually serious talk about that because
Starting point is 00:24:05 apparently there is some interesting stuff in there and people are interested like in how like why parsing c++ is actually really hard so then i with my colleague jima we also kind of went ahead and made this into like a proper one hour talk which is kind of more serious although not 100 serious right um yeah but then also I'm, again, giving the lightning talk because it's just fun. Cool. Yeah. How about you, Phil? So I've got a lightning challenge tonight as well.
Starting point is 00:24:32 So we're all lightning challengers. You are jet brains, people. You don't take it easy, huh? Well, no, it's just we've got to take the challenges. So my one is called You're Not As Smart As You Think You Are. Okay. And it's going to be a tour of cognitive science, psychology, even a bit of programming in there.
Starting point is 00:24:53 How all these things relate. It's really about cognitive limits that we all share. They're actually really low, really constrained. And then what we can do about that and how that affects the way we approach our code. So I hope it's going to be both entertaining and useful as well. Well, that's the challenge. So, yeah, again, you're hoping to stay on the stage as long as possible. Yeah, so I've timed it so that, you know, after three minutes I'm just sort of
Starting point is 00:25:19 leading the next question that I'm going to answer in the next section. Oh, to keep them on a cliffhanger so they vote for you to stay on longer. That's the idea, yeah. It sounds like a plan. We'll see if it's a good plan. Yeah, although the material is actually an extract from the TDD class I'm going to be doing this weekend. Oh, okay.
Starting point is 00:25:38 Because TDD is also about how you can make your code simpler, how you can sort of use the design cues that TDD adds pressure to you to keep things simple, and how that creates this virtual cycle. So it's all very appropriate. Cool. Okay. So how's the conference been this year for the JetBrains team?
Starting point is 00:26:00 It's actually going great. So we had a booth on Monday. We had a table yesterday, we had it yesterday, we have it today. So it's a huge traffic on the booth. So lots of people come in to us to talk, to thank us, like to share some feature requests, to report it back, to complain. But actually we're quite happy. Most of the people are coming to say thank you. And this is really a great feeling, you know. Yeah, that would be great.
Starting point is 00:26:27 Yeah, that's great. And we actually have so many talks in the program. I guess every day we have a talk from JetBrains. That sounds like cheating. I hope everyone is fine with that. Although I actually ran ToolTime this year. Right. A new session in the evening.
Starting point is 00:26:44 I really wanted to go to that, but my schedule wouldn't allow it. Can you tell us how Tool Time works exactly? So Tool Time, it was an evening session, and we just invited anyone that either maintains a tool or sell a tool or just a super user of a tool. And that could include a tool like JetBrains IDE, or it could just be a library. Anything that developers use to get a job done. And we're going to try and make it democratized
Starting point is 00:27:12 so it's not just the big players like JetBrains and Microsoft and the others coming with their booths, but just the little guy can come and show off their library. So everyone has same-sized tables, same-sized signs, and people just come in and stroll up and say, well, so what's your tool about? And it went really well. Got a lot of interest. We didn't have as much traffic coming through as we would have liked because it just happened to coincide
Starting point is 00:27:41 with the first evening of the Lightning Challenges. So that was a big draw the other way. But even despite that, everyone always had someone at their table. They were always having a nice conversation. So it was a nice environment. I would personally like to see a published list of who all presented and links to their tools, because I would like to go back and review it even though I couldn't make it. Yeah, that's the thing I should probably put together.
Starting point is 00:28:07 I think there was a list on chat.com in the chat. I saw it with the list of presenters there, but without the link. Yeah, it's just a flat list in the schedule. I saw that. It's actually open on my laptop right now for me to go back and find the links for all of them. Yeah, that's a good idea.
Starting point is 00:28:22 I should put that together. Going back to the JetBrains booth, the other thing that sort of emerged a bit this year is because we had an EAP release last week and an update this week, and the big new feature has been remote working. And everyone that's come up to a first approximation has been really excited about this.
Starting point is 00:28:42 So it seems like it's going to be quite a big deal. Yeah, I think I showed dozens of demos during these days. I never showed that much at CppCon. I think I'm demoing the tool nearly every day, every hour. So what, like I pull up whatever my tool on? Is remote working for which project? Can you tell us a little bit more about it? Yeah, like you have C-Line on your local host, for example,
Starting point is 00:29:02 and you have your project on your remote host, so it compiles there, it runs there, you can debug it there, but you have all the information in your editor on your local host. Okay. And you can do everything in your editor, code, but everything is actually down in the remote host. It's quite handy for those who have these big projects that
Starting point is 00:29:19 they usually build on some remote Linux servers, and you're just working on your local currently Linux and Mac. We're going to add Windows later as well. So that's kind of handy for these cases. All right. Very cool. Okay. Thanks for coming in, guys. Thank you.
Starting point is 00:29:37 Thank you. Okay. And we are now joined by Stefan. Yep. Do you mind introducing yourself? I'm Stefan Kjærström. I'm a C++ evangelist out of Susquehanna International Group in Philadelphia. Okay, and do you want to tell us a little bit about your lightning talk from last night? Yeah, I gave a lightning talk entitled,
Starting point is 00:29:59 Almost Always Avoid Auto. always avoid auto. Over the last decade or so I've realized that there are definitely occasions where various code bases have auto sprinkled around in them to the extent that when you try to maintain them, it becomes a cognitive burden rather than a cognitive help. The most egregious example I chose was one from personal background where I'd spend 15, 20 minutes chasing down a long line of function returning auto, returning auto, returning auto, returning auto, only to find a UN64 at the bottom, which felt a little bit excessive.
Starting point is 00:30:54 But I also wanted to try to highlight what I think is a greater problem in the community, which is that auto is wonderful for slideware, just like using namespace stood is wonderful for slideware. Nobody has the space to put everything on a slide. It just hides anything you're trying to show. But at the same time, as soon as something appears on a slide, there will be somebody out there who goes, oh, cool, I can do that. That's valid. And I'll use it in ways that perhaps 10 years down the road turns out not to be a great idea. Right.
Starting point is 00:31:42 And I was trying to kickstart a little bit of a conversation of the problem is out there. I don't have a solution, but if we're aware of it, we can at least maybe steer. Just maybe stop and think for a minute before you always, almost always auto. Right. Yes. And did you get a good reception? Pretty widely, yes. There were perhaps one or two people that didn't quite get my Scandinavian attempted humor.
Starting point is 00:32:16 But other than that, it was generally well received. Cool. Okay. Thank you. Thank you. I wanted to interrupt this discussion for just a moment to bring you a word from our sponsors. Backtrace is a debugging platform that improves software quality,
Starting point is 00:32:31 reliability, and support by bringing deep introspection and automation throughout the software error lifecycle. Spend less time debugging and reduce your mean time to resolution by using the first and only platform to combine symbolic debugging, error aggregation, and state analysis. At the time of error, Bactres jumps into action, capturing detailed dumps of application and environmental state. Bactres then performs automated analysis on process memory and executable code to classify errors and highlight important signals such as heap corruption, malware, and much more.
Starting point is 00:33:01 This data is aggregated and archived in a centralized object store, providing your team a single system to investigate errors across your environments. Join industry leaders like Fastly, Message Systems, and AppNexus that use Backtrace to modernize their debugging infrastructure. It's free to try, minutes to set up, fully featured with no commitment necessary. Check them out at backtrace.io slash cppcast. Okay, and we are now joined by Matthew. Can you introduce yourself?
Starting point is 00:33:28 My name is Matthew Von Arx, and I work in the satellite communications industry. Okay, and you gave a lightning talk last night? I did, and it was on continuous integration and best practices, and something that's kind of hard in my industry right now. It was, well, we saw the talk, we were both there. Can you, well, I don't want you to give away the punchline really, but give us an overview as to what this talk was about.
Starting point is 00:33:57 So the talk was mainly just my evolution of trying to bring tooling for continuous integration and deployment and best practices into my organization. And there's a ton of tools out there right now, a ton of high quality stuff. You can get lost a little bit just because there's so much out there. But the good thing is a lot of them work well together. So yeah, I was watching the talk personally. I was like, not sure like how much is he serious? How much of this is making fun of our current ecosystem? And how much of it is tongue-in-cheek?
Starting point is 00:34:31 You actually do see all these tools working nicely together. In my current situation, they're all working together. But that's not how I would structure it if I did all over again. Okay. So it was a bit of an evolution. We started offering in Jenkins, and that was out of necessity. We had to do a release, and then later on did a conversion, brought in GitLab and a few other tools.
Starting point is 00:34:54 Ultimately, the best solution for having to have it locally hosted would have been GitLab. I've got CI systems, I've got version control and an issue tracker. Yeah, well, I will give away one of your jokes because I thought it was hilarious personally. But you said, let's move from SVN to Git so now we can visualize our mistakes. I think that's how you put it. That's how I put it. That was awesome. And we got into this nasty situation where we were just losing track of our branches. So I couldn't tell where things were going, where they were coming from.
Starting point is 00:35:24 I personally had one client where at one point they had like 36 open branches and I was managing the CI at the time. And I'm like, you have to do something with these branches. They have to go somewhere. Yeah. So in addition to your lightning talk, you also were giving an open content session. Is that right? That's correct. And it was really less comedic. It was an extended version of the same content from the lightning talk. And the main thing is a lot of what I've been hearing in the C++ community, there's a lot of language focus, and there's been some talk of tooling, but not a bunch of talk towards continuous integration systems that I've heard
Starting point is 00:36:02 and how to make this work in a company. So a lot of that ended up having to be self-taught. So I proposed an open content session to discuss the topic, and it seems that it was well received. And how do these open content sessions work exactly? Like, do you go up in front of the room, you make a little presentation, but then it comes into more of an open discussion? You can structure it about however you want. The surprising point for me and why there's a little commonality between my slides from the two sessions are I know I could get a lightning talk slot because they give them to everyone as long as there's room. Open content has to go through an approval process. I got approved on Saturday after I landed here. So there were a few shared slides there.
Starting point is 00:36:44 But I had the content down and i did it more as a presentation style but they do birds of a feather they do uh panels they're really good sessions so it's basically a session that has some review but less review than a regular content session yes with the downside that it's almost certainly not recorded right not recorded and they're shorter oh okay i didn't realize that it's 45 minutes it's almost certainly not recorded right not recorded and they're shorter oh okay i didn't realize that it's 45 minutes it's a 45 minute session yeah okay okay i think you also wanted to put out a little plug right that's right so um i'm currently in the southeastern united states in north carolina and looking for some opportunities if this stuff sounds
Starting point is 00:37:20 interesting to you if i sound interesting please uh please contact me and I believe you guys will put the contact info on the show notes. Yeah, we'll put your contact info in the show notes, but if you're just listening, I mean, where's the best place to find you? So you can find me on LinkedIn, Matthew Von Arx. That'll have the best summary of my experience and otherwise the contact. Okay. Thanks, Matthew. Thank you.
Starting point is 00:37:43 Okay, and we're now joined by Tony. Can you introduce yourself? Hi, I'm Tony Wazaka. I work as a freelancer in Berlin on embedded systems on the day. And for breakfast, I code game console emulators. Okay, and can you tell us a little bit about your lightning talk? Yeah, sure. I found a nice use or misuse of C++11's brace initialization feature, which basically allows us to call functions in a way that all of their arguments are evaluated in a sequential order from left to right.
Starting point is 00:38:20 And that tends to be rather useful for some cogeneration and metaprogramming tricks. So can you, yeah, you said some cogeneration and metaprogramming tricks. Can you give us an example where you have used this feature? So I've actually given a talk on Monday at this conference about some work I've done on 3DS emulation, where there are various components in an emulated operating system that need to communicate with each other and this communication involves some sort of serialization and de-serialization process and using variadic templates i could easily automate a lot of boilerplate in that
Starting point is 00:38:55 in that subsystem and while doing so i kind of stumbled upon this issue about sequential evaluation and function calls and like the lightning talk was basically the missing piece in the puzzle i needed to make my solution work in that context yeah so as of c++ 17 we still aren't guaranteed left to right basically the only thing we're guaranteed is not inside out really if we wanted to put it very shortly and that's correct but. But so, yeah, I think you demonstrated in your lightning talk, some compilers go left to right, some go right to left, and you needed to fix this, basically. Yeah, I believe Clang actually evaluates left to right,
Starting point is 00:39:35 at least in my example. Of course, it's not guaranteed. And G++, in my very same example, evaluated right to left. So you can imagine if you have, for instance, the same expression three times, like incrementing a variable the very same variable then well it quite matters a lot whether the variable at the very left is incremented first or at the last right um but yeah basically there's a clause in the standard that tells us that uh embrace initialization so anything enclosed by curly brackets, so to speak,
Starting point is 00:40:06 curly braces, that is actually evaluated strictly from left to right, which is the key piece needed to get serial, sequenced evaluation of function arguments. So, yeah. Okay. Do you want to tell us a little bit more about your emulator talk?
Starting point is 00:40:25 It's very technical. It's basically a case study of what we can do with modern C++ features in this very specific issue of serialization and deserialization and emulation. And it touches on a very generic technique of code generation, which I actually got a lot of feedback from our people who realized, hey, this is actually what I've been doing in my entirely different problem. So even if you're not into emulation, I recommend watching
Starting point is 00:40:50 it because maybe you can actually apply that technique in your domain. Sounds fun, yeah. Oh, and would you like to give us a quick overview on what emulators you've worked on? Why we have you? There's a couple of them that I basically worked on since about 2010. And the first project I got into was the Dolphin emulator,
Starting point is 00:41:08 which emulates the GameCube and Wii consoles. That had already existed at that point, and I joined it fairly late at that point in its lifecycle, and I mostly worked on GPU emulation there. Other projects that I worked on was the 3DS emulator Citra that I worked on was the 3DS emulator Citwa that I worked on since the very beginning. And I've been working on a new 3DS emulator privately for a while now. That's unfortunately not public yet.
Starting point is 00:41:34 Is your other 3DS emulator open source, public in some way? It will be open source once it gets into a state I'm comfortable with. Okay. Cool. Thank you, Tony. Thank you very much for having me. We are joined again today by returning guest Jens. How are you doing?
Starting point is 00:41:53 I'm good. I'm joining CppCon. And you? Good. How are you enjoying the conference? What have you thought of it? For me, it's an interesting mix of talks and just organizing as a community, speaking to people, reaching out, talking to sponsors. So it's a really good experience for me.
Starting point is 00:42:14 I feel like there's been more of a sponsor, tools, booth, presence, that kind of thing than in previous years, maybe I'm mistaken. Yes, there's definitely more ongoing and the sponsors are now like on three floors it used to be only two floors okay it's not like overwhelming though oh no no no no i i meant kind of oh yeah yeah i think it's like exactly the right amount it's like not uh cpp con and i think community conferences shouldn't be about uh sponsorship and booth and everything like that. So it's a bit in the background, but it's visible. So I think that's a good tradeoff.
Starting point is 00:42:51 Well, and as we heard from the JetBrains team, it seems a lot of C++ developers enjoy the opportunity to go and thank the people that have worked on the tools as well. Yeah, I mean, we spend our whole lives in tools like JetBrains and Visual Studio. It's nice to show a little appreciation. Or complain at them. Yeah, I think that's great. There's lots of
Starting point is 00:43:12 companies you can talk to here, but there's actually also lots of companies which are very useful for us as a C++ community, and so you can just meet them and say thank you for your tools. So you also gave a lightning talk last night, right? Yes, I gave a lightning talk based on an experiment I did this spring. The title was Automatically Generating UI from Qt, Boost, and C++.
Starting point is 00:43:36 And so the idea behind it is I wanted to play around with the Boost MP11 library, which offers template metaprogramming in C++11 through Boost. And I also wanted to see how this interacts with another library, which is called Vedigris, which enables Qt to replace the mock with constant expressions. so you still have a bit of the mock around but it's a constant expression and that means you can do things which you never could do before like making uh classes which are part of the cute machinery which are derived from q object templates so you suddenly are able to make a templated model to have a dialog which is templated.
Starting point is 00:44:29 And I thought, well, what if I combine this with the very basic reflection that Boost Fusion offers? I can adapt the struct, I can get the name, I can access the members. And in the past I've written for this a certain thing which matches the member names to the actual members and helps me import JSON files. And I thought, well, if I take the next step,
Starting point is 00:44:58 if I'm able to connect this whole template generic idea to Qt, I'd be able to just generate an edit or input dialog for simple types just from the provided data. So I was wondering if you could say a little bit more about this tool. One of the first things that you mentioned, the Verdigrass. Verdigrass, yes is and it's a mock replacement um yes okay so it's it's a drop-in library for putte so is it still a build step that is added to or does it all happen at compile time it all happens at compile time it's 100% constant expressions and it basically creates those functions
Starting point is 00:45:47 which otherwise would be created by the interfaces through the mock, which are needed for everyday use in Qt today, and does it through constant expressions. So you don't have an extra build step. You don't have anything to change in your build setup actually you just have to add this library which is actually just two header files um into your project and then you can start playing around with was actually writing
Starting point is 00:46:19 classes with this and you still have a lot of macros which you then need to use from that library instead from the cute source okay and then um the result is that at the end the uh generated assembly is kind of what the mock would do so it's like a drop in replacement okay so even it doesn't mean that you have to completely change your you you i use it in lots of projects now where i used cute previously and i still use cute in many ways but if i need a template i just can use the library to do it and it's like 100 compatible with cute itself kind of sounds a little bit to me like somewhere kind of between cute and moving all the way to copper spice like
Starting point is 00:47:05 you want some of the more modern things but you still want to stick with cute officially or something yes it's definitely inspired by copper spice okay and i also mentioned yesterday copper spice in my lightning talk because um yeah that's they've done that work first but they done it as a fork and just replacing it in the library, and they've gone way farther than this library goes. Right. But if you actually want to stay on Qt, and it's working with the current Qt,
Starting point is 00:47:36 and I'm not sure which version you need from Qt to actually can use this library, but you need to be on C++14. Okay. That makes sense for good constexpr support. It does. Yeah. Okay.
Starting point is 00:47:50 Do you want to tell us a bit more about the applications you're making with Qt? You said it was kind of an experiment you're working on over the summer. Yeah. So the reason I'm doing this experiment is just writing applications with Qt, writing front ends, writing UI code is so much boilerplate
Starting point is 00:48:09 that when I add another variable to a class and I have to go to that file which handles the UI resources for that, add there something, enter the name and then i have to write the handling code for getting the the actual value from the member into into a dialog or into a display whatever you want to do with it and then if it's an edit dialog you also have to um once you edited the the actual variable in cute you still have to often transfer it back into your type, which actually is in the model represented. There are some other ways around that, but you still are not getting around writing this code by hand. And if I had a template and just had Fusion-enabled adaption of that,
Starting point is 00:49:05 which I still would have to do by hand. And if we get reflection, we don't have to do that by hand anymore. I could just have the UI recompile, and it's updated. That's cool. Yeah. Okay. Thank you, Jens. You're welcome.
Starting point is 00:49:25 Okay, and we are now joined by Annie. Would you like to introduce. You're welcome. Okay. And we are now joined by Annie. Would you like to introduce yourself? Hello. I'm Annie, and I'm finishing my undergraduate program. It's my last semester at University of British Columbia in Vancouver, Canada. And what degree are you working on? Computer science.
Starting point is 00:49:41 Okay. Okay. Okay. And you were part of, I think, four women that came kind of on an Include C++-based sponsorship. Is that right? Yes. So we were, through the efforts of Women in Tech Fund and Include CPP, we were able to attend this conference because they raised money for us to attend this conference.
Starting point is 00:50:07 Can you tell us a little bit about how that worked? Did you have an application process? Were you chosen? Yes. So at first, I personally applied through Women in Tech Fund Organization, and it required a short application saying what I think I will get out of this conference. And then they were good. They contacted me in the next few days. Sounds like a great program. Yeah. And you got the exciting opportunity of introducing Kate Gregory for her keynote. Is that right? Yes. So a few days ago before the conference, I tweeted out my blog post where I described my thoughts about each talk that I was going to attend.
Starting point is 00:50:53 And Bryce, one of the organizers of the CPPCon, forwarded to John. John is the chair of the CPPCon. And John reached out to me saying, I have this great idea. Why don't you introduce Kate? And I was really excited because I watched Kate's talks in the past and I'm a big fan of her. I know it's a little scary to stand up there
Starting point is 00:51:14 in front of the entire conference. Honestly, I think I was more nervous about introducing Matt when I introduced him than I was about actually speaking on that stage. So congratulations. Monet and I both only had to do introductions. We haven't had to speak on that stage. And I can say that, yeah, it's intimidating in front of that many people. The difference from my perspective is that when I'm speaking, I have slides to remind me what
Starting point is 00:51:39 I'm supposed to say next. And when I was introducing someone, I had no slides. I had no note card. I can't, you know, you don't want to do this, right? So yeah. Although I guess our listeners couldn't see what I was doing. I said this and I held my cell phone right up to my face. Okay. And Annie, you're doing a lightning talk tonight, right? Yes. I'm doing a lightning talk about some of the things I learned at my internship at Mozilla that helped me organize myself better. So one of the things is, you know, just using Trello for helping manage, keeping track of bugs when you're working on many of them simultaneously. And another one is
Starting point is 00:52:20 for those who use Git, if you wanted to check out more than one working tree at the same time, I'm going to teach you how to do that. Is that a capability that's built into Git? Yes, but it's currently at the very bottom of the documentation. It says it's still experimental, so don't use it with supersized projects i was you know a lot of people feel like git is a little daunting i think i mean i've definitely worked with people who thought git was daunting so using an experimental feature of a tool that most people or many people find intimidating seems yeah a little scary a little bit but it worked well for you um yes i was able to work on more than one bug
Starting point is 00:53:06 simultaneously uh that's crazy i've never heard of that before no i will i will i will not be able to attend the lightning talks tonight but i'll definitely have to go back and watch it yeah and how are you enjoying the conference in general uh it's really great uh i was worried that i wouldn't meet too many people because it's my first time and I don't really know anyone. But so far, there was no very moment when I felt left out because people have been introducing me and I have been introducing myself to people and it has been very easy to meet new people. It's really easy to just go up and introduce yourself to the speaker here, right? Yeah.
Starting point is 00:53:47 Every lunch, I just shout into the void on the include CPP Discord, you know, who's having lunch? And we have a large group every time. That's awesome. Okay. Thank you, Annie. Thanks for having me.
Starting point is 00:54:02 Thanks. Okay. And we are now joined by Borislav. Would you mind introducing yourself? Hi, I'm Borislav. I'm a first time at CIPICON. We gave a talk, a lightning talk yesterday about basically ordering adjectives and nouns. And it kind of resonated with people because, as I understood, there had been something similar last year, again, with poor John, but this time with Jonathan instead of me. So many people would probably know what I'm talking about. This is an ongoing battle, shall we say. Yeah.
Starting point is 00:54:41 It's been going on for about two years now. I think at least two years. Yeah, I've been told on for about two years now I think at least two years I've been told that James McNellis I believe has been involved at some point in this Probably We're kind of hinting at it but do you want to say what your talk was really about?
Starting point is 00:54:58 Well, okay So my talk was basically about defending West Const and contrary to East Const of of course, but also to the popular new thing called Const West. Because Const should go first, you see. But basically I rambled about how English is supposed to work. How English has prepositive adjectives and adjectives should go before
Starting point is 00:55:26 the noun, stuff like that, and how we need to, well, you know, great effort is put into educating programmers to write in proper English because English is, you know, the lingua franca of software development, which is kind of ironic because lingua franca means French language and it's in Italian. But sure, English is the most popular language in software engineering and programming, and kind of ironic because lingua franca means french language and it's in italian but sure uh english is the most popular language in software engineering and programming and we should use proper english and constant is proper english you know when you said that at the lightning talk that lingua franca means french language and italian i i'd never like consider the the history of that word that
Starting point is 00:56:04 phrase at all. That was hilarious. Yeah, well, linguistics is a hobby of mine and has been for a long time. So, yeah, check me on linguistics. I know everything. You know everything, yes. We are all experts on something at this conference. That is true.
Starting point is 00:56:18 You talk to get a lot of laughs. Do you mind explaining that acronym that you mentioned a couple times throughout the talk? XactPM. Well, I honestly don't remember. It is G-S-S-A-C-P-M. XAKPM. Okay, that's it. So it means general opinion, specific opinion, size, shape.
Starting point is 00:56:48 Color? Something, something, the last one is material. But basically that means that this is the order. And it's not for English alone. Other things I did say were for English alone. But this is the order in which human beings tend to accept adjectives as normal. And if you reverse the order, like in, say, well, big brown wooden spoon sounds normal to you, and wooden brown big spoon makes me sound like a maniac, right? Right. There are no rules about it,
Starting point is 00:57:14 but somehow human brains process adjectives and tend to like a certain order of adjectives. Okay. You definitely have to go and watch this lightning talk. Yeah. I highly recommend this one. It was a lot of fun. Okay, thank you, Borisov. Thanks for having me. Okay, and we're now joined by
Starting point is 00:57:33 Ezra. Would you mind introducing yourself? Hello, I'm Ezra. I'm a student studying computer science at the University of Michigan. And I'm also a student volunteer at CppCon 2018. Okay, do you want to start off by telling us about your lightning talk? So my lightning talk was about how to properly, I use the word backward, how to backward values up function call stack as opposed to forwarding them down the call stack. And so I came across this problem when I was designing visitor-like interfaces, and I wanted to return results from the visitor
Starting point is 00:58:05 that I'm passing to the interface. And I wasn't satisfied with returning by copy, so I wanted to know how to return references well without running into dangling problems. And so I came across a lot of... There was a lot of decal types involved.
Starting point is 00:58:22 Decal types. Do you want to give us a quick sneak peek of what this looked like? A lot of it was decal type autos. Really, to properly preserve either the reference type or the lack of reference of the return type of your visitor you had to deduce your return type as the return type of the visitor so there was you could either use decltype auto to let it deduce it from the return statements or you could use trailing return type syntax to deduce it more directly without going through the decal type auto convenience. Right.
Starting point is 00:59:12 So at the very end, to handle the rvalue reference case, because when you're in a return statement, if you have a variable, that variable is an lvalue. But if the return type of the visit function is to distribute an R value reference, how do you bind that L value to an R value reference? There was some trickery there, and so I suggested to use
Starting point is 00:59:36 decltype, paren, e, paren, close, paren, e, paren, close, and that caught a lot of people off guard. And it made a nice punchline but soon after the talk some people who knew a little more about the language gave me some advice on how to improve on that so it was a very
Starting point is 00:59:56 I'd say it was a very successful talk it was my first ever public presentation so all things considered it went quite well but there was a lot of areas I wish I could have spent a little more time improving on, things I feel like I should have caught before the talk itself. But everyone was very receptive, very positive response, so I'm very thankful for the audience for that. opinion is a good way to have your first uh public presentation because you've got a good lively audience that's looking to be entertained and it's a good shape of a room so it's easy to see the people if you want to and stuff so it's probably a good experience can maybe we look forward to you submitting a full session about the same topic later in the future possibly it
Starting point is 01:00:42 would be great to have more time to delve into actual, have more time to talk about how value categories and type deduction works instead of simply assuming the audience understands them from the get-go. So it would be something definitely worth considering. So also I'm curious because I believe you are a student volunteer at C++ Now also. Yes. Do you want to give just like a quick, like how has the student volunteer program been for you at the last Now also? Yes. Do you want to give just like a quick, like how is the student volunteer program then for you at the last two conferences? So to be specific,
Starting point is 01:01:10 it isn't a student volunteer program. You can come, you can apply as a student, but there's also a separate volunteer grant program. Okay. Which is available to people who want to volunteer, who need, who would like some help to attend the conference. Perhaps they do not have the financial support needed to come on their own, and so the volunteer grant exists as kind of an offer.
Starting point is 01:01:36 Hey, could you please help us with setting up the conference and letting it run smoothly? In return, we'll help you come, whether it's paying the hotel fee, the travel fee, or maybe even both. So it's a very, very wonderful program. I wouldn't be here without the volunteer grants. So I'm very thankful for SPP Con and the volunteer team for having this program for us people like me to have a chance to come here so how much with your volunteering activities how much time
Starting point is 01:02:13 do you have to actually like see talks and participate so the volunteer program takes that into consideration and they do their best to make sure that volunteers are also attendees okay so they design the program such that as a volunteer you have a chance to be monitoring the talks that you also like would like to attend so as you are monitoring the talk you are also attending the talk okay okay so you're not so you're not really missing out on the conference by volunteering, although you may not be able to attend the exact talk you'd like to due to shifts and whatnot. But all things considered, they do their very best to treat you like an audience member, like a participant just like everyone else.
Starting point is 01:03:04 Very cool. That's great. And you also had a bit of a shout out in Herb Sutter's talk this morning. That is right. Yes. Oh, yes. So that was a part of, so this year, apparently they did this last year as well. Stevens Capital Management hosts this little challenge program where people can solve questions answer questions related to
Starting point is 01:03:27 programming or something else throughout the conference and so herb had a question that he wanted people to answer involving his new lifetime checker tool and so i submitted a my i submitted a response to that and won an ipad for it which i was not expecting the problem didn't say anything about ipad he just he just said oh i'll show it uh show a few of these on thursday's talk so that was quite a welcome surprise that's awesome yeah very awesome i've never won an ipad i think the most valuable thing i've ever won was an inflatable palm tree with a speaker in it. But it was like a life-size, I mean, it was big. It took like a gut-up chunk of my room. I think I'd rather have the iPad, though. Yeah, I think so. Okay. Thank you so much, Ezra. Thank you very much.
Starting point is 01:04:18 Okay. And we are now joined by Jean-Louis. Would you mind introducing yourself? Hi, I'm Jean-Louisis le roy um my first language is french but i'm not french i'm belgian and my first computer language was fourth wow wow wow yeah yeah i'm not old have you heard about it oh yes i've heard of it it was supposed to be the fourth generation language right yeah except that we didn't have space to put the U in it so it was F-O-R-T-H. But, you know, it was a language that compiled itself a bit like Lisp.
Starting point is 01:04:51 Interesting. So do you want to tell us a little bit about your lightning talk? Yeah, well, you know, the lightning talk. Well, it sort of began because, you know, I'm libertarian and I have a series of opinions. I believe that I'm right.
Starting point is 01:05:09 But being libertarian, I'm acutely aware that you and you may have different opinions. And you think you're right too. So I am very aware of the subjectivity in the world. And, you know, coding styles are something very subjective. But in every company, you know, there's a guy who has the power to tell you how to write code. And as a libertarian, as I'm always a little, you know, shocked by that. Also, I have some scientific culture. And I've always been fascinated by Einstein's sounding so far,
Starting point is 01:06:06 right, is that in relativity, it's not a theory, it doesn't say everything is relative. On the contrary, it says that somethings are very stable, are invariant according to certain transformations, like, you know, the laws of motion, the laws of motion. That's what relativity is all about. So at one point, I realized that there are so many, there's a profusion of coding styles. But some have an objective quality, which is that they're transformation friendly. So for example, if a piece of code is properly formatted
Starting point is 01:06:44 according to a style, why on earth, if you copy-paste it or indent it in or out, why should it change? Okay. So that's the basic idea. Now, that being said, you know, all the time I'm 50% serious. So that talk actually is a sort of way of making some stand-up comedy. But I do make a serious point. I mean, if you wield power over people, and maybe you're obsessed with vertical alignment,
Starting point is 01:07:23 and please realize it's just subjective. It's just what you think looks good. Right. And why not? But don't inflict that onto other people at the cost of making their engineer's life difficult. Okay. Okay.
Starting point is 01:07:42 Okay, thank you. Thanks, Guillaume. Thanks for having me. Thanks so much for listening in as we chat about C++. We'd love to hear what you think of the podcast. Please let us know if we're discussing the stuff you're interested in, or if you have a suggestion for a topic, we'd love to hear about that too. You can email all your thoughts to feedback at cppcast.com. We'd also appreciate if you can like CppCast on Facebook and follow Thank you. CppCast. And of course you can find all that info and the show notes on the podcast website at cppcast.com. Theme music for this episode was provided by podcastthemes.com.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.