CppCast - CppNorth

Episode Date: April 14, 2022

Diana Ojeda from Intel and Stephanie Brenham from Ubisoft join Rob and Jason. They first talk about the upcoming Pure Virtual C++ conference, an update to WxWidgets and Apple's release of a Metal inte...rface for C++. Then they talk to Diana and Stephanie about the upcoming CppNorth conference, how they got involved and much more. News Sign Up for the Pure Virtual C++ 2022 Conference wxWidgets 3.1.6 Released Getting started with Metal-cpp Links CppNorth CppNorth Workshops CppNorth Registration Patreon CppCast Patreon

Transcript
Discussion (0)
Starting point is 00:00:00 Episode 345 of CppCast with guest Diana Christina and Stephanie Brenham recorded April 12th, 2022. This episode of CppCast, we're thanking all of our patrons on Patreon. Thank you so much for your ongoing support of the show. And if you'd like to support the show too, please check us out at patreon.com slash cppcast. In this episode, we talk about WX Widgets update and Metal for C++. And we talk to Diana Christina and Stephanie Brenham. And Stephanie talked to us about the upcoming CPP North Conference and much more. Welcome to episode 345 of CppCast,
Starting point is 00:01:11 the first podcast for C++ developers by C++ developers. We're host Rob Irving, joined by my co-host Jason Turner. Jason, how are you doing today? All right, Rob, how are you doing? Doing pretty well. Just had a little break with the kids. They still have the rest of this week off. Yeah. How about you doing? Doing pretty well. Just had a little break with the kids. They still have the rest of this week off. Yeah.
Starting point is 00:01:27 How about you? I had a realization that I need to have my keynote and workshop for C++ on C ready in July is starting to sink in. I mean, I still have three months, which is plenty of time, but I need to not forget. We're definitely entering into conference season. Yeah. Yeah. We'll see entering into conference season. Yeah. Yeah, we'll see how all that goes. It'll be interesting. I talked to some folks who went to ACCU
Starting point is 00:01:51 and they seem to have a good time. That's good. That's good. Yeah. All right. Well, at the top of every episode, a piece of feedback. We got this email from Joe saying,
Starting point is 00:02:01 hey guys, I think a good guest for the podcast would be Joel de Guzman to talk about his Elements GUI framework project. I really think it's important for the future of C++ for there to be an alternative to Qt that is permissively licensed, doesn't use code generation, and that uses modern language idioms. This could be it, so we should encourage
Starting point is 00:02:18 its growth and adoption. Anyway, keep up the good work. Podcast is great. So thanks, Joe, and thanks for the suggestion. I did ping Joel on Twitter, so hopefully we'll be able to set something up the good work. Podcast is great. So thanks, Joe. And thanks for the suggestion. I did ping Joel on Twitter. So hopefully we'll be able to set something up with him soon. That's interesting because I just did a bunch of research looking for modern C++ GUI frameworks. And I did not come across that at all.
Starting point is 00:02:36 I think it must be fairly new because I certainly had not heard of it prior to getting this email from Joe. Oh, it looks pretty. It does look pretty. I'm curious what's the reason to not want code generation to be involved? I'm curious why Joe is not a fan of that in your GUI framework. I've gone lots of rounds with this
Starting point is 00:02:58 because I've brought up Swig many times on the podcast before. That's a code generation tool. Sometimes code generation is amazing. Sometimes it just feels like it's always getting in your way. I don't have any, if someone says I want to remove code generation from my build system, I'm going to say, okay, based on my experience. All right. Well, we'd love to hear your thoughts about the show. You can always reach out to us
Starting point is 00:03:17 on Facebook, Twitter, or email us at feedback at cppcast.com. And don't forget to leave us a review on iTunes or subscribe on YouTube. Joining us today is Diana Christina. Diana is a design engineer at Intel, currently working on the timing model of FPGAs. She spent a few years in the academic world studying the combinatorics of infinite structures after completing her PhD in mathematics. She continued to learn every day, focusing mainly on timing analysis and C++ development. She's on the board of directors of CBP Toronto, a non-profit organization that provides an open, inclusive, and collaborative place where software developers can meet and discuss topics related to C++ software development. In her free time, she enjoys swimming and playing the ukulele.
Starting point is 00:03:54 Diana, welcome to the show. Hi. Very happy to be here. Not very many people that I know play the ukulele, so I just feel like I want to... Oh, cool. It's a fun instrument. Like you can carry it anywhere. You know, a guitar just feels gigantic to me right now. Do you ever travel with it? I did actually.
Starting point is 00:04:16 I did travel. I have a nice backpack. So it's pretty easy to bring it on board. When you said you can bring it anywhere, I just had this mental image of you hanging out at a hostel playing the ukulele with your friends. It seems like a great way to do that. That's true, that's true.
Starting point is 00:04:34 Yeah, well, actually, my hostel years, during those years, I did not have an ukulele, unfortunately. Also joining us today is Stephanie Brenham. Stephanie is a 3D team lead programmer at Ubisoft Toronto. She most recently worked on Far Cry 6, which was the winner of the 2021 Navigator Awards for Outstanding Graphics. In a role, she's responsible for the visual fidelity and performance of the graphic systems in games.
Starting point is 00:05:00 Prior to joining Ubisoft, Stephanie spent six years at Autodesk and brought programming leadership to Maya, an Academy Award-winning software application used in movies like The Matrix, Monsters, Inc., and Avatar. Stephanie is passionate about the importance of high-quality code and helping programmers write it, as demonstrated at GDC 2022 in her talk on hybrid ray-traced reflections. In 2021, she was named to the Game Awards feature class, which recognizes the inspiring individuals who represent the bright, bold, and inclusive future of video games. Stephanie, welcome to the show. I'm super excited to be here.
Starting point is 00:05:30 This is something that it's fantastic, I just want to say, to have for the community, particularly, you know, this is before the pandemic, but I've really been seeing that during the pandemic, having a place where people can talk shop and these sorts of things. We talk about conferences and that's really been missing. So I'm super excited to be here. Thank you. Thank you. I appreciate that. I am curious since you worked on, let's see if I get this right. You worked on Maya when it was an Academy Award winning application. And when we've talked to, I think one or two other people who were involved in that side of the Academy Awards for software, basically, right? Do you have like a little Oscar yourself? I did get to hold Oscar, though. They brought Oscar back. Oscar is much heavier than you would anticipate. So I think if a motion capture of everyone holding Oscar would be, oh, got it. And I got, you know, photos with Oscar
Starting point is 00:06:28 and all of that good stuff. But yeah, it was really exciting. You know, Houdini's also got one now. It's really a testament to how much people have been using and pushing the software that people can create great things. I think of myself as in the bathroom reno, I'm a plumber. And to see that the look on the face of the customer when they come into the room, I got nothing to do with that emotional reaction. But if the toilet didn't flush, they'd be really pissed. And so it's nice to know that the washroom works so well, it won an award. Wow. I think you should 3D print one or something and put it on your shelf.
Starting point is 00:07:10 Maybe make yourself a mini one. Yeah. So, but yeah, it's been kind of cool. All right. Well, Dan and Stephanie, we got a couple news articles to discuss. Feel free to comment on these and we'll start talking more about CPP North
Starting point is 00:07:25 and your involvement in the conference. Okay. Sounds good. All right. So speaking of conferences, this first article we have is an announcement that Pure Virtual C++ is coming back again this year. This is Microsoft's C++ all virtual conference with a very clever name. Cybrand has organized, I think for two years, this is going to be the third one in a row. Is it the third one? I thought it was the second. I was lost track.
Starting point is 00:07:51 I think it's the third. You're probably right. Yeah, I think it's the third. Yeah. So this will be April 26. Obviously, you don't need to like pay any sort of fee to attend this one. You just log on on April 26. And there are going to be content on C++23,
Starting point is 00:08:12 modules, static analysis, embedded, and more. They don't have a full talk list yet, but I'm sure that'll be up soon. Yeah, I think this is really exciting to have this sort of variety of content available. You know, it's so clear that not everyone learns in the same way and having as a conference that can be on demand you watch the videos makes it more accessible it's free you know we want people to be able to get those sorts of things it's not in competition at all with the other conventions you know because it is addressing, you know, video on demand or perhaps you take the day and you're learning that way. I'm really excited to see this sort of thing making accessible for people. It means a lot to me that the barrier for entering as a programmer is not that
Starting point is 00:09:01 you didn't happen to know the right people who could give you the leg up. So it's really cool. Just have to have a fast enough internet with the video on demand you download it maybe yeah it will all be on demand afterwards if you don't get to uh attend into live yeah exactly that's true yeah i actually did look at briefly at one of the talks in 2020 that was about optimizing your setup for working from home. And then it brought me back to day one when I had to. Beginning of all this. Right. Yeah. So it was like, oh my God, at the beginning, I really wanted to keep going to the office.
Starting point is 00:09:39 But now, like, I have such a good setup. And luckily we have the flexibility to stay at home. So that's nice. Well, I also think there's a certain amount of emotional inertia that comes with. I think as programmers change is something that as a general trend, I don't mean this is all programmers by any means, but as a general trend, you know, we like it more consistent. That way our brains keep flexible for
Starting point is 00:10:05 the different ideas I don't know if how that balances out but in my brain it does and so when I started going back to the office it's because as a team lead I wanted to already be comfortable because I was noticing I was feeling a little bit uncomfortable it was out of the ordinary it was this and I only go couple of days a week or three times, but I'm like a little kid. I get excited to leave the house. Yeah, there's pluses and minuses for these things. Like I know I still miss the cross-pollinization of talking with people that are out, like right now, unless they're in a regular meeting I'm in, or there's somebody that I make an effort to contact, you can still do it.
Starting point is 00:10:46 I mean, I fully support people working from home if that's how they work best. I encourage people to experiment a little bit more. We're all kind of, we're all still in the pandemic where things are uncomfortable and things are like, you know, experimentation is not really that feeling that great right now, but I encourage people to keep an open mind. That's me, at least. That's why I like this Pure Virtual C++, for people who aren't up for a conference, because it's a real transition. It is, yeah. Right? I mean, I'm super excited about a conference. And I've actually been talking with people about how excited they are for conferences coming up, because there's nothing quite like being able to talk about the talks you've been seeing with other people and then help you process and get their other perspectives. And also conferences have been noticing that when
Starting point is 00:11:38 it's virtual, people don't absorb the same volume of information as a trend. They'd have to cut down on the content that's being presented. As I said, I support the, you know, neurodiverse community that we have, that we have the diverse ways of learning. But yay, conferences! All right. The next article we have is an update to WX Widgets. Version 3.1.6 has just been released.
Starting point is 00:12:08 We were talking about it just before getting on, because we use Audacity when recording the show, which is built with WX Widgets. You know, it's good to see that team putting out new updates. We still need to do another WX Widgets show. We do, very badly, yes. We need to do another one. So if you're listening to this,
Starting point is 00:12:26 feel free to reach out to us. We'd love to have you on again. We had an unfortunate technical problem with the last WX Widgets episode that we did. Audio quality was not as good as it should have been. So it's been on our to-do list for two years to redo that episode, I think. Who did you have from WX Widgets?
Starting point is 00:12:44 I mean, the main maintainer. It was just unfortunate that we had bad audio calls. Yeah, it was just a bad connection that day. From looking at the release, it looks like he'd be a really good guest to have again. You know, it's funny in games, cross-platform means the different consoles, and that doesn't come with GUIs.
Starting point is 00:13:00 But in Maya, that's Mac, Linux, Windows. And so I know how painful it is from the GUI side about that support. And I was taking a look at their framework. They have some really great things, so key that they have the Unicode that they're adding. It's the big little details like undo and redo in the text boxes. That's life-changing for some apps to get that. For people who are using your software frequently, that sort of detail, that was something that I really got from working on Maya. It's career software. People make a career from using it. And if you take something down from 50 clicks to one click, they do that workflow once a month. They do that workflow several times a day. You're a hero.
Starting point is 00:13:58 Yeah, it's huge. So they even have a roadmap. It's not entirely entirely filled out but it is for a next iteration filled out ideas for if they get more sponsorship very transparent it's uh yeah i'm interested that's really cool yeah it was cool to see that audacity uses it for its goey because it's a pretty nice one right and wx which has been around a really long time now. It just keeps plugging away. Yeah. That builds confidence because then you know it's not like a passion project
Starting point is 00:14:31 but the passion dies. That happens sometimes. It was actually the first cross-platform GUI framework I worked with. So it was 2002 when I first used WXWidgets. That's cool. Yeah, it made me feel old. Thanks. Well, that's what we're here to do, help you. Completely random off topic aside, but I was just playing board games with some friends when I
Starting point is 00:14:55 realized that I first played Settlers of Catan at approximately the same time my friend was born. Oh, wow. friend was born oh wow okay so playing jackbox with friends online pandemic you know and then there's a mini game where you have to use a dial up a you know rotary phone oh and i have an advantage because i've actually used them like finally an advantage so yeah I have used those too. And then the last thing we have here is a post from the Apple Developer Blog, and this is getting started with Metal CPP. I'm not sure if we've ever talked about Metal, but I think it's like Apple's newest graphics framework. They're trying to move away from OpenGL. Yeah.
Starting point is 00:15:46 So now you can use Metal with C++ instead of relying on Objective-C. It makes a really big difference for integrating it into your application for games. And that's where graphics is really being pushed. That's where so much is being driven in development for needing to be able to go down to the API level where you're adding features that you can't just get out of the box out of other places.
Starting point is 00:16:11 A lot of that comes from games and we're not using Objective-C. That's a very old and the other one for integrating it in would be Swift, which is too high level for the performance needs. You can integrate in using the Objective-C framework to C++, but it gets messy and it's not fun. I'm kind of surprised it's taken this long for the C++ alternative to come out because, yeah, Metal's been around for years and you would think that video game engines would be kind of the main yeah but apple dumps all the resources into swift and objective cc stuff i mean and to be fair there's a bit of a cold shoulder from the games community for a lot of mac stuff it's very windows heavy in games as i mentioned cross-platform in games. As I mentioned, cross-platform in games means PC, PS, and Xbox.
Starting point is 00:17:10 You have to remember there's a different meaning for cross-platform. So I'm not that surprised. But at the same time, it's like, well, you're not really going to be encouraging adoption without it. They've been investing in their metal they have this really cool shader debugger it even allows you to you know as you're going through loops to set drop down to set where it is in the loop so you can look at the data based off that information so yeah it's it's good to see that addition. That's cool. Have you used it, Stephanie?
Starting point is 00:17:48 I have not used it since I've been back. So I haven't used Metal. I have done Xcode. You know, I'm not surprised they've got the shader debugger. Mac really approaches development from the holistic perspective. It's much more of a dream, for example, when you're looking at HDR, which is obviously within reach of people now in terms of TVs.
Starting point is 00:18:12 So it's actually a full pipeline. You need to be able to have control over that information. It's like trying to repaint a painting each time. And if you don't have the right paints, it's going to look a little bit different. So the next time you pass it to the next point in the chain, a little bit of information loss. We all know quantization, floating point error. When you throw in the additional layer, that information is lost because it's not capturing the color information correctly. That's all taken care of for you on Mac.
Starting point is 00:18:46 When it was on Maya, I'd be like, oh, Mac. All right. So let's start talking about CPP North. We've mentioned the conference a couple of times over the past year. I think when we had Kate Gregory on, we definitely mentioned it. How are you both involved in the planning of the conference?
Starting point is 00:19:06 So I met the rest of the planning committee at C++TO. That's the Toronto user group. Jason Walter and Mike Dahl started the user group back in 2019. The vision was to ultimately have a conference here in Toronto. Yes, I went to the user group. I met Mike, Jason, Natalia Liebenson, Kate Gregory. And so Mike and Jason said, well, actually our plan is to have a conference. You guys want to join. They all want to join and here we are.
Starting point is 00:19:39 Yeah, in fact, the initial plan was to have the first edition of CBP North in July 2021. But that was not an option. Yeah. So what is your role with the conference? Yeah, so I'm in the planning committee. Yeah. And so what I do is I work with sponsors, help promote the conference.
Starting point is 00:20:03 And like there are a lot of things to come on the week to week because there are lots of moving parts. But yeah, that's what I am doing right now. Okay. And how about you, Stephanie? I've known both Jason and Mike a long time. I go back from, you know, before Alias Wavefront was purchased by Autodesk type of way back and i actually was going to be speaking at one of the user group i was first contacted by diana through that but it was going to happen april 2020 and it didn't yeah it was like right at the we were like exchanging emails, like, yes, let's continue planning. So that, and I didn't stay in close contact with the user group at that point.
Starting point is 00:20:52 But I'm, you know, I'm in contact with Mike, and I found out about the conference coming. I wanted to help. And so you said, well, actually, I'd love to put together a game dev workshop. And so with Guy Davidson, who there's a lot of close alignment from in how we approach development from both Guy and myself. It means a lot to us to add the craftsmanship to it, the excellence. We feel that I think it's really important to differentiate the nomenclature of programmer versus software engineer about things that need to scale over time, that need to be maintained. And that's what we're involved in. both Maya and almost every game has a large code base. You need to have techniques for dealing with that.
Starting point is 00:21:51 And also, Gaia and I, it means a lot for us that, as I mentioned before, the barrier is not about whether you have the right connections or that you've managed to get in with your professor. It's that you have the brains, you learn, you're eager, you jump in. Those are the people we want. Or maybe even just need a little encouragement. Somebody to make a bit more of a connection for them, set the spark in the same way that I didn't know I was going to be going to computer science. I just took a course and the fire went wild. So I was like, you know what? Let's do this.
Starting point is 00:22:33 Let's jump in. I've been really lucky to have people like Mike Dahm, now Guy Davidson, but other people that I've been able to discuss things with and deepen my knowledge and highlight. Like, I really love the quote from, I'm going to get his name wrong, Bjorn Strøsup. Bjorn Strøsup. Thank you so much. I mess up words in English too. I've been speaking it basically all my life. But, so please don't take it personally, Ethan. But yes, C++ is a smaller, leaner not going to fit. It's about pulling out the right information to focus on
Starting point is 00:23:26 so that you can make it work well together and getting it and have it resonate in terms of you see it, you understand it. The comments aren't explaining what it's doing. It's saying why it's doing what it's doing. You know, things like that are, you that are small little details I mentioned off the top of my head, but a lot of it goes into the approach and the philosophy of development and games. You need to get the performance and that's not just games. It was in Maya. It's in other applications that's why you go to C++ so I was super excited to have an opportunity to kind of put into words as a team lead and as why I've got future class I'm a mentor I talk with students I talk to new graduates putting it together actually will make it easier for me as I'm talking with others as well because I I've prepared it. I've got phrases that resonate,
Starting point is 00:24:26 help people learn better. Yeah. So you and Guy are giving workshop, right? You said, how many workshops are there going to be at the conference? We have three workshops. So Stephanie and Guy, Rainer Grimm, who I saw you had on the podcast,
Starting point is 00:24:42 maybe last episode. So he'll be giving a workshop on concurrency. And Patrice Roy will be giving a workshop on generic programming. So if you want to see Rainer in person, this is the chance to get an in-person training with him. And we are giving low latency with high excellence for... Ah, thank you. Thank you for our game dev.
Starting point is 00:25:08 I see what you did there. Thank you. I was particularly pleased when I came up with that one. As I was mentioning, it's about accelerating those skills to pull out the things that are relevant and also understanding, you know, you can have all of these tools, but you want to understand why it makes more sense to use a hammer at this point than it does to use a screwdriver and giving quantifiable methods for making that choice
Starting point is 00:25:38 based off of the context. So, and on top of it, I mean, like, so one of the other really awesome things is when you can learn from people who love what they do. And being able to talk with Guy about all these different aspects, what's the best way to present this information or prevent people from doing things that might be something as well. You're not going to get monotone from Guy and myself. And that's part of it. It's the joy of it. It's the moment where you feel it coming together. And to be able to bring that more for people so that they can have conversations with other people as well. That's the point of this, is that we get better together. And so Guy and I really are in sync on this. And so it's been a really good experience to be able to talk about these things and laugh about these things with Guy.
Starting point is 00:26:45 And I can already tell from our interactions with you and from the years that I've known Guy that this is clearly going to be a very quiet, subdued, boring class. Yeah. Yeah, exactly. So it's a very lighthearted, but being lighthearted doesn't take away from the excellence. And that's what I love about talking to someone like Guy, is that you get a sense of lighthearted because you're getting to excel at something. Because you're seeing the way to approach it and you can start talking about that with other people and what I also like about doing this with Guy is not no one person has all the good ideas and I think that comes through with the material that we're putting together which is we've had different experiences it's not just game dev it does go beyond game dev I can speak to that he can really speak to the history of game dev,
Starting point is 00:27:46 the 30 years of game dev experience that he has. And I can speak to it from not just in games, from outside of games, from approaching these concepts at different points in my life. With and without the internet, stayed home with my kids for six years and then came back to be a professional programmer again.
Starting point is 00:28:06 What a difference it means to have the additional training. Because you can get everything on the internet, and that's actually part of the problem. So you can get everything on the internet. And to be able to speak to people who have been able to achieve excellence and are now curating the things for you is, I mean, I'm going to buy a ticket. I'm going. I'm there. Yeah. Yeah, having that really focused look, it's really like something that you cannot just get by looking it up online.
Starting point is 00:28:47 Hey, everyone. Quick interruption to let you know that CppCast is on Patreon. We want to thank all of our patrons for their ongoing support of the show. And thanks to our patrons, we recently started using a professional editor
Starting point is 00:28:58 for CppCast episodes. If you'd like to support the show too, please check us out at patreon.com slash cppcast. Well, it sounds like you have a really strong workshop lineup. Can you tell us more about the rest of the program? I think on the website right now, you do have a couple keynote speakers listed. Yeah, that's right.
Starting point is 00:29:18 So we have currently Shan Parin, Kate Gregory, and Titus Winters. This is all thanks to our program chair, Connor Hoekstra, who has really set us on a path to having great content. Yeah, so those are keynotes. We likely have a fourth keynote for closing on the last day. And yeah, so we'll soon be posting a preliminary schedule. Yeah. When do people who submitted their talks get notified if they were accepted? Oh, I'll have to check. Oh my god, I didn't check that before the podcast. But it will
Starting point is 00:29:51 be soon. It will be soon. And the date is there on the website. Okay. I'm hoping to attend, but I'm waiting to find out if I've been accepted. Oh, right, right, right. Yes. You'll be hearing soon. Asking for a friend. Yeah, yeah, right, right. Yes. You'll be hearing soon. Asking for a friend. Yeah, yeah, yeah, exactly. Yeah, right now, the conference planning is going well. So actually, right now, Early Bird is open until April 16. And also share a code with CppCast listeners. Oh, wait, April 16th is early bird.
Starting point is 00:30:26 So this episode will air after the early bird has expired, unfortunately. But actually... Okay. But we have a code for CppCast listeners. So you all can use CppCastNorth. That's all caps. Yeah, so you'll be able to benefit from the early bird price
Starting point is 00:30:47 until April 30th. Oh, okay, very good. Yeah. So that'll give our listeners at least a solid week after this airs to just, yeah. Yeah, and also one more thing is that we are also taking
Starting point is 00:31:00 volunteer applications. So anyone who's interested can go on our website and fill the form there. I've heard almost exclusively good things about volunteering at a conference because you get free access to the conference. Are you paying for travel for volunteers?
Starting point is 00:31:17 We are not because, yeah. Most conferences don't. I'm just asking just for the secondary listeners here. We hope like in future admissions, where we get a little bit bigger than we could. But yeah, for now, I think most of our volunteers will be coming from nearby. So if you're nearby Toronto and interested,
Starting point is 00:31:36 I strongly recommend that you sign up as a volunteer just for the sake of our listeners here. Like I said, I've only heard good things. I prefer to go as a speaker, not as a volunteer, but I should go as a volunteer one year. I should do that for CDPCon. Anyhow, what's the general structure of the conference? You mentioned the workshops, but how many days are they?
Starting point is 00:31:57 How many days long is the entire conference? First, we have workshops. That's July 17 and 18. That's full days, two full days. So that's Saturday and Sunday. And then the conference will be the following Monday, Tuesday, Wednesday. So three conference days.
Starting point is 00:32:17 Talks will be 60 minutes long and we'll have keynote at 9 a.m. and then we'll be finishing at 5.45. Yeah. And this is fully in-person? Is there any sort of hybrid element to the conference? It will be fully in-person. Yeah.
Starting point is 00:32:30 And we are really excited about the venue. It's right downtown Toronto. So at the heart of the city, you'll get to enjoy beautiful July weather in Toronto. We all pay for it in the winter. But you can just come here and enjoy the wonderful weather. And there's a lot of really good stuff to eat around there. Exactly. Yeah, you'll be, you know, right next to sports venues, cool restaurants. You can visit the Toronto Island.
Starting point is 00:32:59 Really, we're excited about the location. I've never actually been to Canada, so it's another reason I'm hoping to attend myself. Yeah, you know, first I came to Toronto for a conference. This was back when I was in academia. And then I was like, this is a really nice city. And then a couple of years afterwards, I ended up here. That's cool. Yeah, I've been in Toronto almost all of my life. I came from Montreal. My dad got a job change, so it's decidedly home for me. But yeah, just because I'm biased doesn't mean I'm wrong. I think it's an awesome city. I agree, especially in July.
Starting point is 00:33:43 I'm an odd one. I love the snow. I love the especially in July. I have an odd one. I love the snow. I love the change of season. Okay, of all things winter, the snow is the best. Right. And then I love the change of season, so I don't get bored to it, with it. All those shoulder seasons are really funny here. It's not that there's no smooth transition. It's just kind of,
Starting point is 00:34:07 we put in like random things that generally eventually coalesce towards the change in weather, be it summer or winter. That's how we kind of get it. So we're in the phase where it's like, it might be 10 degrees. It might be minus 10 degrees, which in Celsius, I should say. Yes, we figured that out. That's like when my parents say, hey, we want to visit in April. What's the weather going to be like? And I said, I mean, it's blizzards or it's hot and sunny. I don't know. There's no way to tell you this.
Starting point is 00:34:45 That's, it's the exact same. I also agree with the change in seasons aspect because when people around here complain, I don't like the snow. I'm like, it's snowy season. It's supposed to snow. You can just go somewhere else. You know, besides the fact
Starting point is 00:35:04 that we get most of our moisture as snow, so if we don't get snow, then the rest of the year has a problem. I'm in Denver. It's a high desert. Almost all of our moisture comes in the form of snowpack in the mountains, and then it melts and feeds the rest of the state, basically. Yeah, exactly. Enjoy that water and feeds the rest of the state basically yeah exactly be like yeah enjoy that water and enjoy the snow so yeah it's good stuff well there's not too much more to talk about the conference right now maybe we could just talk a little bit more about the two of you and your
Starting point is 00:35:39 backgrounds diana could you tell us a little bit about your work in FPGA development? How you got into that? I probably should give a little bit of a background on FPGAs. Yeah. So yeah, so an FPGA feed programmable gate array, that's what it stands for. It's a device that has an undefined function at the time of manufacture. And it is programmed on the field. So a big part of the product is the software that is used to program the device and to verify that it will function as expected. Part of that verification is making sure that data can be reliably transferred from one register in the device to another register
Starting point is 00:36:17 and also in and out of the device. So in that verification, that's where the timing model for the device comes in. And yeah, I specifically work on the timing model for the device and I came into it kind of on a non-standard path. So I started, as you can probably imagine from my background, so I started analyzing the estimates generated by the timing model and how they correlated with silicon measurements. So to me at that point, the model was a black box.
Starting point is 00:36:52 And then I moved on to the other side to do some analysis on the data, on data that is used as an input to the model. So it was kind of, I came like kind of to the world of FPGAs, kind of circling it from the outside. Yeah. That's cool.
Starting point is 00:37:09 To clarify, when you say you work on the timing model, so do you work for an FPGA manufacturer validating the FPGAs, basically? Yeah, so I work for Intel and we manufacture FPGAs, yeah. And also develop the software used to program it. So your role is in making sure the FPGA is performing correctly. Yeah, that's right. To make sure that we can actually verify that it will function correctly. But if we, right, so if a customer programs the device and we have to say, yes, it's going
Starting point is 00:37:42 to function as expected, like, you know, signals will be traveling and arriving at the right time. And does your validation tools, does that work in C++? Yeah, so actually the data analysis that I was doing initially, that was all Python. Okay. But once I started working inside the model, then that's all C++
Starting point is 00:38:05 Something that's been in the back of my mind for 25 years or so is that getting into that kind of hardware development or playing with FPGAs I remember interviewing at a company that worked I don't know if it was FPGAs, a similar technology but 25 years ago I did not end up accepting that job and a part of me always kind of wishes that I had worked, I don't know if it was FPGAs, a similar technology, but 25 years ago. I did not end up accepting that job.
Starting point is 00:38:29 And a part of me always kind of wishes that I had. I don't think the company exists anymore. Maybe it wasn't a bad move. Or maybe it was acquired by someone. Yeah. Yeah, yeah. And Stephanie, could you tell us a little bit more about your background? Obviously, we talked a lot about what you're currently doing in games and how that's going to lead into how you do the workshop.
Starting point is 00:38:50 But you started with Autodesk. How did you make that transition? So I actually started with a startup. So the really cool thing about startups is if you have a passion for something, you can often end up doing it because everyone else is busy so how about you do this and I didn't study graphics in school and I felt like I'd kind of missed the boat but then I was working at the startup home project calm so a little while ago there was it was
Starting point is 00:39:21 at the end of the dot-com bubble. They were trying to change their name, but I come from that. When they were closing down, Alias Wavefront was hiring. That's how I got into working for a larger shop, a larger place. It was tremendously exciting to go to a place where they can hire for excellence to be around other people who are really interested in the craftsmanship, as I mentioned, of the work that they're doing. And it was this natural progression for me to go and continue with the graphics. And at that time, it was CPU graphics. The cool thing is I was in developing software for film and VFX at a time where ray tracing
Starting point is 00:40:16 and physics-based rendering was all the rage. And now I'm in games where ray tracing and physically-based rendering are all the rage. So now I'm in games where ray tracing and physically based rendering are all the rage. So everything old is new again, but now it's on the GPU, taking advantage of, it is the extra power, but the different way that it processes things.
Starting point is 00:40:38 And that's kind of the mental shift with it, which is really enjoyable. A lot of it is figuring out how to move things to the GPU and be able to process in that different way. I can go into CPU, GPU sorts of things if you're curious about how the different. So with the CPUs, they're very powerful. They're much more multi-purpose than GPU. GPU has a lot more specialized hardware on it, and it's really built to be a factory with the idea that, for example, the register file is much larger so that you are meant to put more information on the register, make it available to things come in waves, about 32 or 64, depending on how the hardware is organized, with the idea that you're working in lockstep. All of these machines are working in lockstep. And if one little machine gets paused because you have to grab something from memory or the branch
Starting point is 00:41:39 deviated on just even one of them, everything's taken off and there's a new wave in flight. It just keeps going and it just keeps processing. And so it's about taking the mental model to how do you handle things in volume and in lockstep to keep things going. It's all about occupancy. It's all about, are all of the machines in the factory pumping away? Obviously in CPU land, we're interested in that, but it's not the same problem of if even just one little divergence, things get pushed off to the side and it affects all of our occupancy. So it's a different way of approaching problems, about breaking it down. Thinking also about this mental shift, I feel like if I were you, I would have had a mental shift of going from, well, sure, it's okay for it to take a week to render a frame because it's on the supercomputing cluster to 30 to 60 whatever frames per second.
Starting point is 00:42:42 Absolutely. I remember on Maya, we were talking about the difference of improvement it is for our customers for different features. If it's a feature that is only used on render farms, who cares if it takes another five hours? They just add another three machines and it's fine. As long as it renders out overnight or over the weekend, you're good. Whereas if it's something that the customer is interacting with during the day and they're sitting at the workstation, then you can't afford to have it take another five hours. So it is a very different model for thinking about that. You need to be thinking about budgets. You need to be thinking in terms of performance also with consoles you know what you're getting into you or you're able to inspect the hardware
Starting point is 00:43:32 ahead of time you know actually pc is a little bit more wild and woolly in terms of graphics things that can happen because we get affected by if the driver's not up to date for the card, if the card is different. There's a lot of factors not under the same level of control. It's a little bit like Mac versus Windows or iPhone versus Android in that Mac has this really lovely holistic ecosystem for you that they try and put a lot of controls in there for you. Similarly, the console is geared to playing games. You're not going to be interrupted by having to print something, although not many people print these days. It's what came to my mind. I'm from that era.
Starting point is 00:44:24 So it is a real shift going to the GPU. I've been loving it. If I ever stop being curious about something, don't bother checking my pulse. I'm already dead. I'm curious if you could just discuss just for a minute, because you say that you gave a talk at GDC 2022 on hybrid ray traced reflections. Yes. Can you give us the like elevator pitch or whatever version of that? I would love to. I'd love to try. So let's give it a shot. Ray tracing is all about simulating the way light moves. Well actually instead of the light traveling to our eyes, we trace the rays that would be as if they're coming out of our eyes. It's a performance
Starting point is 00:45:10 thing. You know those are the ones that actually matter. So you trace it from the eye. Generally, this is done in world space. And in the traditional fashion of CPU render farms, you have the time to be traversing all of this space and this virtual world. In GPU land, we don't actually have that same level of information. We start off with triangles where we have vertices. And on those vertices, we have a certain amount of neighborhood information, like derivatives, other mathematical information to derive neighborhood information. But by the end where a lot of the shading is done, we're actually just down to pixels and a depth buffer. And so up until now, there hasn't been that same ray tracing, because when you're tracing things through screen space, it's like you're a quantum. I'd like to picture it as, you know, one pixel's up here and then another pixel is from further back.
Starting point is 00:46:15 And you quantum leap between those because there's no information about the virtual world anymore at that point. We had to construct a three-dimensional virtual world on the GPU for ray tracing because we want to care about things that are not visible on the screen. We want to be getting information by things that are not captured by pixels at the point where we're painting, where we're shading. And so the hybrid ray trace part is we're getting information from that's accelerated in this much more limited information like we've just got some pixels and then some like depth like one's closer to the camera one's further from the camera and augmenting it from the full 3d virtual world when we know it's not giving us the right information. When we're like, that's wrong. So we literally keep track of confidence levels.
Starting point is 00:47:13 Be like, we have ways to quantify, be like, I think you're lying. I don't look right. And so that's when we get the information from that 3D world, which is new for the GPU, actually, having these polygons and things like that and triangles. So it's fun. I got to say, I could talk for hours about this, to be honest. So how did that give a sense to it? Sure. Yeah. I've never done 3D graphics programming of any sort. Well, that's not true. I did make a rotating 3D cube on my TI-81 graphic calculator. Right. There you go. Exactly. So it's about adding that extra level of detail for ray tracing because we can't throw away the information that we were throwing away before. Right.
Starting point is 00:48:11 That would be now that I've distilled it. That's my on one foot elevator pitch. Thank you. So it was a really fun talk to do. Was GDC virtual this year? Yeah. Is that online? Could listeners go find a link to that? It's on YouTube. It was hybrid this year.
Starting point is 00:48:30 Some people were in person. A lot of people got COVID. It was a little early, but the virtual was, I mean, it's not the same. It's why I mentioned I'm so looking forward to conferences about having that in-person experience. I did get contacted by people about how they appreciated that I was explaining terms while still discussing advanced topics, making it more accessible. But it's not the same as being able to look over and see how people are absorbing it. Right? Did you go absorbing it, right?
Starting point is 00:49:06 Oh, yeah. Did you go on site, Stephanie? You didn't? No. Ubisoft made the decision to keep people because it was still elevated risk at that point. So they decided when at the time they were making that decision, you know, January, February, things are still pretty iffy. So I wasn't able to go on site. But as I mentioned, I was contacted by people, which was really, really lovely. But you don't get that question and answer period.
Starting point is 00:49:35 Like I by no means do I consider the learning stops when the timer ends. You want to be able to still, as I've mentioned, the whole point is being able to talk with people about these concepts, help them reach a little bit of a different level because you think about them in a different way. So I'm looking forward to a conference. Okay. Well, I feel like we could keep talking to both of you about your backgrounds and the projects you're working on for a whole lot longer, but we're starting to run out of time. Listeners should definitely go sign up for CPP North, especially if you're in the Toronto area. Diana, could you tell us what that registration code was again? Sure. Yeah. It's CPP Cast North and all caps. Yeah. And that's cppnorth.ca, right?
Starting point is 00:50:24 That's right. Yeah. Okay. All rightvpnorth.ca, right? That's right. Yeah. Okay. All right. And when was the conference again? Yeah, it's July. Workshops start July 17th and conference goes until July 20th. The workshops, aren't they July 16th, 17th? Oh my God. They're 16th, 17th.
Starting point is 00:50:43 Let me just check here the calendar. You're right. You're right. I'm so sorry. Yes. July 16th and 17th let me just check here the calendar you're right you're right i'm so sorry yes july 16 and 17 so that's saturday and sunday and conference goes until the 20 18 18 20 okay yeah all right well diana and stephanie thank you so much for coming on the show today thank you yeah thanks for joining us 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 CppCast on Twitter. You can also follow me at Rob W. Irving
Starting point is 00:51:26 and Jason at Left2Kiss on Twitter. We'd also like to thank all our patrons who help support the show through Patreon. If you'd like to support us on Patreon, you can do so at patreon.com slash cppcast. And of course, you can find all that info and the show notes on the podcast website at cppcast.com.
Starting point is 00:51:44 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.