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