CppCast - CppNorth
Episode Date: April 14, 2022Diana 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)
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,
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.
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
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,
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
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.
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
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
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.
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.
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.
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.
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.
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
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.
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
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.
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,
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
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.
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
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.
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
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.
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,
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?
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.
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.
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
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
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.
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.
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.
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?
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.
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.
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?
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.
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.
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.
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.
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.
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
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,
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,
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.
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
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.
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,
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.
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.
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
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.
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
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.
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
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
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?
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,
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?
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.
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.
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.
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.
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,
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.
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
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
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
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.
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.
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
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++
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.
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.
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
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
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.
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
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.
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
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.
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
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.
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.
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.
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.
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?
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.
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?
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.
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
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.
Theme music for this episode
was provided by podcastthemes.com.