CppCast - C++ Bestiary
Episode Date: November 1, 2018Rob and Jason are joined by Adi Shavit to discuss his spooky C++ Bestiary Blog post, CppCon talks and an announcement from the Core C++ User Group in Israel. Adi is an entrepreneur, speaker, c...onsultant, software architect and a computer vision and machine learning expert with an emphasis on real-time applications. He specializes in building cross-platform, high-performance software combined with high production quality and maintainable code-bases. Adi is the founder of the Core C++ users group in Israel. Having worked on proprietary software for most of his career, his most visible contribution to the world of open-source software is, somewhat ironically, the design of the OpenCV logo. News C++ on Sea Schedule What Happens in 2098 with C++? JSON For Modern C++ version 3.3.0 released Meeting C++ 2018 Schedule San Diego Pregame - Optional Choices to Make Adi Shavit @AdiShavit Adi Shavit's Blog Links The C++ Bestiary Core C++ Conference C++ Cryptozoology - A Compendium of Cryptic Characters The Salami Method of Cross Platform Development Sponsors Backtrace Hosts @robwirving @lefticus
Transcript
Discussion (0)
Episode 173 of CppCast with guest Adi Shavit recorded October 31st, 2018. at backtrace.io slash cppcast.
In this episode, we discuss more papers headed to the C++ San Diego meeting.
And we talk to Adi Shabit.
Adi talks to us about his spooky C++ bestiary and 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 today? I'm i'm doing all right rob how are you doing doing okay uh it is halloween so we have uh i don't
think it's going to be very spooky but i was going to say an extra spooky episode of cpcast today
maybe a slightly spooky episode slightly spooky i am probably going to go trick-or-treating with my kids right after we finish recording.
I will be sitting in my house giving out candy.
No one comes to my house for candy because we're at the very end of a cul-de-sac,
so they just don't make it that far down the street, it seems.
We expect 200 to 300 kids.
That's a lot of kids.
It's a lot.
Yeah.
You have enough candy for them? Maybe.
Okay. Did you have anything else you wanted to share today, Jason?
Yeah. So I'm, I don't recall if I've ever mentioned this on the air, but I am giving a class at C plus plus on C. So that is official and am speaking at C plus plus on C. So that's Phil
Nash's conference coming up here in February.
Awesome.
So my class there will be on constexpr,
and if you've seen the several talks that have been on constexpr,
this is more practical, like how you can actually take advantage of constexpr
in your organization to get real-world performance benefits and better code.
And this is the first time that they're doing C++ on C, that Phil Nash is hosting it.
So is it going to be a one-day pre-conference or a two-day class?
One-day pre-conference and then two-day conference.
Okay, awesome.
Yeah.
And the conference schedule is fully up and online now, too. Right, and that's at cpponc. Awesome. Yeah. And, oh, and the conference schedule is fully up and online now, too.
Right. And that's at cpponc.uk.
But we'll, of course, put that in the show notes.
Okay?
Yeah.
Cool.
So at the time of the episode, I'd like to read a piece of feedback.
This week, we got a tweet from Tom on Twitter saying he downloaded the c++ quiz thanks to the recommendation from cpp
cast and it might have the most passive aggressive hints i've ever seen i think my feelings are
actually a little hurt and uh yeah i think i saw the same type of hints when first checking out
this on the website and yeah if you ask for a hint one of the ones that apparently will give you is
have you really thought through the question yeah so that's pretty funny yeah that's not very nice i'm like yes just show
me the answer yeah it's probably better than the other twitter account from the same guy
the affirmative cpp twitter account. Oh, yes.
I'm sure you know which one I'm talking about.
Yeah.
Well, we'd love to hear your thoughts about the show as well.
You can always reach out to us on Facebook, Twitter, or email us at feedback at cpcast.com.
And don't forget to leave us a review on iTunes.
Joining us today is Adi Chavet.
Adi is an entrepreneur, speaker, consultant, software architect,
and a computer vision and machine learning expert with an emphasis on real-time applications.
He specializes in building cross-platform high-performance software combined with high
production quality and maintainable code bases. Adi is the founder of the Core C++ user group
in Israel. Having worked on proprietary software for most of his career, his most visible contribution
to the world of open source software is, somewhat ironically, the design of the OpenCV logo.
Adi, welcome to the show.
Hi, nice to be here.
Okay, I now have to go to the OpenCV website.
Yeah, I did the same thing.
And see this logo, yeah.
So are you planning to move into graphic design? Is that your plan?
No, I don't know.
I've been designing logos occasionally for a long time,
and this is just a side project, side hobby.
That's fun.
That's a pretty clean and straightforward logo, yeah.
So did they ask you to do it,
or did you just submit one and they accepted it, or what?
Well, I actually did it back in 2006,
so there weren't that many developers in OpenCV.
And I was just talking to,
I was one of the contributors to the library and I said, okay, we need a proper logo.
And I came up with this.
I sent it to the top developer and he said,
oh, that's really cool.
And it's sort of stuck.
So there it is.
Okay.
And you've been using OpenCV in your professional work?
Yeah, I've been using it more or less consistently and continuously since it was in beta back
in the year 2000.
Oh, wow.
Yeah.
And it's gone through a lot of changes, some more stable periods and some more rapid development.
But today it's probably one of the most popular computer vision libraries available.
I think I've looked at the API once or twice, but haven't actually used it myself.
So maybe in the interview we'll have to ask you about what you're using it for.
Yeah, we can dig into this more.
Okay.
Okay, well, Dee, we have a couple news articles to discuss.
Feel free to comment on any of these,
and then we'll start talking to you more about maybe OpenCV
and some other work you've been doing, okay?
Sure.
Okay, so this first one is a kind of somewhat funny post
on the C++ subreddit asking what's going to happen in the year 2098,
80 years from now with C++. I guess someone did the math. And if we continue on this cycle of
a release every three years, we will be due to have a C++ 2098 version. But of course,
you can't just call it C++ 98 because we already have C++ 98.
Yeah, that actually bothers me ever so slightly
that we have a Y2K problem.
I have thought about this before too.
I can't lexicographically sort the C++ version numbers.
It does seem like maybe they should have thought of this
with C++ 11.
It should have just been C++ 2011. Yeah, they should have thought of this with C++11 like it should have just been C++
2011
yeah probably should have been
versioned it like semantic versioning
yeah
I think it could be 98.2 or something
yeah
some of these suggestions are like well maybe
it'll be C++98
because by then we'll
actually have a sequence point there or something.
Yeah.
I don't know.
I thought it was a fun read.
I'm responsible for putting this in the list.
I do think you should go and read some of the comments, though.
Because some of them are hilarious.
Clearly, the undefined behavior will cause a fracture in space time it'll have
multiple universes or whatever like yeah yeah okay uh the next one is a new release of json
for modern c++ library it's up to version 3.30 and it looks like one of the major new features is just that they added support for gcc 4.8 right
jason you know i wasn't even paying that close attention to what the new features were i just
wasn't even that familiar with this library but it seems like it is like everyone's favorite
json c++ library it's got 11 000 stars on on GitHub, and I was only vaguely aware of it.
Yeah, it must be a good library then.
You have not had a chance to use it.
Oh, sorry. Go ahead, Adi.
No, I said I don't do a lot of JSON processing, but I did have
a chance of using it some time ago.
The interface is actually pretty
amazing.
On the one hand, it
feels very natural, but
it's still
kind of difficult to be natural in C++ and do the JSON thing.
So I think it's very cool.
Right.
Very cool.
Okay.
And then the next article we have is the announcement from Meeting C++.
Obviously, we were talking a lot about this last week with Jens, but the the full schedule is now online i don't believe the
full schedule is out when we talk to yen's i think just the keynotes were out right jason
i think that's correct yeah yeah any highlights you wanted to point out in the schedule this year
um no i i do find it interesting that and Andre is keynoting because we covered his retirement
from C++.
Yeah.
And what's the title of his talk again?
The next big paradigm.
The next big paradigm.
Right.
Oh, that's right.
We did discuss that briefly, uh, in the last couple of weeks, didn't we?
Yeah.
I'm kind of curious to see what, what that's going to be about.
Yeah.
Yeah.
You ever have a chance to go to Meeting C++ at D?
No, actually, this year has been the first year
where I've actually gone to C++ conferences,
except Code Dive, actually, at the end of last year.
So I've been to several this year,
and I'll be at C++ on C.
I'll be speaking there in February.
But Meeting C++ is the. I'll be speaking there in February but meeting C++
is the one I skipped this time.
So what are the
several that you have been to
or will be going to?
I was at CodeDive in Poland
last November and I'll be there again
next week actually.
I'll give you a few talks.
I've been to
NDC Oslo and NDC Tech Town
just a couple weeks ago at CppCon.
Where's NDC Tech Town?
It's in a town called Königsberg.
I hope I'm not...
I'm probably mispronouncing the Norwegian way of saying it.
It's about two hours out from Oslo by train.
Okay. Wow. So, so yeah that's a pretty
full conference schedule yeah yeah i decided to go uh the full monty this year
so what have your thoughts been so far oh it's been great i mean uh there's a lot ever you know
i joined the c++ slack back in at the end of 2006 when there were just a couple hundred people.
2016, you mean, right?
16? What did I say?
You said 2006. We were both slightly confused for a minute.
Sorry, no, 2016.
And I went on Twitter and started talking to some C++ folks that I've been chatting with for a few years online
and then you go to these conferences
and suddenly meet everybody face to face
and it's like people you've never met but you feel
like you know them, some of them
good old friends so it's
actually fabulous.
That's really cool.
Okay and then the last article I have
is from
Jean-Huid Menid who we had on the show pretty recently.
And he's talking specifically about two papers that will be discussed at the upcoming San Diego meeting.
And this has been a topic which we actually talked a little bit about last week, I believe, with references with Stood Optional.
Right, Jason?
Yes, yes.
Yeah, so what was your take on this?
Well, my initial take was John Heade's articles are very high quality. Yeah. Like,
he did a ton of research into this. And, and he uses the monad word, which, you know, makes some of us our eyes just glaze over immediately as soon as we see Monad in an article, right?
But yeah, it's like I didn't realize
that there's something like 20 different
public implementation of optional out there.
So he discusses like, we're just in this crazy world
where we have to come to some sort of, I don't know,
have to come together somehow
so that we're not dealing with incompatible
things that are all called optional right do you think how do you think this will turn out do you
think we'll go the way of a boost optional which i think is what we all kind of were leaning towards
last week when we talked about it i have no idea I'm curious if Adi has any comments on this. No, I'm sorry. I'm
sometimes stuck working with C++11 or begging people to allow me to use C++11 features on some
legacy code. I really don't have a strong opinion about optional with references yet. Right. I think I want them just because they make sense,
but I don't want to join into the flame war here.
Ah, takes the fun out of it.
Yeah.
You should do just like at the next couple conferences you speak at,
just do like straw polls, like in the middle of the talk,
just be like, now, should optional have reference support or not?
And then just continue on with the rest of your talk and see what happens.
Well, I think in one of my CDPCon talks, I did mention regular void,
which was also mentioned in the article.
And I think it's similarly controversial, I think.
No, regular void needs to happen.
Yeah, I'm totally for regular void.
Yeah, go, go, regular void.
Yeah, we should see if Matt has any updates on that.
I don't think there has been any update on it.
It's been a while since we talked about that, I think.
Yeah, I don't think we actually seriously discussed it
since we had Matt Calabrese on.
Right.
Which was a long time ago now.
Well, Adi, as we said, we're recording this episode on Halloween,
and you actually put out a special blog post a year ago on Halloween with C++ Beast Jerry.
For listeners who maybe didn't see that article,
could you describe it for us?
Yeah, sure.
So when you hang around C++ folks for enough time,
you start hearing all these really, really strange and funky names,
like very esoteric things that you start wondering
and you go searching for.
And not all of them are c++ specific but some of them
are extremely colorful so i was collecting some of these i thought okay this this can make a really
fun blog post um because most people don't actually know all of these terms neither neither did i
obviously uh so i just collected them and it seemed like a very appropriate
thing to do
it's just a blog post with a list of unrelated items
and the only thing really
connecting them together is just they're very colorful
and figurative like creature-like names
and that's what I did
in that blog post. I had, uh, what is it like about 12 or 15 items with strange names.
Um, and each one had, uh, like an emoji and a nice, uh, vintage comics, uh, comics cover,
which is somehow related to the name.
It just to make fun, you know, to, to make it a fun and humorous thing.
That's definitely a fun article.
I'm looking at this list right now, trying to decide,
do we want to try to go over each of them?
It might take a while if we did that.
Yeah, it might take a while.
Do you have a favorite from the list, though?
Actually, I think my favorite is abominable function types. I think these are
really, it's a very, very
strange feature of the type system
which
sort of allows you to declare
a function prototype
that is CVRef
qualified
and you can't actually
declare a function like that. You can only declare
methods, but you can still do this forward declaration
and give it a name.
It's really strange.
And kind of, I think I had a quote here
from Alistair Meredith.
He said, there is a dark corner of the type system
that is little known other than to compiler writers.
And I think he's actually trying to get rid of it,
but it's not that easy.
So I wasn't familiar with this one,
and it's very, very esoteric.
And I hope people don't actually use it ever.
So if you see it in code review,
somebody needs to have serious talk.
So this is something then that at least some members
of the standard committee consider to be a bug, effectively.
I don't think this particular item is actually a bug.
It's more like it's just a strange feature of the type system, I guess.
I'm not an expert.
You probably have to ask Alistair Merz and he can give you a lot more details. Most of the things I actually collected,
there are many other CppCast guests
who are much more of an expert about them than I am.
But I think, you know, the thing about this is that
it shows, first of all, it shows a lot of humor,
because some of these items are actually mentioned
in the international standards
you go and read this tomb
which is supposedly very official
very formal, very rigorous
and you actually have to pay 60 euros
if you want to buy the formal thing
and then you start reading it
and you come across all these strange
and funny and funky names
I think it's really cool
and despite being very esoteric and humorous,
there are a lot of opportunities to learn about some of these things.
And even when I gave this talk back at NDC Tech Town,
I've had some of the keynote speakers come up to me then and say,
you know, I actually learned something here.
I didn't know that.
So, okay.
So is there anything in here
that you ultimately did
decide in your research or whatever in writing the article
that actually is a bug that
people want to get rid of in the
language, just out of curiosity?
Well, I'm not
exactly sure it's a bug, but if you look at
duck typing, duck typing comes from
dynamic languages like
JavaScript or many, many older languages. And it doesn't actually, it isn't actually used in C++,
but it does, C++, when you're using templates, you do use static duck typing where you don't know
the name. So it comes back in a different form in C++,
and this is something that people are trying to get rid of,
and basically that's what concepts are trying to do.
So I'm not sure, it's not exactly a bug,
but it is an aspect of the type system
that should or could or would be improved
by an alternative warning system.
More like constrained duck typing or something?
Right.
Well, yeah, I mean, there's the whole discussion
about whether the concepts we're getting
are actually the concepts we want,
but that's another story.
And I must say that some of them are actually features.
They're not really bugs.
I talk about Flying Saucers,
which is the
the spaceship operator which is extremely
cool which is
not really something to be scared of
it's actually very very
we're very welcomed
and it has some amazing defaults
so that's something
I'm really looking forward to because I
love operator of reloading
sorry there I said it.
You love it.
Yes, operator overloading is definitely a good thing
that definitely has its uses.
I'm not going to argue with you on that one at all, for sure.
Just as long as you're not overloading the comma operator
or the logical or
yeah but you know C++ is a language
that allows you to blow your foot off
right so I mean you have to
be smart and you have to be
mature and adult
about what you're doing so if your intent is to
confuse something yeah so C++ is probably
the best language to do that but
if you're trying
but most of us
aren't, right? So
yeah. Right.
So I think you mentioned that you
gave a talk based on this blog post,
too. Is that right? Yeah, I've given
it several times, and you know, I
usually... One of the first things I
say is I guarantee that everybody will
learn something. And that's if I give it
in a small meetup, that's generally true. And then I had the chance to give it at NDC Tech Town and at CppCon
where I was slightly more reserved about saying that. But in CppCon, actually, the reception was
amazing because I didn't give the version that's in the blog post.
Actually, most of the material for the CppCon talk was new material.
And the thing is that most of the people who are quoted in the future blog post with the new material were actually sitting in the audience.
That's awesome.
It was super awesome.
And it was very friendly and very fun.
And if somebody had a question, so I said, yeah, this guy sitting over here, you go and ask him because I have no idea.
I'm just quoting him.
So it was great, great fun and fantastic reception.
So it was very friendly.
So I think you just said that you were working on a new content to update this post.
Is that right?
Yeah, I was planning on actually posting it tonight,
but I was too busy these past few weeks ever since CppCon,
and I just haven't had a chance to write it down.
So I do have a whole bunch of new material,
including stuff that I didn't even present at CppCon.
Hopefully it won't wait until next Halloween
but it's probably going to be in the upcoming months
yeah
okay we'll keep our eye out for it then
okay
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, Backtrace jumps into action, capturing detailed dumps of application and environmental state. Backtrace 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.cppcast.
I think you also gave a talk at CppCon this year about the salami method can you tell us a little bit about that yeah so this is based on
basically the salami method is an architecture or a way to structure software systems where you
need to develop extremely cross-platform and target multiple different platforms because c++
today nc are the modern C++ developer,
often has to target multiple, very different types of platforms.
So if you go to the lowest level, you have custom silicon,
and then embedded systems, mobile systems, desktops, clouds,
and even the browser today is effectively an actual platform
if you're using Emscripten or ASMJS or
WebAssembly.
And that's just like
the hardware platforms in a sense.
You have multiple operating systems
and some of these target platforms,
they have what I kind of
ironically call the native-native
languages.
Because, you know,
they call it native when they refer to
the C but really the native language
might be let's say Swift
or Objective C on iOS
or Java on Android
it's a really difficult
it's very easy
to get
to duplicate the work you're doing
you have multiple teams developing
you're mixing business logic
with platform-specific APIs
and your whole code becomes extremely difficult to make.
So the Salami method really,
it takes its name by the fact that it slices such systems
into extremely thin layers
where each one has a very, a single responsibility.
And it's very transparent
and allows you to maintain control
over your code.
So it doesn't remove
some of the ugliness
of doing these platform-specific aspects
and a lot of these problems,
but it does try to keep the business logic
in one,
all the common code in the same place and everything becomes much more maintainable.
Do you go so far as to even put like the different layers and different source subfolders or
something like that?
I think that really depends on what combination of platforms you're targeting.
So sometimes you actually have to implement
all of the layers as separate files
or separate folders or separate subsystems.
More commonly, some of these layers
won't actually be implemented
as different layers in the code,
but the aspects that they discuss
are always there.
There is no way around it.
And even if you're using kind of these cross-platform frameworks,
the person who implemented these frameworks
should have considered all of these aspects as well.
So the aspects are always there.
You don't...
It's like design patterns.
You know, you reify these aspects.
You don't necessarily have this actual separation between all these layers,
between each and every layer in every project you use.
Right.
I have a blog post about that as well on my blog,
so it's kind of difficult to talk about it, but it's kind of a long read.
Yeah, I think I saw that blog post sometime last year.
Yeah, it sounds familiar.
Yeah, January 4th, 2017.
What types of apps have you built using this architecture?
Actually, I came to realize how to structure this code
after working on several mobile apps
that had to target both Android and iOS.
My clients had two separate development teams.
One was iOS and another one was Android.
And they were trying to always chase each other
and trying to fix bugs.
One was in Java and another was in Objective-C.
And basically, the whole point was to extract
all the common data into like a core platform, agnostic C++ core, and then only add additional wrappers on top of it. in iOS and the same algorithmic code could actually be unit tested and run on desktops
and some of it actually
became
kind of a cloud service where it could
handle, I don't know
hundreds of thousands of users
in the server
and that was the exact same C++ code
yeah
that's cool
and I've also been working on some embedded systems.
And again, even if you're targeting a very specific embedded system,
often you want that code to be tested or simulated on desktops, for example.
And this architecture really allows you to manage this code effectively.
That's definitely a huge benefit if you're able to build the large parts of your mobile
application as a desktop application.
I'd imagine that makes things like unit testing, like you said, a lot easier.
Yeah.
Usually, when you're working that way, you can do all your unit testing on your desktop
or whatever convenient system platform you're using.
And then on the target app,
you only need to do some sanity tests and API tests.
You don't need to do the actual unit tester
because it's the same exact code.
Of course, this is kind of an overgeneralization
and it really depends.
But in general, it saves a lot of the trouble
of developing and testing on the platform itself
and things like
web browser
development is also something
I've written apps that run on the desktop
we mentioned OpenCV
so I wanted to see if we can do actual
real time video
manipulation in the browser
so this is not
happening in a server. It's actually
compiled into JavaScript or
WebAssembly and running
inside the browser.
So the same code could do that.
So, since you
brought up OpenCV again, I'm curious
if you've been using it in these mobile
applications that you're talking about, and
what this application was, where you
compiled it for Emscripten
if you can talk about it
I've been using OpenCV a lot
over the last
decade or more
and I've used it on mobile
apps and
on many desktop apps
in particular for the browser
it was just an example, I wanted to get
to know Emscripten a little bit more
a few years ago.
And I wanted to show, after my Salami blog post,
I wanted to show an example of how you actually use it.
So I just wrote a simple color transformation app in OpenCV.
It's just a few lines of code
where you convert it to color space,
change the hues of the video,
and display the image.
So I compiled that as a desktop app,
and then I went through in my blog post
over adding all of these layers
to enable it to compile to inside,
essentially to a JavaScript application
running inside
an HTML
web page
so
it was just an experiment
I've written other browser
related stuff as well
once you understand the pipeline
it's pretty much
you just compile your code
and it hopefully just works.
Up to anything that's C++ kind of thing.
Toolchain, yeah.
That's very cool.
So what other kinds of things can OpenCV be used for?
Or what other kinds of things have you used it for?
Oh, wow.
Well, OpenCV is huge.
It's huge.
It has everything from most of the basic image processing operations you would want,
from managing images and regions inside images and applying all kinds of filters, linear filters, convolutions,
that kind of basic stuff.
And then it goes up to object detection, feature detection.
It integrates with more advanced deep learning systems these days.
It's huge.
And I think it's very, very useful
for getting started with any computer vision.
So if you need to do computer vision,
it's often easier to do it with OpenCV
than going to prototype with MATLAB, for example,
because the performance,
a lot of the functions are optimized,
hand-optimized by the big companies
with assembly binaries.
So it's very useful for prototyping.
And unfortunately, it's not exactly C++11 yet.
So some of the things kind of feel awkward these days.
But most of the processing is still extremely fast.
And when you get used to it, it's fine.
It's not weird.
Is the library itself written in C++?
Just an older version?
Or is it written in C? It's written in C++.
Oh, okay. That's good.
So I'm thinking at this point,
we've mentioned Monads, computer vision, and machine learning,
and I'm about to call bingo here.
I'm wondering what else we could talk about.
Buzzword bingo, you know.
How about drones and autonomous vehicles? Hey, there you go go are you doing work with those also with computer vision work actually i'm not i haven't done anything
with drones uh but i am working on a project uh involving autonomous driving that's cool
is that like terrifying to work on um well I'm doing a lot of algorithmic research.
But yeah, the requirements, the constraints are pretty high.
But again, this is an industry that's just growing,
and we're still at the very nascent phases.
And there's a lot of redundancy.
So most of the really, the true
self-driving cars you'll see
in maybe 5 or
7 years, they'll have
multiple different systems
covering each other and
hopefully
even, of course
no system is perfect, just like
a human driver is not perfect
so hopefully you have multiple
different, basically you'll
have all types of sensors
from videos and lidar
and radar and sonar
and anything you can stick on a car that's not
too expensive
multiple compute units
working, some of them
from the sensor manufacturers
some of them from the car manufacturers so some of them from the car manufacturers.
So it should be as safe as a regular driver,
sometimes more, probably occasionally less.
Very cool.
Yeah.
Well, you also mentioned in your bio that you run the,
or you founded the Core C++ user group in Israel.
Do you want to tell us a little bit more
about the user group community
in Israel? Okay.
Well, you know, I've been watching
YouTube videos,
listening to C++ podcasts,
and
hoping that somebody will come up with
a C++ meetup here in Israel
where I can actually go and meet some other C++ developers.
Unfortunately, that didn't happen.
So I decided, okay, I went on Slack and I started chatting with Jens and John.
And I said, okay, how do you gauge interest in such a user group?
And they said, because the meetup tools don't really allow you to do that.
So they said, no, don't.
Just start your meetup so i think
it was a just a few days ago uh one year ago uh we just had the anniversary i just went on meetup
opened an account and started a user's a user group i just chose a name and a random future
date as the first kickoff meeting.
And like within 24 hours, I had to upgrade my meetup account because it was limited to 50 members.
And I think we're approaching 600 members now.
Wow.
Oh, wow.
Yeah, we've been having monthly meetups.
And it's been amazing, really.
Suddenly, I'm meeting people there was no other way for me to meet
and people are thirsty
just like I was
kindred souls
yeah we can watch YouTube videos
but we want to meet local folks
it's been amazing
it's such a wonderful thing
so I recommend
if you're sitting in your office
and hoping that somebody will start a meetup in your town,
just go and do it.
So about 600 members is a lot.
How many people actually come to your meetup?
Oh, significantly less.
I think many members are not even in Israel.
Many people just join meetup groups just, I guess, to know what's going on where.
And the thing is that there is a large high-tech industry in Tel Aviv, in the Tel Aviv area, and another one in Jerusalem.
But since Israel is a very small country, our sense of distance is also reduced.
So people from Tel Aviv will extremely rarely ever go to a meetup in Jerusalem.
And people in Jerusalem will rarely make the 50-minute drive up to Tel Aviv.
Whenever I went to each one, they would say,
What? Seriously? You came all the way for the meetup?
So I'd say, yeah.
So I decided that I'm actually not going to do our meetups in Jerusalem or Tel Aviv,
at least for the several, at the beginning.
So we're alternating between two different places in between,
hoping to get people from both Tel Aviv and Jerusalem.
Of course, the fact is that many people from Tel Aviv and Jerusalem,
neither from Tel Aviv and Jerusalem, are actually coming.
So the regular meetups have around 25 people, but it's arriving.
But we always get new people, and it's growing slowly.
We did have several meetups in Tel Aviv where we've seen over 60 people coming which was pretty amazing
that's really good
our next meetup in November is also in Tel Aviv
so anyone listening and who's in the area
please come and join us
I assume it does not overlap
with C++ on C
well C++ on C is in
oh no November or February.
Man, I'm out of it today.
Wow.
It won't overlap with C++ on C
because I'll be at C++ on C.
Right.
And I generally come to all the meetups
because somebody needs to organize them.
And Michael, my co-organizer,
is already doing
such a big amount of work.
We both need to be there.
That's cool. It sounds like a good growing community.
Yeah.
And I think you told us before the show
that you have an announcement related to the user group.
Is that right? For next year?
Yeah, I'm super, super excited about this.
So in the first presentation that I gave in my first meetup,
so this was the presentation I prepared before I've met anybody
who ever came to the meetup.
I had like one slide with my goals for the meetup
and another slide with stretch goals.
I had like a long list of stretch goals
going from the relatively obvious ones
like recording the sessions and posting them online
all the way to the most ambitious one.
And the last one was an actual conference,
a C++ conference.
I became jealous of all the conferences worldwide
and said, yeah, okay,
that's like my ultimate stretch goal. And a few months ago, we had a meetup in Tel Aviv,
which was extremely successful. And we started talking to, this was something organized by
JFrog, actually. And they came up to us and they said, oh, wow, the meetup was amazing. And you
got 60 people to come and stay up until 10 p.m. at the meetup
and let's do something more.
And I said, okay, sure, let's do a conference.
So they said, sure, let's see what we can do.
Let's go for it.
And we started the ball rolling
and we're actually going to have a conference.
It's going to call the Core C++ 2019
going to be next year
I'm super excited about this
it's a two day two track
conference with one
pre-conference training workshop and another
half a day post-conference
activities
it's going to be in the
Academic College of Tel Aviv
which is a beautiful beautiful campus and it's going to be in the Academic College of Tel Aviv, which is a beautiful, beautiful campus.
And it's going to happen on May 14th to May 17th.
So it's about a week after C++ now,
which is kind of maybe a problem for some speakers,
but hopefully not too much of a problem.
The weather in Tel Aviv is amazing in May.
So you have sunny beaches, but it's
not too hot. There's lots to see. Of course,
Israel is a great place to visit if you've
never been, and even if you have been, there's
tons to see.
So, yeah, and there's
when we were in, both me and
Michael, my co-organizers, we
both gave talks at CPPCon, and we started
talking informally to a lot
of people, and there's a huge
interest and uh people are really excited so i'm super excited and really happy so um yeah come
come to israel and we'll have an amazing conference so uh i guess obvious question is are you looking
for speakers you have call for speakers out we you looking for speakers? You have call for speakers out. We are looking for speakers.
The call for speakers is out.
We're going to post the website, the URL of the conference, I hope, on the show notes.
Oh, yeah.
I'm sure, whatever you'd like.
It's corecpp.org.
And there's a call for speakers.
And we'd love to have you.
And you guys in particular, of course.
Oh, I will definitely submit a talk
and also put my hat in the ring
for these training days
or workshop days that you're talking about.
Fantastic.
Amazing.
Now, it sounds...
I'm not aware of any other conference
that has like a post-conference activity day,
like you said.
I'm curious what your thoughts are for that one.
Well, this is still TBD,
but basically we had multiple ideas.
Well, in Israel, Friday,
the 17th of May is Friday.
So it's generally considered a half
work day.
The weekend in Israel is Friday
and Saturday, so people work on Sunday.
Sunday is a regular day.
Friday is like half
weekend day.
And people
generally don't work full
days on Friday, if they work at all.
So the ideas we had, we may have a hackathon that starts the evening before and lasts until the Friday afternoon.
We are considering a C++ academic track, half day of academic related lectures.
So this is still open and we're open to ideas and still in discussions.
But we do have that at the venue at our, is available to us for that extra half a day.
Right. So the dates are set, even though there's still a few things you're trying to figure out,
the dates are set, you've got the venue, everything's good to go.
Exactly. Yeah. And there going looking for speakers and
sponsors of course oh speakers and sponsors of course and is it you said j frog was involved
in the original conversation are they sponsors or is that still they will become major sponsors
okay you said it's going to be uh two days two tracks, I think. Is there any theme you have planned or would like to have with the tracks?
Well, this is a first conference, so essentially anything C++.
You know, C++ language evolution, discussions, pros and cons, latest language features, best practices, anything typical.
And, of course, things related to development process like code analysis, testing, tools, libraries.
There's a lot of hardware and software development in Israel, like embedded systems, real-time, and a lot of industries.
So mobile platforms, games, VR, AR, you know, the usual C++ applications, so machine learning, computer vision, drones, autonomous vehicles, low latency.
I think there are a lot of people doing all of that in Israel.
And as I said, we're hoping to do an academic research track.
So this is still something we're trying to formalize.
But again, if it's interesting, do get in touch with us. We'd be happy to talk. this is still something we're trying to formalize but again
if it's interesting
do get in touch with us we'd be happy to talk
well
it's
I don't know what I expected
one way or the other but I just find it interesting
that it sounds like basically anyone
who cares about C++
is using C++ in Israel
for those reasons that you would care about C++,
for performance and real-time processing and whatever else, mobile applications.
Exactly. That's my aim.
Basically, the aim, we want to get the community together.
And I don't think this is very specific to Israel.
I think C++ developers tend to be holed up in their cubicles.
Yes, yeah.
I know that from Slack, you know,
you see people joining all the time,
but many, many, even Slack has 10,000 members,
which is incredible, I think.
But the numbers of C++ developers
that you read in the statistics,
we're talking in the millions.
So we're not even like thousands of percent, right?
We're talking about a tiny fraction
who actually watch, consume C++ content.
And very often, even in the same town,
these people don't necessarily know each other
or meet each other.
And it's great for the community to get them together, to get them talking to each other and meet each other and learn from each other or meet each other. And it's great for the community to get them together,
to get them talking to each other
and meet each other
and learn from each other
because C++ is such a huge language.
You can be like the world expert
on template metaprogramming
and know nothing about parallel programming.
This applies essentially
to every aspect of the language
and every industry.
So yeah, come to the conference and
I pretty much guarantee you will learn something.
And not just my esoteric
list of
C++ beasts.
So, with two tracks
over two days, I
estimate you're looking for
what, 20 to
25 speakers, something like that?
Yeah, something like that.
I think it's between 16 and 20 speakers.
Exactly.
And again, not including the pre-conference workshop.
Right.
But we'll probably have a lightning talk session as well,
so hopefully we'll get more people to get visible
and get talking and some interesting content.
And from the way you described it, it sounds like if people just want to come to Israel
just to see Israel and would like to stop by your conference while they're there,
it's like you said Tel Aviv is only about an hour from Jerusalem.
That does make the country seem pretty compact.
It is very compact, yes.
Israel, like the longest area, distance you can measure in Israel is around 600 kilometers.
And it's a very vertical country, so everything is close.
Right.
So you can go up from the north where you have like a ski resort in the winter,
a very short winter, to basically a tropical ocean at the Red Sea.
And it takes like a five-hour drive, or six-hour drive.
Wow.
And everything else is in the middle.
Yeah, I think it probably would take longer to drive east-west across the state of North Carolina.
Yes, probably.
Yeah.
Exactly.
And I was just looking at some numbers for the scale of things.
Denver International Airport is like the fifth largest by land area airport.
It's almost as big as the country of Liechtenstein,
which granted is one of the smallest countries in Europe, but still.
It's not the smallest country in Europe.
Okay, well, is there anything else you wanted to share with us before we let you go?
It's a pretty exciting announcement with the conference and everything.
Yeah, yeah, I'm super excited.
I think that's the major thing.
Do come to our website.
Get in touch with us if you have ideas.
We are hoping to sponsor international speakers
if they don't have a large company sponsoring them,
similar to other small,
like C++ on C and other conferences.
So do get in touch.
We're very flexible if we have ideas.
So we're super excited
and it should be an amazing event.
And it's super important that you just said that too,
because I find over and over and over again,
I'll be talking with people,
even on Slack,
who I feel like should know these things, that they'll be like, Oh, I
really wanted to speak at that conference, but I couldn't afford to fly there. Well, you know what
CBP con pays for the travel for people who who don't have a company sponsoring them like you're
talking about doing so yeah, I anyone who's listening who's interested, make sure you,
you know, send in your application or proposal. Yeah, and even if you do have a company sponsoring you,
that company might actually automatically be registered as a sponsor
and get sponsor benefits.
So we have a sponsorship program where if you sponsor
just even two or three attendees,
you're automatically registered as a sponsor
and you get all the benefits of being a sponsor.
Well, that sounds like huge.
That really is a good way to encourage companies
to pay for their employees to get their name out there too.
Yeah, I agree.
Yes.
We had a lot of discussions when we started this
because we didn't know anything about organizing events.
So we had a lot of help from other people organizing events from phil nashville from c++ on c
and the folks who organized the ndc conferences and jens and john uh from cpcon and meeting c++
so yeah we're trying to learn from the best and do the best event.
The first C++ conference for C++ developers in Israel.
Sounds great.
Yeah, sounds great.
Thanks again for coming on the show today, Adi.
Thank you very much.
I had a wonderful time.
Thank you for having me.
Thank you.
Thanks so much for listening in as we chat about C++.
We'd love to hear what you think of the podcast.
Please let us know if we're discussing the stuff you're interested in,
or if you have a suggestion for a topic, we'd love to hear about that too.
You can email all your thoughts to feedback at cppcast.com.
We'd also appreciate if you can like CppCast on Facebook and follow CppCast on Twitter.
You can also follow me at Rob W. Irving and Jason at Lefticus on Twitter.
We'd also like to thank all our patrons who help support the show through Patreon.
If you'd like to support us on Patreon, you can do so at patreon.com slash cppcast.
And of course, you can find all that info and the show notes on the podcast website at cppcast.com.
Theme music for this episode was provided by podcastthemes.com.