CppCast - Qt Mobile Development

Episode Date: February 9, 2018

Rob and Jason are joined by Sarah Smith to talk about her career in Mobile Development with C++ and Qt. Sarah Smith comes to mobile development & entrepreneurship with a background in Soft...ware Engineering for companies like Nokia & Google, and over a decade of mobile device experience. She builds on a love of game development since creating Dungeons & Dragons modules on her own web-server while studying for a BSc (Comp Sci) in the late 90's. Realizing a goal to develop independent games & apps, Sarah opened Smithsoft in 2012. In January 2016 development went to the next level with Sarah moving to The Coterie (Brisbane's premier creative co-working space) to set up a studio as Smithsoft Games. The new studio's first title Pandora's Books was developed by Sarah and her team of part-time collaborators through 2016. In 2017 Sarah founded Artlife Solutions Pty Ltd with a team out of the Creative Startup Weekend, winning first prize there, going on to win a spot in Collider Accelerator 2017. Currently working on Sortal - the startup's revolutionary AI powered photo software - Sarah is responsible for all things tech including the scalable architecture, mobile implementation and deep-learning technology. Sarah is an international speaker and expert in creative teams and agile projects; mobile development and technical architecture for apps. She has worked for a decade in her discretionary time on diversity in hiring and helping women coders. News Outcome accepted into Boost C++ Modules, Working Draft N4720 Dr Bjarne Stroustrup Named Recipient of the 2018 IEEE-CS Computer Pioneer Award Sarah Smith @sarah_j_smith Sarah Smith on LinkedIn Sarah Smith's GitHub Links Pacific++ 2017: Sarah Smith "Postcards from the Cross-platform Frontier" Qt DevDays 2011, 3D-Programming Using Qt Quick on N9, Part 2: Sarah Smith Sortal Smithsoft Sponsors think-cell software Embo++ Hosts @robwirving @lefticus

Transcript
Discussion (0)
Starting point is 00:00:00 Episode 137 of CppCast with guest Sarah Smith recorded February 7th, 2018. CppCast is sponsored by ThinkCell Software. They're looking for developers that would want to work on extremely challenging C++ development tasks. In their Berlin-based office, they work with no deadlines, no overtime, and no meetings. If this is for you, go to thinkcell.com slash cppcast and apply today. CppCast is also sponsored by Embo++. The upcoming conference will be held in Bochum, Germany from March 9th to 11th. Meet other embedded systems developers working on microcontrollers, alternative kernels, and highly customizable zero-cost library designs.
Starting point is 00:00:39 Get your ticket today at embo.io. In this episode, we talk about how to come finally doing a septum's boost. Then we talk to Sarah Smith. Sarah talks to us about mobile development 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 doing pretty well, Rob. How are you doing?
Starting point is 00:01:46 Doing pretty well. It's been an exciting week. I'm sure most of our listeners were watching the SpaceX launch the other day, which is pretty cool. I did not even realize it was going to happen. One of my friends sent me an IM with a link to it like a minute before liftoff. Everyone was talking about it in my company's slack channel and waiting for the live feed to start so yeah i was definitely interested in watching that and watching those two boosters land like at the exact same time was just amazing yeah i was reading a comment that said they
Starting point is 00:02:18 had originally announced that they were not going to take the risk of having them land at the same time because something went wrong but apparently they just went for hubris and it worked of course the third one didn't land at all which is unfortunate it landed just very fast very very fast and like 800 miles per hour the drone part in the process but i'm seriously reminded of like the space race from the 60s and my dad talking about how that kind of thing inspired him to become an engineer and whatever. And I do wonder how many people watch that and are like, holy crap, I'm going to get into aerospace engineering now or something.
Starting point is 00:02:54 Hopefully a lot of people. Hopefully a lot of people. Yeah. And SpaceX, I think, is always looking for engineers, too. Yes. Computer engineers, too. Oh, is that right? I think so. Not SpaceX. I sure tesla's looking for a lot and joining us today is sarah smith sarah comes
Starting point is 00:03:12 to mobile development and entrepreneurship with a background in software engineering for from companies like nokia and google and over a decade of mobile device experience she builds on a love game development since creating dnd modules on her own web server while studying for a Bachelor's of Science in the late 90s. Realizing a goal to develop independent games and apps, Sarah opened Smithsoft in 2012. In January 2016, development went to the next
Starting point is 00:03:36 level with Sarah moving to the coterie to set up a studio at Smithsoft Games. The new studio's first title, Pandora's Books, was developed by Sarah and her team of part-time collaborators through 2016. In 2017, Sarah founded ArtLife Solutions with a team out of the Creative
Starting point is 00:03:52 Startup Weekend, winning first prize there, going on to win a spot in Collider Accelerator, currently working on Sortall, the startup's revolutionary AI-powered photo software. Sarah is responsible for all things tech, including the scalable architecture, mobile implementation, and deep learning technology. Sarah is responsible for all things tech, including the scalable architecture, mobile implementation, and deep learning technology.
Starting point is 00:04:08 Sarah is an international speaker and expert in creative teams and agile projects, mobile development, and technical architecture for apps. She has worked for over a decade in her discretionary time on diversity and hiring and helping women coders. Sarah, welcome to the show. Hey, guys. How are you doing? Thanks for having me on.
Starting point is 00:04:24 Doing great. There's a lot that obviously we're going to have to get to in your bio throughout the course of this, but I'm curious how you actually got started in C++. Yeah, it was kind of interesting. I did a few different things. I actually started out in architecture and fell into programming for off the back of working with AutoCAD scripting and I was just like wait this is seriously fun and I'm finding that no one in the else in the office wants to do this crazy scripting stuff I think you know I think
Starting point is 00:05:01 there's something in this for me and I I turned to programming and I went back to uni, which was kind of hard. But I have this moment which I really, really clearly remember. I was going out with a guy who wound up being my husband in the end. But he was working at an office of OOC, which was building a Corba engine way, way back in the day with Mishy Henning. I don't know if you guys remember any of the books by Mishy Henning on distributed computing. I don't recall that, no. Yeah, but those guys were kind of the gurus of C++, like, back in the 90s.
Starting point is 00:05:45 And I was like, wait, these guys are seriously good at, like, they were sitting around, you know, with, you know, writing code in VI on their, you know, full-screen terminals and not an IDE in sight. And I thought, this is what I want to do. I want to be the best I can be at C++ so that was my that was my entree you know into into computing and I guess I saw C++ as being this kind of elite environment and you know contra to the learning I'd done with Java and even Pascal.
Starting point is 00:06:26 Yeah, I was going to go to the next level. And of course, yeah, we don't see too much Corba these days. I feel like it's been over a decade since I've even heard anyone mention Corba. So wait, now, AutoCAD scripting is a Lisp dialect, right? Yeah, yeah, that's right. And it was pretty obscure. I didn't know about the Lisp-like tie-in until very much later. But I think it was one of the things that people found very confusing
Starting point is 00:06:59 because it wasn't imperative. And if you're sort of um you know working in that um environment it's um yeah very different from actually sort of using a pencil you're sort of trying to do some drawing by writing this crazy lisp stuff and um yeah for for whatever reason that that uh is just how my brain worked. It's kind of funny to me, the comparison, because I think I've mentioned publicly on the show before that the Lisp module that I had to do in my computer science curriculum, I just couldn't get it.
Starting point is 00:07:37 For some reason, Lisp did not work with my brain. And C++, to me, seems easy by comparison, but you started with Lisp, and you're like, well, I want to become an elite C++ to me seems easy by comparison, but you started with Lisp and you're like, well, I want to become an elite C++ programmer. I know. I also used to own a Hewlett-Packard calculator with the reverse Polish notation where you had to put everything in back to front. And that also appealed to me. So I guess I'm just broken. Well, what's funny is I never had a problem with rpn calculators but i just couldn't quite uh i don't know anyhow okay well sarah we got a couple news articles to
Starting point is 00:08:13 discuss uh feel free to comment on any of these then we'll start talking to you more about uh your career mobile development okay okay so this first article, Boost Outcome Review has been accepted. The outcome has been accepted into the Boost People's Plus libraries. We've talked about this a couple times. I think we mentioned it a week or two ago. And then obviously we had Niall Douglas on. Was it like a year ago that we were talking about the first Boost Outcome Review, Jason? I don't know.
Starting point is 00:08:41 It's been a while. It's been close to a year ago, I think. But yeah, it's been accepted this time. And he's got a couple more changes to make to the library before it becomes official. But I definitely want to say congratulations to Niall for doing all the hard work. And for Charlie for being the review manager. Yeah, in a way it almost seems like Charlie's the one that did the hard work here. Nothing personal to Niile, but yeah.
Starting point is 00:09:08 Yeah, this post that's on Reddit is very, very long and in-depth summarizing the review process. Charlie did a lot of work. Yeah, I think with Boost it's one of those areas where like you know grassroots development of the language has really shined as you know one of the things that guided the development of c++ i guess i've been doing it long enough that i can sort of remember the days when c++ was pretty fragmented with so many different implementations and i guess like way way back to tr1 and some of those early things it was um you know it was kind of you know the success of boost was really what you know the traction whereas like standards bodies there's so much theory so much sort of gray beard type stuff
Starting point is 00:10:03 but you know with boost it's like hey guys we're. But, you know, with Boost, it's like, hey, guys, we're actually using this. You know, this feels good to code with this stuff. And I'd love to see something happen with exception handling where it gets kind of a big update like this. So, yeah, looks interesting. Yeah.
Starting point is 00:10:22 I think one of the interesting to me results of the review was some people saying, well, it requires a C++14 compiler and that should be a detriment. But if you look back at the other comments from Niall and Charlie, I guess they said the first version supported C++11, but it required so many workarounds that the comments said, you need to get rid of all these workarounds. So they were kind of stuck in a
Starting point is 00:10:48 Catch-22, but the current version requires a very modern compiler, C++17. Excuse me, not C++17. Visual Studio 2017 with one of the latest service packs. Yeah, I feel if the trade-off is bloat
Starting point is 00:11:04 versus requiring a latest compiler compiler i think i'd go with the latest latest compiler that's definitely the way i always go i'm sorry go ahead now i was just gonna say the next article um c++ modules the working draft has been accepted into wg21 um has much changed in this since previous drafts of modules? Jason, did you get a sense of that? There was a comment from Gabby in the Reddit discussion about what changed. And it was something I think at the surface
Starting point is 00:11:37 was fairly minor about reachability of things. And then apparently Gabby's comment is that oh sure we thought that it would be easy to accept that comment but it actually took a month for me to resolve how to accept this particular thing and i have to be honest i don't fully understand the details but it's like qualifications of names and such okay i'm just wondering if uh you know we've had some guests on somewhat recently who are very critical of modules. I wonder if any of their thoughts have been addressed in the new draft. Well, no, I don't think so.
Starting point is 00:12:13 I haven't had a huge look at the module stuff. I did have a read on the CLang side, and they seem a lot more bullish about it. I'm hugely excited about this because I've worked for many, many years as a core QT developer and big projects like QT really, really benefit from tools that give you clean structure. And it's obviously not exactly the same thing as modules, but issues like visibility and clean separation, it's all too easy for someone to say, oh, wait, I can just see this symbol over here in this other translation unit.
Starting point is 00:13:03 Hmm, why don't i just you know define an extern and just do some fly-by brain surgery reaching over into that thing that i have no right to um yeah and it's just uh i you know i think uh for years like struggling with binary compatibility because of um hacks that people have done with you know was something that was very difficult with qt and i you know i think when you look at the code that comes uh when you have modules in say something like swift uh or even oh my god objective c um you know it it does work so well so i'm very excited for seeing it in c++ i think the um it's there's still basically a comment here that from one of the commenters on reddit that it still is implying that there's some sort of magical build system that'll help us find the modules so unfortunately
Starting point is 00:13:59 we're not entirely sure how that's going to ultimately look but hopefully it really will clean things up like you're saying sarah yeah yeah hopefully okay and then the last uh thing we wanted to mention was uh dr bjarne struestrup was named recipient of the 2018 ieee cs computer pioneer award which is obviously a great and well-deserved achievement so i just want to say congratulations to bjarne for that. Yeah. How many, like, Pioneer Awards have you won so far, Rob? I have not won any, Jason. I'll just dust down.
Starting point is 00:14:33 No, I don't have any. No, sorry. Yeah. I'll tell you what I do have up here, though, is, like, my strew strop. And, I mean, like, who doesn who doesn't have like several copies of this from over the years just uh you know his name is kind of synonymous with c++ and i'm just yeah i'm kind of amazed you know like you know with my copy of stevens and just some of the other classics i think just about everybody has had his name sitting up there on their shelf
Starting point is 00:15:08 all those years through their career. Yeah. Yeah, I think my copy is second edition. No, it's third edition. So it could be older, I guess, but it's still pretty old. Okay, well, Sarah, let's start talking a little bit more about your mobile development career. We talked about this a bit in your bio, but when did you really start doing mobile development? Yeah, it's interesting.
Starting point is 00:15:38 It really did become a thing for me. I guess it traces back to when I started working for troll tech in 2004 um i had my first gig which is kind of a university job and i landed this um landed this job and i'd been playing around with linux and i'd heard of qt and troll Tech and I really loved what they were doing. So when I found out that they were hiring for engineers in Brisbane, because, of course, they're based in Oslo and they also had a US office, I was like, okay, I'm going to work for this company. And so I pushed for it pretty hard and you know at first they were
Starting point is 00:16:27 like yeah i don't know if we want you and i was like hmm so i said look guys seriously i want to work for you what do i have to do um so you know i kind of um wound up doing like a period of time where I was sort of you know on probation with them but at that time they were growing really fast and it was probably I think like a month or two working with Martin Jones and you know Martin said hey Sarah you're doing great you know what sorry about, hey, Sarah, you're doing great. You know what? Sorry about that whole probation thing. You know, and then a year later, I was running a team. And we had a really interesting time. Like, I actually loved the work I did then. And I guess now, for people who say they're doing mobile programming, they're usually talking about stuff like Android and iOS.
Starting point is 00:17:29 But back then it was the Sharp Zorus, which was a little handheld PDA, and you'd scratch away at it with your little stylus. And that was built using an early version of something called Qtopia, which was almost like a complete operating system so it was basically the top half of an operating system it was built directly on top of an embedded Linux that we mostly kind of built ourselves you know like you know we had our own sort of tool chain and yeah it was pretty pretty dense stuff it it gave me a like an
Starting point is 00:18:07 understanding of the whole entire linux stack and developing for embedded linux with c++ um and it was i think yeah it was it was an amazing grounding uh it felt well it felt like launching a rocket ship because you would build these devices and send them out there into the world and you know unlike server-side programming where it's like oh wait you know there's a problem in production let me just hack into that right here and fix it you had all these these units out there flying around uh you know crashing and you know having problems and there's nothing you could do except um you know try to make a new release of software and hope that people would get their Zorus out and flash that onto the devices you know but um but it was yeah it was it was kind of interesting times and i
Starting point is 00:19:05 um i think you know with hindsight i much prefer the current world of mobile development where you do have you know um you know a lot more system software so you're able to be a little bit more creative in what you're building but we spent so much of our energy just trying to get the systems programming side of things right that you really didn't get a lot of time to actually innovate on functionality for folks. You know, it was, yeah, but it was a super interesting start in the world of mobile development. That's for sure. Yeah, that was certainly before i was and you know
Starting point is 00:19:47 looking for like handheld devices i can think i mean i had a palm os before that and then later than that i had a nokia n800 which i don't think was related to that to troll i know troll tech ended up being bought by nokia at some point right yeah, it was. That's right. It was kind of interesting history, because back before Nokia kind of came on the scene, Troll Tech, you know, we would go to conferences and over there, especially in Europe, there'd be a big cabal of these Nokia guys talking in hushed tones around their secret IP for their latest Linux devices. And I think they had a tablet back in the day, which might have been the N800, I can't remember. Would have been like sort of 2006 or so, something like that.
Starting point is 00:20:42 Yeah, 2007 it was released. So, yeah. six or so something like that yeah 2007 it was released so yeah yeah um and i remember um because at that time you know uh because qt was uh open source and although i still bump into a lot of folks who have this eye you know qt was this closed thing and all the rest of it well yeah it was closed but it was also open you could you could get it under the GPL and open source all of your stuff as well or you could pay some money to get the closed source version and it was amazing I still ran into a lot of folks who's are you're that terrible closed source thing. Well, you know, Nokia, when they took over, when they bought the company in, I think it was like 2008, they actually LGPL'd everything.
Starting point is 00:21:36 So it became even more open. And still that was not enough for some folks. But, yeah, it was kind of interesting how the two companies wound up on this collision course and it to me it was kind of inevitable but it was really off the back of a thing called the green phone uh which i think we launched in like 2006 um and i headed up the team that built the content management system for that actually so this was before like just about the time that there was an Android project Andy Rubin would have been running the project that Google actually bought and I worked on a
Starting point is 00:22:18 system to actually download and run native C++ binaries on embedded Linux devices and I hacked together this kernel patch that transported a key into the kernel so that you could then launch from an NITD this user space process that would become your native C++ application. And it would have, you know, an entire security profile, which was decided by a policy framework that dictated what it could actually run with as far as privileges go. And this was before the iPhone, before the Android phone. And I spoke about this thing at a conference. And, you know, we, like, I got into this conversation with some of the Nokia legal guys, and they
Starting point is 00:23:19 were like, Sarah, you know, it would have been awesome if you would have spoken to us about patents before you went and talked to this conference. I was like, oh, sorry. That does sound fairly advanced compared to the permissions we have now. I mean, the way permissions are handled with applications, that sounds pretty advanced for the time. It was very, yeah, it was very yeah it was very advanced and it was sort of um you know back at that day you know we were really in the in the mindset of uh java midlets and everybody was like ah you know java that's all we need for secure apps on devices and everybody was like have you seen how slow these
Starting point is 00:24:00 old processes are we just you know back to the early days of encore we need all the performance we can get guys you know i'm so sick of these crazy java applets because that's essentially what midlets were they were like your browser-based applet thing running on your phone um yeah so i mean it was off the back of that kind of technology that Nokia came in and bought the entirety of Trolltech because they wanted to have what we were doing in their uh their Linux uh teams and yeah and it was it all kind of happened at the same time and I think it was it was because of the growth of the ARM core processor and its capability that you know cell phones were going to happen like apple you know were right there on the scene with their iphone uh android got bought and became a
Starting point is 00:24:55 google project but the reason all that stuff was happening at the exact same time was just kind of arm core devices touch screens everything was you know coming together in the palm of their hands right at that particular time so I want to talk a little bit about the talk you gave a Pacific plus plus this year I watched it online last week it was really interesting you you wrote this cross-platform app for Android and iPhone in C++ with Qt or Qt. What made you decide to present this talk? What was the genesis of that? Yeah, a few kind of things went into it was I'd done a training course a
Starting point is 00:25:39 few years ago for a bunch of engineers from Boeing and that took that training course was basically me standing up there for ages like hacking in front of these guys you know teaching them how to use QT and I got I hope they weren't building missiles with it I mean mean, Boeing does other stuff. But, yeah, anyway, and I just, yeah, and it was the idea was like trying to get these guys working with C++. And the message I was hoping to send was, look, you know, really you can just write this stuff. It's actually not that hard. And I feel like, especially with modern C++, the fact that we now have lambdas,
Starting point is 00:26:33 you know, we can write type-safe code without having to, you know, specify up front what the types are, you know, with our autos and all the rest of it. So we can be a lot more fluid and expressive. And I just wanted to try to say to folks, like maybe young folks coming into their careers that might watch that video, look, you know, C++ is a great language for you guys to get going with. And you know what? You still can address multiple platforms even though you're choosing C++.
Starting point is 00:27:06 And I guess too, for people like us who have been using C++ for a while, you know, maybe C++ is that cross platform solution you've been looking for, you don't have to go use some JavaScript thing, which is going to, you know, put layers of abstraction between you and the platform. I don't know if I succeeded, to be honest, in the talk. I think maybe I made it worse. Yeah, because I actually watched Chandler's talk at the conference and I was like, yeah, you know, Chandler looks to be pretty good at hacking
Starting point is 00:27:46 C Lang on the fly I yeah I might just need to brush up a little bit before I tried that and then I thought hmm I've kind of just done the same thing with QT haven't I maybe I've made it worse but but yeah that was what I was really trying to do there so but I don't think you made it worse. I was pretty impressed with the live demo you did. Yeah, the fact that you proved that you could do this in under an hour and it worked. The last time I tried to write an iPhone app,
Starting point is 00:28:19 I think I spent several hours just dealing with security keys, basically. Oh, yes. That's so painful. The fact that you had it all working from the QT IDE was, yeah. Yeah, well, it's kind of interesting because the QT iOS implementation actually started out with a community project. So I can't remember the gentleman's name, but a lot of the early work for that was done by a community member. It was one of the patterns that happened with QT was some consulting would happen
Starting point is 00:29:01 for a big company, and the big company and the QT consulting arm, they would take what they'd done and it would wind up in some kind of module, which was, you know, not open source, not all that available. But for whatever reason, the early work on the iOS support was done in the community, which was super awesome. And Apple, to their credit, have actually used open technologies for most of the tooling around their code signing. So it's all open crypto. It's not like some crazy proprietary thing, which they could have easily done.
Starting point is 00:29:43 And the result is that all of the toolchain stuff is able to be taken out of Xcode and put into Qt's project management system which meant that when you're doing signing it was able to be hosted inside of Qt's creator IDE or even just your own build system, which is super awesome. So they did make it a lot easier. It's still quite possible to get yourself in a huge mess with iOS signing,
Starting point is 00:30:20 but that's true even with Xcode. I wanted to interrupt this discussion for just a moment to bring you a word from our sponsors jason and i had a super interesting podcast with arno two weeks ago he's the cto of think cell the number one graphic software used in consulting firms he's still looking to grow his team and what they offer is quite appealing they work on extremely challenging c++ development tasks and they offer more than pleasant working conditions. With them, you could be working on things like solving linear constraints for automated layout or reverse engineering PowerPoint with IDA. They have a large library of generic algorithms, extending the functionality of STL and Boost, in particular improving Boost ranges. So what you contribute could be used
Starting point is 00:31:04 immediately throughout their half million lines of product code. They're always using the latest C++ features that are available in the latest version of Visual C++ and Clang. That's because ThinkCell software is cross-platform for Windows and Mac. As for working conditions, I'm talking about no overtime,
Starting point is 00:31:19 no meetings, no deadlines, and any technical issues can be discussed directly with Arno. With them, you join a team of 20 were when you were getting started in mobile development, and obviously we're in a different world now with iPhone and Android, but what are some of the pain points that still exist when making mobile applications using C++ and Qt? I guess the biggest area still is code reuse across the platforms. And, you know, that's always going to be a tradeoff between that and the degree to which you want to follow the user experience idiom or the sort of native look and feel. And I think, you know, like let's contrast two apps.
Starting point is 00:32:32 On the one hand, you might have some ugly B2B thing, which is just going to be used inside of a company. You know, like let's say it's, you know, folks reading meters or something like that for the gas company, you know, they're not going to really care what the UX looks like. It just has to work and maybe they've got a fleet of Android tablets and a fleet of iOS tablets in the company. So that B2B app, it can look whatever it wants to look like.
Starting point is 00:33:03 So you can probably get really high code reuse maybe 95% of your code will be the same from one platform to the other and yeah you can use your C++ stuff right across and and when you're in that environment your cross-platform solution is competing with things like, you know, Titanium or Xamarin or some of these other cross-platform solutions. And I just, I really prefer compiled languages, guys. I just, JavaScript, great, terrific. Somebody else can write that code.
Starting point is 00:33:50 So, you know, if I'm going to be doing cross-platform, I would rather use C++. And I think it's the other side of development where you're doing a public-facing app. You want it to look really good you've won a lot of fluid animations you want to be able to show folks who are using the app the kind of things they expect on their android phone or their ios device whatever it happens to be and when you do that suddenly you start finding you've got a lot
Starting point is 00:34:27 more hash if defs you've got a lot more code that's only going to run on one platform versus the other your code reuse drops to say 60 and then you start having those headaches then it's like oh my god which version is it that we've got the production issue oh you know i'm fixing a bug but it's not over here and it can just kind of be a nightmare your continuous integration environment is just a bird's nest um yeah uh it it still exists and i i think when you get to that sort of level of code reuse you almost want to just have a completely separate tree under your source control and have a completely separate tree
Starting point is 00:35:13 for your iOS versus your Android versus whatever else you're doing. And you're saying that's if you're using Qt for the user interface for both of them? Yeah, well, I think, yeah, you definitely can. And I think Qt compares extremely favorably with something like Xamarin. And there's actually other interesting things too. So folks are using game development frameworks to create apps these days as well. Yeah. So like if you've got an app that, say, it's related to audio, for example,
Starting point is 00:35:47 or you've got an app that has a lot of animation on it anyway, for whatever reason, using a game development framework is actually a pretty good option. And there's Cocos 2DX, that has something that's been around for a while, a C++-powered framework. Qt compares very well to something like Cocos2DX as a development environment. Obviously, Cocos2DX is free and open-source community supported, but if you're sort of a corporate a sort of a corporate type person you've
Starting point is 00:36:27 got the backing of your company Cocos 2dx is kind of a lot of the documentation is in Chinese which is a bit challenging for folks like me that don't read Chinese so yeah if you want to have a neck to choke, like I'm paying somebody, give me a neck to choke and C++, Qt, they're definitely going to be able to do that for you because if you want to go and pay to have an environment like Qt for your commercial thing, well, then you can do that with Qt. Or alternatively, of course, you can use the open source version and stick all your code up on GitHub,
Starting point is 00:37:11 and that's the other way you can go. Right. One specific pain point I know I've worked with mobile development is working with platform- know, like platform specific APIs, like geolocation or in-app purchasing. Um, cause that can usually only be done in like Java for Android or Objective-C and Swift for iOS. Um, does Qt provide any way of, you know, being able to call into those APIs from C++? Is that still a major pain point? Yeah, it is. It's pretty nasty to call from C++ into native APIs on iOS.
Starting point is 00:38:00 You kind of got to wrap that stuff through to Objective-C. Yeah. At least it's all in the same kind of, you know, code base because you don't have to marshal across sort of a language border. The symbols are all just right there with C++ and Objective-C. On Android, it's a little bit worse because you've got the NDK, and it can be a little clunky going from the NDK into native platform APIs on Android. It depends on how it's set up but on Android the way your C++ environment works is that basically your C++ binary compiles as
Starting point is 00:38:57 a DL opened, you know it's effectively being DL dl opened it being loaded in as a dot so into the memory space of your uh of your of a java process you don't need to ever see that the environments all that environment is completely hidden from you if you want to you can just spend your whole life as a you know writing your qt app for Android in C++ but probably if you're going to be working with a lot of open source at least platform specific APIs you're going to want to use a bit of Java but Qt has actually got some wrappers for some platform APIs, and they did produce something called the Qt Purchasing Module, and I believe that is available as a free module.
Starting point is 00:40:00 Quite a few of the very useful, like I think the mapping module, for example, might be a proprietary one. I'm not sure. But quite a few of the most useful, juicy, tasty ones that you really want are unfortunately sort of the product of collaborations between like, you know, QT consulting guys and companies. So they've wound up being something that's kind of a bit proprietary but but yeah those some those modules are definitely available and if you're working in a commercial environment you know it's just super nice being able to just take them off the shelf and use them yeah so you you mentioned in your bio that you are basically running two companies right now that are involved in mobile development, right? Exactly.
Starting point is 00:40:49 So what is this? Two full-time jobs. How does this play out like in the real world? What does your workflow at these companies look like? Are you using QT? Are you using these tools in your day-to-day work? Yeah, so I have two companies. One of them is called Smithsoft,
Starting point is 00:41:08 and that is me making money to put food on my table while I run my other company, which is a startup, and I have a co-founder, Magella, and together we're building this app called sortle, which is, um, uh, well,
Starting point is 00:41:29 it's a platform really that is, um, designed with a goal of using AI to create an intelligent assistant that is going to sit in the palm of your hand and understand how you think about your photos. So like, you know, for me, I go to a lot of meetups. And if I take a photograph of a bunch of folks standing in a room, that might tend to be a meetup for my, you know, outside work stuff. So SORTL would be able to understand what those photos are. And it uses AI to do that.
Starting point is 00:42:09 So the stack there is C++ at the bottom level talking to OpenCV and also to Google's TensorFlow framework on the device. Oh, so it's doing the OpenCV on the device, not sending it up to a server? That's right, yep. Okay. Yep, yep. Yeah, these days, like the multi-core 64-bit CPUs
Starting point is 00:42:37 that we have in our modern devices, crazy powerful, plenty able to run two or three convolutional neural nets through TensorFlow, plenty able to run a lot of OpenCV algorithms, just like that. It's amazing. Yeah, 10 years ago, there's no way you could do it. But today, yeah, no problem at all.
Starting point is 00:43:02 But, yeah, and then on the Smithsoft soft side i still have this oh my god it's just it's the worst piece of software 2013 i think it was i wrote a uh cross-platform uh editor for programmers to be able to hack into um plist files and um, P list files. And, uh, just in case folks haven't heard of what a P list file is, it's basically a data file that, uh, Apple made pretty popular. It is actually an open standard, but to be honest, Apple's about the only people who use it. Um, and if you plug your iPhone into your windows computer, you're going to get a bunch of these plist files scattered through your home directory. And for folks that want to hack into those for whatever reason,
Starting point is 00:44:11 don't shoot me, I just make the screwdriver. If you want to mess with your iTunes, that's your bag. Anyway, I build this thing and it turns that uh even though there's a couple of competitor products they don't really work too well with the binary version of plists they only kind of work pretty much with the text version um yeah so people have been buying this thing i keep jacking the price of it up hoping they will go away but they don't they keep buying it um and in the end i i was making enough out of it that was kind of paying for my desk and also for me to hire a russian guy who um thank you sergey i am so sorry about
Starting point is 00:45:01 my terrible c++ code i did at least write a a bunch of unit tests for the back-end serialization because I had to reverse engineer the plist format, and I was really not confident that it was going to survive unless I put some unit tests around it. But the rest of it is just getting more and more legacy by the day. So, yeah, so that is all obviously QT cross-platform stuff as well. But, yeah, that's my life. Oh, God, seriously, I really need to.
Starting point is 00:45:39 I'm looking forward to the day when Sortal takes off and I can just find some, like I will pay somebody to open source P-Listinator just so it can finally go away for good. Yeah. We also, well, you mentioned in your bio that you have had an interest in games development for a long time. How does that tie into your current life? Is that what Swirl's doing?
Starting point is 00:46:11 Yeah, well, so here's the thing, right? I'd been working for Nokia. So I'd worked for Google for a time. I was in Mountain View and I got back in 2009. I got a job with Nokia, who had bought Troll Tech by that point. And, yeah, it was fun and all, but I was not enjoying it. And I had enough money in the bank that I could figure out what I wanted to do and I I spoke to my my hubby at the time and I was like look I want to have a go at running my own
Starting point is 00:46:55 business and he said oh are you going to do something you know profitable like making apps and I said well I was kind of thinking of making games and he was like you're never gonna make any money and I was like I know but I'm gonna try anyway uh I did make a couple of games uh I shipped a couple of games um and it was it was super fun uh the one that I shipped in 2016 uh was called Pandora's Books and it was super fun. The one that I shipped in 2016 was called Pandora's Books, and it was a game about like unscrambling words from classic novels. So like H.G. Wells' War of the Worlds, you know, you could unscramble little words and stuff.
Starting point is 00:47:40 And it was awesome. But I learned some things about myself which is i'm a lot better at programming than i am at designing games designing games is hard making them fun is even harder um uh yeah and know, running a business is unbelievably difficult, unbelievably difficult. When you are a developer, you're bracketed by professionals who do things like product management and marketing, all of this stuff. And, you know, sitting there in Nokia, I thought, wait, I can do that stuff. Sure. sure how hard can it be but it actually turns out it's really hard um yeah so you know I I loved game development I I really loved it I met a whole
Starting point is 00:48:35 lot of folks who were inspiring very very talented um much better than me at doing the things outside of programming in game development and i i did interview i i got uh offered a job at telltale in marin county a couple of years ago and oh my god i i very seriously considered it but i um in the end i just thought no look i want to keep working for myself and i i decided to go back into app development and i'm now doing some app development consulting for some folks who want um uh want apps and i do that on the side in the weekend and i find that you know i can do that on the side in the weekend, and I find that I can do that in the weekend. It's not that hard for me. So you've got three jobs then. Well, yeah, I kind of want the other jobs to go away. The Smithsoft thing is like a container for app development, my games, Pelotonator, and all of that stuff.
Starting point is 00:49:47 Okay. And I'm still trying to take a big giant leap over to be completely able to do my startup 100% of the time because it's more than a full-time job. It's like five, six days a week, and then I do mobile development. It means that I basically write code and eat and sleep and that's it which is very boring so how far off are you from actually making a public release uh from your startup or have you already so we are about hopefully to we're working right now towards um a big milestone with getting a um a beta release out the door which will go to a bunch of folks who have been signed up for a while now to our um
Starting point is 00:50:37 to our beta program um we've got most of the stuff working so we can actually analyze photos on the device. And I can't talk too much about how the actual secret source works, but I wrote a bunch of, how can I describe it without giving too much away? Basically what it does is you've got a bunch of computer vision stuff happening at the lower level. It's all C++ stuff. And that gets synthesized through another layer
Starting point is 00:51:15 that effectively applies reasoning to the outcome of the computer vision. Okay. Yeah, so we've got all that stuff working on the device. It's just a matter of basically doing the UX programming to expose that functionality and also fleshing out all of the breadth of that computer vision stuff that I want to build. i'm also wrestling with um amazon amazon i hate you oh god yeah anyway um yeah so uh very soon is the answer to that question very very soon um we're also chasing investment so hey investors come and hit us up seriously guys give us some money we could use uh use a couple more programmers i'm sorry can listeners sign up to be a beta tester for
Starting point is 00:52:16 sort all when the beta release goes out oh absolutely we would love you to do that um so mysortle.com or sortle.io will also get you there um or if you check out my twitter um uh i have links to sortle on there but yeah sortle.io and scroll down the page we have a an area there to sign up for the beta so we would love it if you would do that. It would be hugely helpful. Okay. Well, Sarah, it's been great having you on the show today. Yeah, thank you. So you just gave out the link to the beta.
Starting point is 00:52:52 Is there anything else listeners should go and look for you for? Yeah, I have been trying for a long time to do some stuff around mentoring younger folks, diverse folks wanting to get into computing. So I would love it if listeners to the C++ podcast would want to get behind any of those kinds of initiatives. So, you know, jump on my Twitter or, um, check out, uh, Women Who Code or, uh, the, um, any of the other sort of diversity initiatives and, um, you know, get behind helping the folks
Starting point is 00:53:36 who are trying to do that because, um, it's, it's, uh, it's great work. We all need it. We all want to have more diversity in our software teams, and you all can help out with that, whatever, you know, background you have. So, yeah. Okay. Sounds great. Well, it's been great having you on the show today, Sarah. Yeah.
Starting point is 00:54:02 Great to have you speaking to me i i love your podcast by the way great work guys oh thank you very much thanks for coming on all right thanks very much see ya thanks so much for listening in as we chat about c++ i'd love to hear what you think of the podcast please let me know if we're discussing the stuff you're interested in or if you have a suggestion for a topic i I'd love to hear about that too. You can email all your thoughts to feedback at cppcast.com. I'd also appreciate if you like CppCast on Facebook
Starting point is 00:54:32 and follow CppCast on Twitter. You can also follow me at Rob W. Irving and Jason at Leftkiss on Twitter. 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 is provided at cppcast.com. Theme music for this episode is provided by podcastthemes.com.

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