CppCast - Qt Mobile Development
Episode Date: February 9, 2018Rob 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)
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.
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?
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
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.
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
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
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
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.
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.
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
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.
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.
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
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.
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
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.
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.
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
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.
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
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
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
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.
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.
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
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.
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
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.
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
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.
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
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
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
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.
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.
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
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
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
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
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
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,
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++.
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
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,
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
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.
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,
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
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,
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.
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.
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.
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
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
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,
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
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,
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.
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
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.
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.
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,
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,
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.
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
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.
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,
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
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.
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?
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
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.
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
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.
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
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
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
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.
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
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.
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
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.