CppCast - C++ Bestiary

Episode Date: November 1, 2018

Rob 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)
Starting point is 00:00:00 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.
Starting point is 00:01:50 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.
Starting point is 00:02:10 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.
Starting point is 00:02:48 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.
Starting point is 00:03:12 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
Starting point is 00:03:43 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.
Starting point is 00:04:19 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.
Starting point is 00:04:51 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.
Starting point is 00:05:13 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.
Starting point is 00:05:34 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
Starting point is 00:05:55 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.
Starting point is 00:06:25 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,
Starting point is 00:06:49 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
Starting point is 00:07:22 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
Starting point is 00:07:38 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.
Starting point is 00:07:54 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.
Starting point is 00:08:45 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
Starting point is 00:09:01 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++.
Starting point is 00:09:19 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.
Starting point is 00:09:53 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.
Starting point is 00:10:05 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++
Starting point is 00:10:25 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.
Starting point is 00:10:41 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.
Starting point is 00:11:04 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.
Starting point is 00:11:37 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.
Starting point is 00:12:00 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?
Starting point is 00:12:34 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
Starting point is 00:13:04 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.
Starting point is 00:13:55 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.
Starting point is 00:14:24 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.
Starting point is 00:14:45 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,
Starting point is 00:15:13 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
Starting point is 00:15:46 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.
Starting point is 00:16:22 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
Starting point is 00:16:45 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
Starting point is 00:17:01 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.
Starting point is 00:17:22 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
Starting point is 00:17:44 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
Starting point is 00:18:18 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
Starting point is 00:18:36 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,
Starting point is 00:18:58 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
Starting point is 00:19:13 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++,
Starting point is 00:19:45 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.
Starting point is 00:20:07 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
Starting point is 00:20:25 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
Starting point is 00:20:42 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
Starting point is 00:21:06 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
Starting point is 00:21:23 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
Starting point is 00:21:37 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.
Starting point is 00:22:19 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.
Starting point is 00:22:45 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
Starting point is 00:23:10 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.
Starting point is 00:23:38 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
Starting point is 00:24:27 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
Starting point is 00:25:05 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.
Starting point is 00:25:22 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
Starting point is 00:25:38 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
Starting point is 00:25:59 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
Starting point is 00:26:18 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
Starting point is 00:26:46 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.
Starting point is 00:27:03 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,
Starting point is 00:27:27 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?
Starting point is 00:27:54 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.
Starting point is 00:28:20 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
Starting point is 00:28:57 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
Starting point is 00:29:27 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
Starting point is 00:29:53 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
Starting point is 00:30:12 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
Starting point is 00:30:28 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
Starting point is 00:30:44 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
Starting point is 00:30:59 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
Starting point is 00:31:24 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
Starting point is 00:31:44 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
Starting point is 00:31:59 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?
Starting point is 00:32:20 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.
Starting point is 00:32:53 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,
Starting point is 00:33:12 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.
Starting point is 00:33:41 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.
Starting point is 00:34:02 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.
Starting point is 00:34:42 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
Starting point is 00:35:00 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
Starting point is 00:35:15 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.
Starting point is 00:35:36 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,
Starting point is 00:35:56 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?
Starting point is 00:36:18 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.
Starting point is 00:36:56 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
Starting point is 00:37:14 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.
Starting point is 00:37:31 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.
Starting point is 00:38:15 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.
Starting point is 00:38:44 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
Starting point is 00:39:15 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
Starting point is 00:39:35 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.
Starting point is 00:39:52 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
Starting point is 00:40:17 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,
Starting point is 00:40:39 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.
Starting point is 00:41:08 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
Starting point is 00:41:29 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.
Starting point is 00:41:46 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
Starting point is 00:42:10 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
Starting point is 00:42:25 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.
Starting point is 00:43:02 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.
Starting point is 00:43:23 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.
Starting point is 00:43:41 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
Starting point is 00:43:57 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.
Starting point is 00:44:35 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.
Starting point is 00:45:21 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
Starting point is 00:46:06 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
Starting point is 00:46:22 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,
Starting point is 00:46:50 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
Starting point is 00:47:11 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
Starting point is 00:47:28 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
Starting point is 00:47:45 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
Starting point is 00:48:01 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
Starting point is 00:48:22 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.
Starting point is 00:48:54 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.
Starting point is 00:49:19 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?
Starting point is 00:49:47 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,
Starting point is 00:50:07 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,
Starting point is 00:50:23 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.
Starting point is 00:50:54 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.
Starting point is 00:51:17 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.
Starting point is 00:51:53 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.
Starting point is 00:52:07 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.
Starting point is 00:52:44 Theme music for this episode was provided by podcastthemes.com.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.