CppCast - CppNorth and the Forgotten Developers
Episode Date: February 3, 2023Mike Daum joins Phil and Timur. After some community news, including the state of modules support in CMake and a new compile-time parsing library inspired by Rust's macros, we talk to Mike about CppNo...rth - what it is, how it got started and what makes it different - then about company cultures, a new language from Epic, and the importance of catering to 'Dark Matter Developers'. News ACCU Schedule and registration CMake blog post about the state of C++20 Modules support P1689R5 "Format for describing dependencies of source files" "Macro Rules" - compile-time parser library from Max Pasichnyk Reddit discussion of Macro Rules Links CppNorth Exclusive Discount code for CppNorth registration (while available) CppNorth mentoring email CppNorth mentoring channel on Discord Orsen Scott Card's Beekeeper Analogy Verse, the new Unreal scripting language Talk on Verse, by Simon Peyton Jones "C++ Software Design" (book) - Klaus Iglberger
Transcript
Discussion (0)
Episode 353 of CppCast with guest Mike Daum, recorded 31st of January, 2023.
This episode is sponsored by JetBrains and Sonar.
JetBrains has a range of C++ IDEs to help you avoid the typical pitfalls and headaches
that are often associated with coding in C++.
Sonar Lint in your IDE helps you find and fix bugs and security issues from the moment you start writing code.
In this episode, we talk about some C++ conference news,
modules support in CMake,
and a new experimental compile-time parsing library.
Then we talk to Mike Dorm.
Mike talks to us about CPP North, the Canadian C++ Conference.
Welcome to episode 353 of CppCast, the first podcast for C++ developers by C++ developers.
I'm your host, Timo Dummler, joined by my co-host, Phil Nash. Phil, how are you doing today?
I'm all right, Timo. I've just got back from a couple of weeks of traveling. If you recall, I was away when we recorded the last episode.
All a bit tiring, so I'm glad to be back. And I understand you've been out and about, but are back
home now as well. So how are you doing? I'm good. I just actually moved into a new place here in
Finland. So we managed to rent a place and actually moved in so things are
still a bit chaotic as you can see behind me um but yeah i have my work home office set up so
everything's good to go so very exciting still drowning in paperwork um yeah it's still ongoing
but um yeah i made progress i have a finished personal identity identity code now and a few other things that are helpful.
I haven't got a bank account yet, but I'm working on it.
They'll make a fin out of you.
All right.
So, well, at the top of every episode,
I'd like to read a piece of feedback.
This time, there's a user who wrote us an email saying,
Hi, guys, it's good to have CBP cast back.
I'm hoping that it will remain the first and the best, A+.
Great, well, let's try to get that to an A++.
It's short and sweet, isn't it?
All right, so we'd like to hear your thoughts about the show.
You can always reach out to us on Twitter or Mastodon
or email us at feedback at cppcast.com.
And don't forget to leave us a review on iTunes.
Joining us today is Mike Dorm.
Mike Dorm lives in Toronto with his wife and five-year-old daughter, Edie.
He has been using C++ daily since 1992 and has been working professionally as an application
developer in C++ since 1999.
Michael is the founder of C++TO, the Toronto C++ user group,
and CPP North, the Canadian C++ conference. Mike, welcome to the show.
Thank you very much. Glad to be here.
I'm a little bit curious from that bio. You said you've been using C++ daily since 1992.
Are you sure you literally used it every single day?
I think I've skipped a few days, Phil.
I don't know
how to phrase it. Basically, it's been my
main squeeze
since 1992.
It's been on your mind every day.
It's been on my mind. It's been my
primary tool. I don't know how to say it.
But yeah,
one might even say
the days i've skipped it were were great days there we go there might be a lesson in that
i'm thinking of vacation sorry i'm not thinking
well we'll come back to that towards the end i think right yeah we'll get more into mike and
his work in a few minutes but before we do, we have a couple of news articles to talk about. So feel free to comment on any of these, okay? The first one is another
conference announcement. It's the ACCU Conference 2023, taking place from the 19th to the 22nd of
April in 2023 in Bristol, UK. Pre-conference workshops taking place 17th and 18th April,
so that's the two days before the main conference.
And the registration for the ACCU conference is now open
and the program is also online.
You can check that out at www.accuconference.org.
The second news item is a CMake blog post
about the current state of C++20 module support. And I thought that was a
really fascinating blog post. It kind of really summarizes very well where we are with module
support and CMake. So they describe why C++20 modules are tricky to get into CMake in the first
place, like why it took so long. So basically the thing is that if you want to compile
a program that involves C++20 modules,
it's now important in which order you compile them, right?
So previously, if you had translation units,
separate translation units,
it doesn't matter in which order you compile them.
You just link them together at the end.
With modules, they have dependencies.
So you need to compile the modules first
before you then compile other modules and CPP files
that potentially depend on them.
So you have this kind of dependency graph.
And now the problem is, how do you find this dependency graph
if you're a built system like CMake?
Well, it turns out you kind of have to pass the C++ code
to figure out where your modules are in order to do that.
So they did that with Fortran, which has a similar module system.
They did that ages ago, and they actually built a Fortran parser into CMake in order
to do that.
But with C++, it's a little bit more complex.
So they said, well, we don't want to have a C++ parser built into CMake.
That's kind of a bit ridiculous.
So what else can we do?
So there was this proposal that we discussed actually
on the committee a while ago, P1689,
which defines a way in which you can ask your compiler,
what's the dependency graph of this program?
And you get a JSON file back that describes you,
you know, what the dependencies of your modules are.
And it turns out that now actually all three major compilers support it.
MSVC, GCC.
For GCC, it's like on a branch.
And for Clang, it's like a tag.
And I think MSVC actually supports it in the release version now.
And so CMake now can talk to all of those three compilers
and ask them under the hood,
hey, give me this JSON file describing the modules
and dependencies.
And then it can use that to compile your program
with modules.
And so you have to kind of use target sources
and you have to use file set type CSX modules
to list all the modules and stuff.
But in the blog post, they have example code
for all three compilers.
Like, here's how you do this with CMake today.
They call for people to try it out
and report any issues.
So I thought this is like a really major step forward
because you have had C++ modules in the standard
since like almost three years now,
but they haven't really been widely adopted
because the most widely used build system
hasn't supported it.
So it's really exciting to see that there's now significant progress
being made there.
So yeah, I thought that was really cool and really interesting.
Yeah, but my main takeaway here was that there's quite a few different pieces
that needed to have been in place before we could do this.
So you could say that solving dependency management,
that we have to solve dependency management first.
Right. Yeah. Yeah, I guess it's a bit of a chicken and egg problem.
You know, I remember when modules was being debated. I think dependency scanning was a major issue at the time that was talked about. I have a vague memory of a late-breaking paper
that severely restricted the import syntax
in the hope that you wouldn't need a full C++ compiler.
Do you guys remember if that got merged in?
I'm pretty sure that was in the final specification.
I haven't read this article. I will admit to pretty sure that was in the final specification. Okay.
I haven't read this article, I will admit,
to see whether that was taken into account,
but I'm guessing it wasn't enough.
Even a cut down C++ parser
is still a cut down C++ parser.
Oh, yeah.
Now, getting the JSON spec is, you know, that's ideal.
Yeah, if you could ask the compiler to do it for you,
then that's going to be better.
Right, and then there's another news item,
something that I saw actually on Reddit
but that really caught my attention,
which was actually just a link to a tweet
initially.
But I found it so intriguing that I kept digging.
So it's this
person, I hope I pronounced their name
right, Max Basichnik
or Maxim K with three
R's and two M's on
Twitter, who wrote a compile
time parsing library in C++20
called Macro Rules
and it allows to describe your own
domain-specific language
at compile time in C++ and then
parse it at compile time in C++.
So the tweet actually had
a link to Godbolt with like 700 lines
of code self-contained,
like that showed how it works with an example.
But then I kind of looked at their Twitter and they actually have a link to a GitHub.
So there's a full GitHub, it's a library, which is currently under development.
And according to the author, not well tested and not documented.
But I thought that was really fascinating.
So it's basically a compile-time parser,
which the only limitation it has,
it can't inject code in the final source code yet
because you just don't have that mechanism,
but it can create lambdas, it can create types,
it can execute whatever DSL you define,
maybe something else if you can implement it.
So you kind of describe your own syntax
and implement behavior for it.
And it's apparently inspired by macro rules from Rust,
which is the way Rust basically does macros.
I don't actually know Rust really very well,
so maybe you can comment on how this works.
But yeah, it's super cool.
And I thought this was really interesting
to see what you can do with modern CSS.
You can also actually implement reflection uh by parsing current source file using hash embed if and when we get it so um there's probably 20 other things you can do with this library that
haven't yet understood or figured out but it seems like it's it's a of a very very uh it's a lot of potential in this kind
of thing yeah you know it seems almost ironic to me there are there are many threads um many
separate threads trying to find a new way to do metaprogramming in c++ and uh there is something
kind of demonically appealing about having template metaprogramming be the thing that implements the mechanism that ends template metaprogramming.
So we have another close circle.
Yeah, to end all metaprograms.
Yeah, I'm not an expert in the Rust macro system,
but I know they are considered hygienic macros,
which is considered the better
way to do better programming so anything that gets us closer to that is good but i know that
there's a lot of work that was going on on the topic of reflection in general within the the
committee at least up until uh well 2020 i think it's one of the things that really got put on hold
during the pandemic and i haven't
seen it resurface since i don't know if however you two have heard anything about it but there
was a huge amount of interest in it so that the it's amazing that you can push what we've got
already so far and i again i haven't read the full discussion here just uh just going through it but
it's a lot you can do but that big missing piece is the generative part because uh reflection
is consists of the introspection side as well as the generative side so to really make it work so
i'm hoping we'll get more features in the language to support that but in the meantime
this could definitely be something worth worth looking at
all right so um yeah let's um actually, Mike, about yourself and what you do.
So you're here to talk about CPP North, among other things.
Indeed.
Do you want to tell us what CPP North is?
Absolutely.
CPP North is a conference that's held in mid-July in Toronto.
And we're going to have our second year this July 17th to 19th.
And the call for papers is open now
and will be open until February 26th.
So please, please, please submit wonderful papers to our conference
so by the time this episode comes out people will have somewhere around three weeks
to submit a paper just even a bit more yeah lots of time lots of time and and i should also say we
you know we want inexperienced speakers. We want experienced speakers.
We want everybody.
We're offering mentoring on the Discord.
We will pair you up with very experienced mentors.
So even if you just have some notion of,
you have some very vague notion of a proposal
and have no idea how to make it into a talk,
please contact us and come on the Discord and
we will absolutely help you. And if it's not ready for this
year, it could be ready for another conference or it could be ready for CPP North next year.
But please, we want to broaden the pool of speakers and
broaden the pool of voices. So what would be a good way to
reach out to you?
There are lots of ways.
I would say for these things,
we have submissionhelp at cppnorth.ca.
Right.
Or you can come on the CPP North Discord
and go right into the mentoring channel.
And how do I get down to Discord?
I'll give you a link.
We can post it in the show notes
amazing yeah so it sounds like i would be the ideal speaker for your conference because i am
an experienced speaker but um i feel like an inexperienced speaker so you get you get both
for the price of one there so if you're listening to this and you want to make sure that doesn't
happen then you need to submit your your tools just to make sure I don't get on the program.
I fervently hope that we will have you on the program, Phil.
Well, we'll see.
Yeah.
Back in your bio that we read at the start, you said that you founded CPP North.
So was that your idea originally?
How did it all get started?
It's hard to remember it's you know it's it's a bit like watching a ball roll down a hill i you know i i had a feeling
for a very long time uh you know i worked at toronto initially at a company called alias wavefront
um which is one of these story companies you you know, invented the OBJ format and the dinosaurs in Jurassic Park.
And it was, it was such a wonderful place to work.
And I worked with, you know,
I really had the privilege of working with amazing developers.
Now I'm talking about the early two thousands.
So you could actually know the whole C plus plus or at least think you did. Anyway, through my
journeys, through my career, and as I gained experience, I realized that I was working with
fantastic people. And I did not think that it was well known that such a community existed in Toronto.
Also, we only had each, we only had work to talk to each other. So for a long time,
I had this idea to start a user group for C++. And I just, I didn't really act on it
to the extent that I did. I just looked for a user group. Um, didn't find it. I eventually
found one, but it was defunct. So now I spent a year or two, um, trying to contact the, the
owner of it, um, of this defunct group.
And I, you know, I felt I knew Kate because I was on, you know, I was on the Include Discord, Include C++, and felt very comfortable there.
And it's the kind of place that makes you feel very comfortable.
And so I just wrote her.
And Kate said, well, I'll send you the information that
I sent the last people that wanted to do this. And, you know, um, so, so she was at least acted
quite surprised when I actually did the things. And, um, then we ended up having a user group.
Um, that user group is currently languishing because i can't find venues post-covid in toronto
which is kind of amazing but but you know we will we will get back to meeting in person
um and i just to be honest with you we met a lot virtually over covet and uh I got tired of it.
I got tired of the Zoom.
You're not the only one.
On the other hand, the content we had during COVID was amazing.
We could invite people and all they have to do is turn on their computer.
Lovely. But I'm ready for the challenge of in person. Um, anyway,
one thing that came out of our thinking when we had, when we, you know, once the user group got
rolling was that, you know, we had, we had a few things we wanted to do and things we wanted to say.
Um, and the, probably the best way to accomplish that was by having an actual conference come out of the user group.
So we founded a nonprofit, not so that we could take charitable donations.
We can't.
But it allows people to have a certain, they can have a sense of comfort if they give you a sponsorship, you know, their stewardship requirements.
So, you know, we have a mission and a vision for the nonprofit.
And it's a little different than other conferences.
You know, one of the ways is that Toronto is a big part of the mission.
Yeah.
So it's not incidentally in Toronto.
It's not a convenient venue.
Part of what we want to do is we want to spread the word that Toronto is a really great place.
And where people are using C++ and enjoying it.
And you should think about visiting.
You should think about coming and working.
So that's one of the pillars. The other pillar is just, you know, I hate the catchphrase, but, you know, diversity, inclusion, you know, I wanted to help create a part of the C++ community, you know, where people of all kinds could feel a warm sense of belonging, you know, where people could, you know, to have a destination where at least there's
this one spot, and of course there are many, but the more the better, where you could come,
whoever you are, and people will be so happy you're there and, and, and they,
you will be a part of it and you will be encouraged and you will be nurtured.
And, you know, I, I felt there was absolutely room for that.
And, and it was something that I wanted to be part of. So that's,
so that's another one. And then of course the third pillar is, is, you know,
promotion of excellent use of C++, you know, and,
and to me excellent use is fun too. So it's also promoting fun, you know promotion of excellent use of c++ you know and and to me excellent use is fun
too so it's also promoting fun you know c++ should be fun well then all steam noble goals
yeah that sounds great i was actually there uh last year um at the first one and i had a great
time um so i'm very much looking forward to being back this year.
Yeah, and speaking of which, Timur,
we are very, very excited that you will be giving us a keynote.
Well, I'm very excited too.
Thank you so much for inviting me.
Oh, yeah.
You know what?
Congratulations on that.
Both of you.
Yeah, I assumed you were talking to me.
You know, the keynote, your choice by our program chair, Eamon Damery, he shared with me a vision for 2023's conference that is a bit of a pivot. Um, and I, and I think you're definitely part of that teamwork, which is, um, you know, we would like the conference to orient itself towards people who are using C++
every day in their jobs, um, or, or, or on their own. Uh, and I don't, I, you know, I,. And I don't want to say that that's not the normal focus,
but I don't want this to be an extension of a WG21 meeting
where you talk about papers in an extended form.
I love that content, and I still do want some.
I want plenty of that content, but I also want content
where you can walk back to your job or back to your hobby project and have new techniques, new ideas, and new excitement that you can use, you know, that night.
Run back to your hotel room and try the thing you just heard about.
That's kind of what I'm aiming for. And
Timur, your talk at CPP North last year was a fantastic example of that, C++ Lambda idioms,
where Timur walks you through, this is what you can do. You might not have thought about this.
And it was just a wonderful journey through what you can really do with Lambda.
Not necessarily proposing anything brand new
for C++26 about Lambdas,
but just here they are right now
and here are some things you might not have thought about to do.
And that to me is absolutely perfect content.
So you finally got closure on that then.
So the fun thing about that Lambda talk was actually that about half of the
techniques I presented there,
I learned as I was preparing the talk and 100% of the techniques I showed,
I learned from other people.
I didn't come up with any of those techniques myself.
Like I learned all of this from other people. And most of them were people at conferences. I mean, there was also some stuff
that I learned kind of just from Googling, how do I do this? Or there's like a book that I read
about Lambdas where I got like one technique from, but a lot of the stuff was, I think there
was one thing that somebody on Twitter posted, hey, here's a cool thing you can do. But a lot of the stuff was, I think there was one thing that somebody on Twitter posted,
hey, here's a cool thing you can do.
But a lot of this came from other people presenting things at conferences.
So I think it's a good point that you're making.
We have conferences, like, for example, C++ Now, where you can go and discuss, I don't
know, all the details of the latest complicated proposal that's going
to be in the standard maybe five years from now um and you know how it's like theoretically
fascinating and and how it affects the design space of the language or whatever but i really
love how you know there's also you know these spaces where you can go and learn about something
about practical about and and what I think is that, like,
you can really benefit from that
regardless of what level you are, right?
So if you just got your first job as a C++ developer,
you're going to learn new stuff.
If you've been doing talks about C++ at conferences
for the last 10 years,
you're going to learn new stuff, you know?
So it's really kind of inclusive of everybody.
And I think that's a really cool mission. That's, that's absolutely the aim and you're exactly right like there's there's there's
completely room for a conference like c++ now um where it's high level library writers committee
members you know really debating fine points of language that's that's a great conference
um it's just not what we want to be.
We want to be a place where people who use C++ get together and kind of celebrate and learn about how to use C++ better.
Yeah, so I guess that's a really cool mission.
There are quite a few conferences these days about C++,
so I guess is this like how you position yourselves against the others
or is there anything else that kind of makes CPP North really special and different?
CPP North does not position itself against the others.
Yeah, sorry, I didn't mean that like that.
No, I think that there is more than enough uh demand i think the more the more friendly
welcoming exciting places to come talk about this language the healthier the language is going to be
um so so no i i don't think about positioning other conferences um if every other conference
was doing exactly what we're doing would i doubt try to be cpp now no this
is the conference that we want to make that you know and and i you know it's not me it's it's it's
me and the board we're we're all uh we have a five people on the board um of cpp north and
we all agree this is this is what we want to do and we do it because this is this is our vision
for the conference we want.
Yeah.
I remember from last year, there's a few other things that I thought was really amazing.
Obviously, you had great catering.
That's something that stood out to me.
Like the food is not always great at conferences, but it was great there.
The location was great.
I loved how it was in the middle of the city.
So it's like very easily walkable you know you don't have to you know take a taxi back through some like empty places to get to your hotel or whatever like um or if you can't afford the hotel i guess you can easily stay somewhere within walking distance
and there's just so much stuff to do kind of just around the place like i remember i went for a run
at some point i think in one of the mornings and you're like within five minutes, you're like at the waterfront there.
And you can like, yeah, it's such a nice place.
Like really in the middle of Toronto.
I really liked it a lot.
And we, by the way, Timur, this year should coordinate because I can suggest running routes that you might not have occurred to you.
Oh, that's amazing.
Yeah, let's do that.
Yeah. And what you're describing, I mean,
the catering, you know, that was good. Yeah. I don't want to say, no, I mean, it appears to be something people really liked. That's not really part of our core mission, but, you know, I'm glad
people enjoy the food. As far as being downtown, being on the subway line,
that's very much tied into our core mission.
We want people to experience Toronto when we're there,
which is one way to do it.
Toronto, I have heard by some metrics,
is the fourth largest city in North America.
And, you know, I have a hard time, you know, I don't know how they measure that,
but it's certainly very large.
And I think it's kind of a sleeper, you know, I think that people aren't as aware of it as they should be.
And when they come, I think they're pleasantly surprised as a result.
So what other stuff is going to happen this year?
So you have a few other keynotes.
You have Kate Gregory.
You have two other keynotes, right?
Is there anything else that's really exciting that people can look forward to this year?
Any secret keynotes?
Yeah, as you mentioned kate gregory you know and and to me you know i would be ecstatic if kate would be the opening keynote every single year um that we saw on twitter somebody questioned
that she's on the board and somebody questioned whether she should keynote two years in a row
kate there is nobody that i would rather have give the opening keynote to frame what we're trying to do.
And, you know, her keynote last year, Am I a Good Programmer?
I mean, it spoke to me at a very deep level.
You know, it's the kind of talk that we need to be hearing lots and lots of.
So I can't wait to hear her again. Um, we've also got, uh, Ben Dean.
Um, and, uh, you know, speaks for itself. I don't, you know, we don't,
as you know, Timur, we don't ask,
we don't tell people what to talk about in the keynotes.
Keynote speakers get to write their own keynotes.
So I don't know what he's going to prepare for us,
but it's going to be fantastic.
And Jessica Kerr is, okay, you are familiar.
Yeah, Jesse Trump on Twitter.
You know, just a fantastic speaker on, I don't know, the human,
can we say the human side of programming?
Also technical things as well.
Yeah.
So those will be the keynotes this year.
That's a great lineup.
I am, you know, it was honestly, you know, our program chair now,
Amon, is handpicked from Connor Hoekstra, who, you know,
he's got his finger in a few pies and just found he didn't have the time anymore.
So he picked David as his successor, and I couldn't be happier.
His vision for the conference, and these were his top four picks.
You know, he gave us a long list, and there were four at the very top,
and we asked them, and they came, so I could not be happier.
As far as CPP North this year, you know, I mentioned the pivot,
you know, you know, and I don't know if pivot's the right, you know, we, you know, it's a bit of
a change in emphasis. I don't know how successful yet we'll be, you know, sort of, you know,
looking outside rather than looking inside. For me, the, you know, I think the focus for me last year was on,
I'm going to say, I'm going to say inclusion, but inclusion in the form of amenities.
So if you need this to be included, we'll provide it. Prayer room, mother's room, quiet room, child care, you know, trying to set the stage.
What I found was that that is not enough.
It's certainly, and we'll see, the jury may still be out because, you know, I do think the word got out that we're trying and, you know, and that these things will be available.
So I think that will show up on its own in year two, hopefully.
But I more than ever, I realize it's not it's not enough to create fertile ground for inclusion.
There are things that you have to do actively um so we're we are trying so hard
right now and again it's it's not easy if it was easy we would have solved this thing um
trying to trying to figure out how to engage um you know historically unincluded communities and
you know and and get people to show up
at the conference. Um, especially when you're not dripping in cash, you know, cash would,
would always help. Um, you know, it, it, it is hard. And so we are brainstorming the mentoring
as part of it. We're reaching out to groups to try to get speakers, uh We'll see. But to me, that's, you know, we now know what to do on site, you know,
and, you know, of course, there are things to, you know, things to twiddle.
But the basics of creating an inclusive space that I think we know how to do that for this year.
To create a diverse space to go out and actually reach people and bring them in,
that's going to be the challenge this year and probably many years.
I can relate to that, having gone through a similar process with C++ on C.
One thing to do all the right things, but if nobody knows about it,
based on what has been going on in the community for for many years and i think all of us are getting better
at being aware of what we need to we need to do and what we need to include but
we've also got to make sure people know that that's going on as well and that could be hard
you have to yes they they have to know absolutely, absolutely. I'm these days thinking about more active things. I
mean, you know, if we had the money, I would almost certainly try to make it even, you know,
forget scholarship, make it free for anybody from underrepresented community. You know,
that's the kind of thing, you know, that you can come, but actually going out and actively engaging people, actively finding ways to bring people into the fold.
I think that's actually going to be necessary, unfortunately.
Just publicity is not necessarily enough, but it has to happen.
Since you're both conference organizers or active conference organizers,
let me throw a curveball, as the Americans say.
Ask you a question, which I think has to do with
kind of inclusivity and accessibility at conferences.
What's your opinion on online conferences versus hybrid versus in-person only?
I know that some conferences are still doing hybrid.
Some conferences, like I think both of your conferences,
have gone back to in-person only.
What are your thoughts on that?
I have some thoughts.
I do too.
Yeah.
It's a hard one.
I can't speak for you, Mike, but I know for me personally,
the in-person aspect of these events is the main thing.
And a big part of wanting to put these events on is to do a really good version of that.
Obviously, during the pandemic, we've had to either move fully online or start to offer hybrid events just to to keep going that's also shown what's possible and answer that question we've always had that you know if we if we made
these things online accessible then all these people that wouldn't otherwise be able to come
they will show up and during the pandemic we saw that so we know that that is actually true
uh that that's not going to go away and now we we've seen that, I don't want to say,
nope, you're not included again.
I think that would be the wrong way to go about it.
For C++ on C, though, doing a hybrid event,
which we tried to do last year, is particularly hard
just because of the infrastructure involved.
So we're still trying to work out what we're going to be able to offer this year.
And I also do wonder whether the whole corner of the market,
if you want to put it that way, is better served with a more dedicated event.
So we have in-person events at locations and then online events,
not tied to a particular location because the location
becomes irrelevant at that point and one of the hard parts about the hybrid event is that crossover
between the in-person audience and the online audience that they're almost like separate events
to just happen to have a few shared talks and other experiences but i think that's going to
take a a bit more,
a few more iterations to get right.
So I'm interested to hear what you think as well, Mike.
Yeah, I mean, I think you touched on a lot of what my thoughts are on it.
I mean, first of all,
I think you touched on, you know,
a young conference,
it's extremely hard at a young conference, whether or not that's the way to go or not.
I do think that, I think there are challenges.
I think it's probably true that hybrid increases accessibility.
But I would ask accessibility to what? My experience of
hybrid events has not been fantastic. Well, my experience of online events has not been
fantastic. I don't know that I've attended a hybrid event. What I really want to focus on is the quality of the in-person event and getting people to it and helping people get to it as far as accessibility.
You know, if people can't afford it, have to dial in and have sort of a live version of YouTube.
I don't think I've succeeded at including them.
And in fact, I almost I'm tempted to go the other way as time goes on.
Um, I don't know if you all have heard of this, uh, idea of an unconference.
Oh yeah. Yeah. So yeah, that's a, it's, it's an idea I think promoted, I think it was invented
by Misha Globerman, but, but, uh, but I'm not, yeah, I don't know that he certainly
pushes it. Um, and it's almost like a, it's almost like a formalized off, um, is, is one way to
describe it where large swaths of the conference are, are planned on site in effect by the people
who are there based on what's relevant to them. And, you know, it's, or,
or, or, yeah, you know what, it's, it's kind of like a, it's kind of like a, uh, an enshrined
hallway track, uh, is what it is. You know, you take, cause everybody loves the hallway track.
Um, if people haven't heard of it, the hallway track is the snide name for
meeting and talking in the halls. And, you know, often people will, will say, you know, they love the hallway track so much. They skip sessions to just talk meeting and talking in the halls. And often people will say they love the hallway track so much
they skip sessions to just talk with their friends in the hallway
and they're having great ideas.
And it's not idle.
You can talk about whatever you want, but often these are high-level talks,
high-level discussions of interest to everybody by definition
because they chose to be there.
So I would almost rather
dedicate a portion and you know maybe even a large portion of the conference to that and and lean
into the on person um the in-person part of the conference yeah i've been to a couple hybrid
events um last year like in 2021 and 2022 and something that i found interesting is that i didn't feel also that
like those were like two parts of the same event like i was there on site and i wasn't even i never
interacted with anybody online i wasn't even aware of like how the online platform works i'd never
log in there um so it didn't really feel like um like it was connected like the few events that i
went like i had the same experience at all of them it was like like the few events that i went like i had the same experience
at all of them it was like yeah two separate events kind of just happening to share some of
the content through some technology means but it doesn't didn't feel to me like a kind of a coherent
experience um another another thought i've had about online conferences, and I'm interested to hear what you all think about how this ties into accessibility, is when you're at a high, I've never taken time off to go to an online conference.
When I go to a real conference, I don't always take the time off.
But in a very real sense, I'm at the conference that week.
During those days, I'm there.
Maybe I'll do work in the hotel at night.
But work is aware of it.
When I'm at an online conference, I just don't feel right about doing it.
I'm not sure why.
I'm not going to work this week.
I'm going to sit in front of the computer all day and watch videos and do chats.
It doesn't make sense.
As a result, it turns into an intensely negative experience where I am juggling talks and hallway
chats.
I'm juggling between that and my actual work and rescheduling my meetings to get around
sessions that I especially want to see.
And at the end of the week, I'm exhausted.
And I would have rather watched the YouTubes at night.
And that's for me who has the,
I have the privilege of being very securely employed
with very flexible working hours
and a lot of control over that sort of thing.
And it's still incredibly stressful for me. And I'm sure that must be reflected 10 times over in the people that
it's supposedly including. I think one thing we need to be aware of, though, is our experience
of these events is framed by years of going the the in-person events and that being the
thing that we relate to and there's a lot of people that have a different experience and
we need to try to be open to incorporating those people in the events that we put on as well
yeah that's very very important i think we we have that responsibility with everything we do
for the community it's a very good point.
Hold that thought if you're going to hear a message from one of our sponsors.
This episode is sponsored by JetBrains.
JetBrains has a range of C++ IDEs to help you avoid the typical pitfalls and headaches
that are often associated with coding in C++.
Exclusively for CppCast, JetBrains is offering a 25% discount
for purchasing or renewing a yearly individual license
on the C++ tool of your choice,
C-Line, ReSharper, and ReSharper C++, or Rider.
Use the coupon code JETBRAINS4CPPCAST
during checkout at www.jetbrains.com.
Right, so I think we talked a lot about conferences and CPP North in particular,
and it's a great topic.
I'm a former conference organizer myself.
So definitely this topic has a very special place in my heart,
but let's move on actually, because I think Mike,
we have a few other things that we want to talk to you about.
So what are you doing when you're not organizing conferences?
So do you want to tell us about your job and what you're doing?
Yeah, sure.
My job right now is it's a new job for me under a year,
but I think coming up on a year now.
And it's a different direction for me, a small startup called Hypothetic. And where I am, Phil is, for the
listener, Phil is looking somewhat dubious about the name. And, you know, early in my career,
during the dot-com boom, by the way, I was in a company, I did actually work at a startup that was, in retrospect, probably entirely hypothetical.
This one is real.
Not unreal then. That's good.
Unreal was my last job, and we can speak about that.
We'll get to that.
Yeah, so Hypothetic is very small.
I don't know.
We are now more than 10, but not excessively more than 10. And, you know, my whole career, let's say lots of my career, almost all, has been 3D modeling tools, content creation and uh right i have i have written tools for as such in in so many contexts
and so many different verticals different users consumer pro auto architecture uh vr
you know so so and it's interesting how it all changes but what we're trying to do, so we are trying to make tools,
and tools are very important to me,
that do 3D modeling,
but also that are taking advantage
of machine learning and AI.
So the tagline is
power tools for the imagination.
And it's a wide open playing field,
and we have so much fun.
And one thing that I love about this job, Jason Crawford is our magnificent CEO.
And he has made many, many startups and he's come to the conclusion that some of them succeed and some of them don't.
And you always try very hard.
And whether or not you have a good time or not
is what makes or breaks everything,
and that's about the people.
So he has, his number one priority is cultural fit.
You know, do you come to work as an open, happy person?
Do you want to be there?
Do you believe in what we're doing?
And if you have the cultural fit, basically we'll find a way for you to be a part of the company, you know, because you ought to be there.
And it makes it sound like qualifications aren't a part of it, but it's actually very hard.
No, we actually have a very hard time hiring, you know, because we'll interview lots of people.
You know, it takes a very special person to fit in with this team.
And so, anyway, the result of it is I'm happier than I've ever been at work. And I, I really,
I really want to see more companies take this,
this approach of just like,
you know,
the vision is for the team.
You know,
if you want,
there was an old paper on the, the analogy of the beekeeper.
I can't remember who wrote it.
It was,
it was a science fiction author and it's very hard to source.
Anyway,
the,
the upshot was that software writing is not engineering.
It is much closer to bees making honey.
And if you want particular honey, you need to make a nice hive
and put the right flowers near it, and bees come and make honey.
And, you know, if you try to make bees do things be you know that's not very
effective you know uh so you should you should focus on the hive you should focus on the right
flowers to get the bees that you want and and then you need to give them the space and the time to
make the honey and if you get it wrong you you get stung. Yeah.
And then you, yeah, then you go to the hospital.
I don't know.
That is a beautiful analogy.
I love it.
Yeah.
You know what?
I used to be able to find it.
It's definitely called the analogy of the beekeeper.
It's absolutely worth finding and keeping the the rest of the article that i
haven't summarized is equally both hilarious and apt if we can track it down we'll put it in the
show notes yeah it's worth finding maybe a listener will find it yeah i was gonna say if i don't find
it let us know if you do know when the when the yeah when the internet was smaller i had an easier
time finding some things right which is Which is sort of paradoxical.
So anyway, that is work. And on paper, I am a highfalutin vice president of 3D technology.
But, you know, as I told you, there's a very small number of people at the company.
Although it does have a great effect on the LinkedIn contact requests
that I get. Somebody contacted me saying that a lot of vice presidents don't like to go to stores
because it's very visible. And so this person was offering a service of creating custom clothes that we would design at my house.
Did you talk him up on that?
I wrote her back and said, yeah, I think you might be talking about a different sort of a vice president.
I'm not sure I'm in the...
But then I started thinking about Han Solo pants.
And, you know...
Yeah, I know, right?
Like, what if I could have a wardrobe of entirely Han Solo pants. And, you know, yeah, I know. Right. Like what if, what if I could, I could
have a wardrobe of entirely Han Solo pants? Maybe I should revisit. Got a bad feeling about this.
Yeah. So anyway, the other, the other thing that's fun for me, and I, and I hate to say it on this
podcast is, is that I'm, I, for every project I do, I'm choosing the technology that's right for that project.
And it often is C++, and it often isn't.
And so I'm working with a range of technologies.
You know, I've never written TypeScript.
I've become much more fluent in Rust. And, um, the, the, this, the flexibility,
um, you know, after, after having being a mono, uh, a mono programmer for a long time has, uh,
is, is fun just because of the new ideas. Um, you know, every, every, every new community you brush
against, you, you know, you, you learn new things.
It can shake up ideas that you thought were unquestionably true.
Unquestionably the only way to do things is, well, actually, maybe it's not so true.
I have to say TypeScript in particular.
I don't know how many C++ programmers have gone to TypeScript.
It doesn't get talked about a lot,
and it's obviously a very different domain of applicability.
But for a C++ programmer,
it's an incredibly pleasurable language to use, I find.
Whereas JavaScript is, I think, for a C++ programmer,
an incredibly unpleasurable language to use.
TypeScript seems to have hit on the right blend and the,
the fluidity with which you can kind of,
you know,
you do have the types when you need them and the fluidity with which you can
push them around is,
is,
is really quite refreshing in a sort of a cheap and cheerful sense.
That's pretty cool. Yeah. I've not actually used TypeScript before. I've used a bunch of a cheap and cheerful sense that's pretty cool yeah i've not actually
used typescript before i've used a bunch of other programming languages but that's not one of them
so yeah maybe i should should have a look yeah yeah i don't it often gets unincluded it's often
not included in the conversation um i think maybe just because of the world that it's a part of
yeah i'm staying away from web stuff, like the internet scares me.
Right, right, right, exactly.
No, and that was me too,
but then I needed to do a prototype
and it needed to have a front end.
And, you know, our other front end teams
were using JavaScript
and I knew that that would not be fun for me.
So I was like, well, let's have a look
at this TypeScript stuff.
And it's quite good. But your previous job had a lot more to do with c++ right so like phil hinted
already that you know maybe has something to do with the unreal engine do you want to
mention quickly what you were doing before yeah absolutely so so that was that was also a bit of
a departure for me and it was also quite eye-opening for me um and i think i think in some ways started a sort
of transition of thought um i so i had always been an application developer for you know
you know native apps that would go to a user never games um but i i had a friend who who said that
you know they're trying to build uh 3d modeling tools in the Unreal Engine and would I like to join them?
And why not?
I've heard weird things about games,
but let's see if it's true.
So I went to Epic as an engine programmer
making geometry tools.
And that was very nice uh shortly thereafter
my friend sort of approached me and said he's you know he's not that interested in being a
a boss uh would i like to switch places with him um you know and he would i mean oh no no i won't
but no but he he yeah mean, he became the principal
geometry scientist at Epic. So it was certainly not an emotion for him. Um, but he just, you know,
he did not like the admin stuff. Um, so, so I started to manage that team. Uh, apparently
I either did very well or very poorly as a manager. I still don't know which.
And they asked me to take on a much more,
management of a much more high-profile project,
which is the development of the new programming language
that Epic has released themselves.
Wow, that's interesting.
Yeah, the reverse programming language.
So, and I told them,
I have a great love of programming languages. And as an and, and I, you know, I told them, I have a great love of
programming languages. And as an aside, it'll come up, you know, whenever you talk to me,
you probably have already noticed, I don't believe that there's one right programming language. I
think they all should be tried. They should, every language should try to be the best version of
itself that it can be. And there's, there's often going to be different tools for different jobs. And that is actually okay. From what I can see, every successful language sends nice, successful bits,
broadcasts them out to the other language that then get adopted and we learn and grow.
So wonderful. So I love programming languages and they knew that, but I told them, I don't
know anything about compilers. I't know you know i i it's just
not my area you know i do graphics and oh okay but but you know you're managing right not writing
the code so so i so i took that on and that was that was a very very interesting job it was quite
it you know tim schminney the ceo is very directly involved in this programming language. It's, it's, it's in many ways, his baby
and his, you know, the ideas are, are, are many of them his. And so it was a really interesting
team to run. Um, I, it, it ended up being too much for me. I have to admit, I, um, you know,
I rode the horse and I hope to think that I left it better than I found
it. Um, but, but in the end I needed to, I needed to step away, um, just for my own life pace.
And so I took on then another job at, uh, at Epic, which was, uh, kind of a liaison or a bridge to the multiple research teams that Epic has.
And so the idea was, again, it's the beehive.
You know, they would do research and then we would attempt to productize it.
And it's very, very hard because, you know, their world and the engine world don't really exist and coexist.
So what I was endeavoring to do was kind of a combination of social engineering and creating this beehive for them with, you know, all kinds of advantages if they would do their research using my framework.
And in fact, that was the internal code name was
i don't know if i'm gonna get in trouble but i but but i said you know if we make this beehive
and we make it and we make it nice enough then the researchers will use it and you know you'll
get rendering for free physics for free you have access to the the great capabilities of the engine
as part of your research so so the takeaway you know the the
eye-opening thing for me about epic um and with respect to c++ was you know epic epic is is is
almost i don't want to say dark matter epic is is epic and the engine of which C++ is the primary interface to the engine,
um, from a programming language perspective, I guess, blueprints, you know, it's a visual
programming language is also heavily used. Um, but it's, it's an enormous population
of C++ developers, uh, enormous. And, uh, you know, but, but when I arrived, these, I realized these people were,
had utter disinterest in committee, uh, goings on utter disinterest in new features. Um, for a few
reasons, um, they, they had an opinion that they had no way to influence the committee. I told them I did not believe that that is true, you know.
But they were probably correct that they didn't have both time and ability.
And they, you know, the engine is built around a particular kind of C++, which when I, so my last project at Autodesk before I came to Epic was very modern C++,
all value semantics. You know, yeah, I hadn't typed, I hadn't typed the word virtual in three
years. I'm not exaggerating. And, and, and then, but, you know, Epic is not only, it's, it's an
older, the Unreal Engine is an older code base.
It's not a bad code base,
but it's an older code base.
And it,
it makes incredibly heavy use of inheritance.
And,
and sometimes almost defensively because no,
they,
if you're shipping something,
yeah.
So, so there's no explicit API. I don't know if you're shipping something, yeah.
So there's no explicit API.
I don't know if you've done Unreal development.
There's no explicit API.
The engine code is just kind of there for you.
So you have access to all of the headers, and you can use the things. So you get to this point where you'll just virtualize a function
because it gives a user, it gives a licensee an opportunity
to customize um and and yeah it's incredibly dangerous and there's no notion of uh of
contracts and and and and requirement you know this but but but if you don't make it virtual
they won't be able to customize it um so there's, right? And creating something that flexible that also,
the other thing is partial compilation is a necessity.
And in modern C++, I don't know how much we talk about that.
You know, DLLs, you know, it's a big deal.
And, you know, so the kinds of styles that we were using,
pushing around type lists and tuples and things,
you really can't
necessarily, or let's say
it's much, much harder to architect a system
like that in
modern C++ if you've
pre-compiled bits of it.
And so anyway,
that was really interesting to me.
Their flat-out rejection
of certain C++ features, like
for example, auto.
You're not allowed to use auto.
So wait, so you have to type out
did colon colon vector colon colon vector of something
colon colon iterator when you write a loop?
Mm-hmm.
Okay.
Oh, no, sorry, sorry, sorry, sorry.
Excuse me, I misspoke.
There is a loop exception to the rule.
There's two, I believe there a loop exception to the rule.
I believe there are two exceptions to the rule. The loop exception, which is just shooting turkeys.
And then there are certain situations where you can't implement it really without an auto.
You know, catching a lambda, you must use it.
So it's almost never auto.
Almost never auto. never auto that's perfect oh phil oh wow that's that's worth a lot i yeah so so anyway i i i i struggled with
it um and then i realized you know that these are real c++ developers yeah um whose
whose needs are not i in you know i i'm speaking in absolutes you know i it's not true but but the
community uh you know my community um which i consider you to a a big part of you know but we
go to conferences and we talk about new features and modern things. And, you know, I mean, I, you know, I'll speak for myself. Like I, you know,
when there's things talking about, um, I don't know, anything, anything with inheritance,
I will say, I'll be that broad. When I see any content about inheritance, I would generally
skip it. There was a period in my life at least where I was like, yeah, I'm never going to use inheritance
again. And, uh, you know, these people don't hate modern C++. They don't love modern C++.
You know, they've got platforms that keep them on C++ 14 or C++ 17. You know, they're not able
to upgrade. Uh, even if they could upgrade, they have a massive framework with a ton of momentum and code written around it, which is built around certain principles.
And they still do need to enjoy their work and learn how to do it better.
And furthermore, there needs to be a way for them to be, in my opinion, involved in the community in committee form.
We know they don't use RTTI.
We know they don't use exceptions.
And we talk about it.
I've seen it on slides.
I've seen it on slides at conferences.
But they're not there talking about it. They've seen it at slides. I've seen it on slides at conferences, but they're not there
talking about it. They're not there advocating. And, you know, I don't want to point fingers at
what broke down there, but we need to find a way as a language to include the people actually using
it, you know, and make their lives better. And again, absolutes, a lot of work is being going on to improve it i did but i i'm
speaking in in general i think part of it is we went for a long period before we got to c++ 11
where the language was stable and we went over all the best practice stuff and there were books on it
there were people talking about it everywhere conferences and then we got this new language
c++ 11 and it's been evolving
ever since and the focus switched to that because we've done all the best practice stuff we don't
need to revisit it at least that's what we sort of think yeah there's the leaders of these communities
and so there's been a bit of a return in recent years like the cpp con have been doing the back
to basics track and i've been trying to incorporate that sort of content in c++ on c but it's hard because
you need to get people to to submit that material and it's just not as compelling anymore so we need
to change that narrative a bit you're absolutely right we need to actually address what what people
need because um there are new people coming and they don't know this basic stuff yeah and and
also i mean i i guess uh tony tony van aard stands out as you know as a person
you know who is a person who is really drawing the line between these old practice best practices
and and what would be current best practices you know they in fact they were the best practices
because their general excellent architectural principles and uh you know so you know things
like solid solid design you know maybe
it's not all completely relevant but big parts of it are and and and yeah that that needs to be taught
um at a high level not just you know i i always say like we we less talks on semicolons less
less talks on curly braces yeah klaus segelberger is another one that's doing a great job
talking about particularly the solid principles
of design patterns. So he actually
released a book
a few months ago
which I have started reading
and
in the foreword he says exactly that,
that he does a lot of, the book shouldn't
be about features
or like how to use this feature of
c++ or how to do that feature of c++ but kind of more like design principles like i don't know how
do you manage your dependencies like on every level from like like very low level like code
function level to like kind of your overall system and how do you do that in c++ so kind of like design principles rather than features uh
yeah the book is called c++ software design so i'm i'm only like a quarter into it but also far
it's like really intriguing and it's kind of yeah this idea of like it doesn't matter if you use
like the newest hottest feature what matters is that you think about the way you code you know
in a way that that makes sense kind of on all levels
of the architecture. So. Totally. And, and, and, and I think that, that type of thinking,
that's what takes, that's what takes junior developers into senior developers. You know,
that's, that's, that's the practical, that's the cutting edge of experience is when your gut tells
you about the designs and how they should fit together.
And so it's an incredibly important topic to have at conferences, to have, you know, any forum.
Because, you know, you want to be attractive to junior developers, right?
That's the health of your community. You want to make sure that you're making your community and your language something that someone will choose when they are young, when they are junior.
If you do that, you will end up with a healthy community.
And if you have a talk on this sort of subject, the CPP North call for speakers is currently open.
Yes, it certainly is.
I should also mention,
concurrent with the CFP and the review process,
also early bird tickets are
on sale. I would be remiss if I didn't
mention it.
Store.cppnorth.ca
Go buy yourself a 10-pack.
I promise you we'll be very nice to you
if you do
we could talk about all of this
all day and we actually had a few more topics
we had wanted to get to but we've already run
long it's been
quite an adventure
so I think
we're going to need to wrap up so
is there anything else you want to uh
to tell us before we uh before we do that mike uh no i'm i'm sorry that i talk so much
not at all that's what you're here for that's your job today
and anywhere that people can reach you if they want to continue the conversation? Yeah, you can reach me at
contact at cppnorth.ca. You can reach me at mike.dom
at cpptoronto.org.
You can find me on Discord.
I don't know my Discord name.
We can put that in the show notes.
Yeah, you can find me on hashinclude I don't know my Discord name. We can put it in the show notes.
Yeah, you can find me on hashinclude, Discord.
That's probably the easiest way.
I don't have a funny username, and my username is always Michael Dunn.
That's great.
Thank you.
All right, yeah, thank you so much for being on the show with us today today i think we had a lot of fun just very very interesting so thank you so much what a great conversation
perfect you know i uh thank you so much for having me on here and i you know i i want to sing your
praises a little bit the two of you um you know because it's two it's two people who quietly grind towards a positive result for our community and for our language.
I hear a lot of love for CppCast, but your work in other areas is just as important.
And it's just fantastic to have you two as co-organizers in this community and people trying to get us
safely into the future with a fun, inclusive version of C++.
Thank you. We're trying to do our bit.
I know that you are.
Thank you so much. Really appreciate that feedback.
Thank you 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 you're discussing the stuff that 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 it if you can follow CppCast on Twitter
or Mastodon and leave us a review on iTunes. You can also follow me at timor underscore audio on
Twitter and at timor underscore audio at hackydem.io on Mastodon and Phil at phil underscore
Nash on Twitter or at Mastodon at philnash.me on Mastodon. And of course, you can find all of that info
and the show notes on the Postcard website
at cppcast.com.
The theme music for this episode
was provided by podcastthemes.com.