CppCast - TurtleBrowser
Episode Date: December 24, 2020Rob and Jason are joined by Patricia Aas from TurtleSec. They first talk about updates to a Web Assembly compiler Cheerp and an announcement for a new systems programming language conference. Then the...y talk to Patricia about her current project building a new web browser using modern C++, Qt 5 and the Chromium engine. They also discuss Patricia's consulting business and managing it during the pandemic. News Pointers are Complicated II, or: We need better language specs Cheerp 2.6 - compiling C++ to WebAssembly and JavaScript Why Another C++ (And More) Conference Links TurtleBrowser on GitHub Trying to build an Open Source browser in 2020 - Patricia Aas TurtleSec Sponsors Visual Assist
Transcript
Discussion (0)
Thank you. code inspection and suggestions, powerful refactoring commands, and a whole lot more. Even spell checking and comments.
Start your free trial at wholetomato.com.
In this episode, we talk about a WebAssembly compiler
and a new systems programming conference.
Then we talk to Patricia Oss from TurtleSec.
Patricia talks to us about her Turtle browser project
and building a consulting company during the pandemic. Welcome to episode 279 of CppCast, 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?
Okay, Rob, how are you doing?
Doing okay. It's Christmas Eve Eve, and this will be our Christmas episode for the year.
This will actually air on Christmas Day, I believe, at least.
As long as i don't drop
the ball editing it on christmas eve then yes that then depends on your time zone and which
side of the international date line you're on and those kinds of things of course right right
uh so we should have a quick programming note because we're talking about what we're going to
do for next week we don't have a guest schedule but we think we we're going to do for next week. We don't have a guest schedule,
but we think we're still going to do an episode with just the two of us,
talk about some news, and maybe if anyone wants to send us questions,
maybe we could ask each other some questions too.
So feel free to tweet at CppCast or email feedback at cppcast.com to send us any questions you want us to bring up during the episode.
And I think if we pull that off, we will not have missed a single episode this year.
We have not missed a single episode this year.
And actually, I looked at the number of episodes we've published already, and this should actually
be episode 52.
Just the way the weeks fell this year, we wound up, we should be able to get 53 in somehow yeah
so yeah okay well at the top of every episode i threw a piece of feedback uh this week i got
this youtube comment uh from our last week's episode and this is from i'm not gonna be able
to pronounce his name uh george pepek maybe maybe but he wrote didn't expect this collab for my favorite c++
youtubers awesome watch and that was our episode with andreas cling who uh looks like he does have
a pretty popular youtube channel where he works on uh serenity os program yeah we got a lot of
awesome feedback on twitter from that one because so many people were interested in his project
yeah and it was a really interesting project if you haven't listened already definitely go back and listen to that one okay well we'd love
to hear your thoughts about the show you can always reach out to us on facebook twitter or
email us at feedback at cpcast.com don't forget to leave us a review on itunes or subscribe on
youtube joining us today is patricia os patricia has spoken at conferences on subjects ranging
from sandboxing and chromium to vulnerabilities
in C++. She has a master's degree
in computer science and 15 years professional
experience as a programmer, most of that time
programming in C++. During that
time, she has worked in codebases with a high
focus on security, two browsers,
Opera and Vivaldi, and embedded Cisco
telepresence systems. Currently, she works as
a trainer and consultant for the company
Turtlesec, which she co-founded, which specializes in the intersection of programming and security.
As a side project, she is trying to make an open source browser called Turtle Browser.
Patricia, welcome to the show. Welcome back.
Thank you. Thank you. Thank you for having me again.
I don't know if we've ever brought up your master's degree before since we've had you on,
but I'm curious if you recommend to other
people who have considered it going back to university to get a master's degree or with
what your personal take was on a master's degree in computer science i i think it's very cultural
or well not cultural really societal in in norway education is is a higher educate or
most education is free or or extremely cheap like, you know, a few hundred dollars per semester.
Okay.
And then you also get very good loans and scholarships and things from the state for living expenses.
And so basically everyone, almost, I would say 99% of everyone who works in tech in Norway have a degree, either a bachelor or master's.
And probably most of them have a master's degree.
And it's just because of the society that we're in.
So in Norway, people will expect you to have a degree when you apply for a job.
And likely a master's degree even you say yeah so so most most people that you will be up against for a position will have
a master's degree as well i can never get a job in norway I'll be fine but it's just so that's why I wouldn't say like
it's not like I would say like
oh yeah go get a master's degree
it really depends on your
on your society
on the job market
on how accessible it is
how expensive it is
all of these things will factor into
whether or not it's worth it
so for me I'm just very privileged to be from a country where how expensive it is all of these things will factor into whether or not it's worth it uh so
so for me i'm just very privileged to be from a country where this stuff is basically free right
do most people go straight through they go straight from uh secondary or whatever high
school into uh and and go straight through their master's degree and then find a job
yeah yeah that's That's the typical.
Sometimes people have like a break, like have a year where they work or something,
or just go and do like some kind of more of a, I don't know, travel around the world
or learn how to play the guitar or something.
And then they start university and and so so especially
for for any kind of of like tech job but also for any kind of and most people have if you're working
in any kind of of skilled job you all often have some some sort of education okay all right well
patricia we got a couple news articles to discuss. Feel free
to comment on any of these and we'll start talking more about what you've been up to lately, including
the browser you're working on. Okay. Yep. All right. So the first thing we have is this article,
pointers are complicated to or we need better language specs. And this is on ralphshea.de blog.
And I don't think I've ever read an article
that talked about this concept of,
what was the term he used when talking about pointers?
Jason, you remember what it was he used in here?
No.
I don't know what you're looking for.
I read through the whole article yesterday,
and I am now brain farting on the terminology he was using
when he was talking about pointers.
Provenance.
I've never heard anyone talk about provenance before.
Okay.
Like knowing where the pointer came from.
Yeah.
So in this article, he talks about why provenance is important and how if you apply too many optimizations to code that interacts with pointers, you might basically break some of your code.
And he put in a few examples of how that might happen.
What do you think of this article, Jason?
I didn't get all the way through it, honestly, because when I was trying to read it, I was extremely distracted by work stuff that I was dealing with.
So, yeah, that happened.
How about you, Patricia? Do you have a chance to read through this one?
No, I was also distracted by work stuff.
But I have to admit, you don't hear a lot of people talk about provenance,
except for people who work on compilers.
They tend to have really deep and heated discussions about these things.
So maybe I should read this article.
So you read the article.
So what can you teach us?
Some of it was certainly over my head but um you know he goes through this example where he talked about how you can you know convert from pointers to
integers back and forth in order to do these optimizations but the issue was that pointers
have provenance integers do not uh therefore one of these optimations Doesn't really make sense and therefore
Can cause some erroneous behavior
That the compiler
Can do
And his example all dealt with LLVM
But I believe he said the same thing happens with
GCC and MSVC
So yeah, if you're interested in Providence and you've never heard of it
Definitely read through the whole article
Okay
Next thing we have is a update on
chirp and this is a web assembly compiler which i think we mentioned it before i think we mentioned
it like a year ago uh i'm thinking we probably should have a guest on to talk about chirp in
more detail but it's good to see that it's an active project uh They're up to version 2.6. And I'm not quite sure what really
changed in this version compared to earlier versions, because they're kind of just giving
a general overview of what Chirp is in this article. Well, there's something I noticed in
here. And I don't know if it's an updated feature or not, but it really jumped out at me. And they
say examples of Chirp's own optimizations are the pre executor.
Now I have to admit that I stopped reading the article at this point, because I said,
excuse me, pre executor. And I clicked on that. And I dove into what that is about.
And that's something that's just part of the chirp compiler.
It's part of the chirp compiler. Yes. of the chirp compiler yes so i believe if i understood this
correctly after they actually generate the javascript code they then go through the javascript
code and say which functions in here do we have enough information to just go ahead and execute
them now and remove them from the code so it's's kind of like constant folding, function inlining,
constexpr stuff on steroids.
It just says, what do I have that I now know that I can just do?
And if you look at their examples and their benchmarks,
it is absolutely ridiculous.
If you click on the pre-executor link itself,
dive into those benchmarks.
For some of those examples,
it's like 1400 times smaller
generated code, because they were able to pre execute it.
Wow. Whoa, that's really impressive.
I like it. Yeah.
Before you know it, you'll all be uh web developers yeah it makes me wonder like if anyone has done this kind
of optimization like after the fact on on on the llvm ir so you compile your executable and then
say okay now do another pre-execute phase and tell me which things that the optimizer didn't find but
we do know enough information to actually execute them now.
So this would be like post-link time optimization,
like after you've done it all,
it's all kind of put together.
Now do an extra pass.
And before translating to machine code.
I mean, I don't know.
For all I know, we're going to have
like a dozen LLVM developers, right?
And be like, yeah, yeah,
we basically already do that, right? I't know yeah um but it made me wonder anyhow Trisha have you
done anything with WebAssembly no I haven't done I haven't done a lot with WebAssembly but it is
something that I've been well I've been talking to people who make things for like make that work
on the engines uh around WebAssembly but I haven't actually been around WebAssembly,
but I haven't actually been doing WebAssembly myself.
But the technology behind it is very interesting.
But it had a little bit of a hiccup with Spectre and Meltdown where some of these things suddenly became exploitable
through WebAssembly.
But I think it has recovered now. That's good. exploitable through WebAssembly.
But I think it has recovered now.
It's fine. Who cares?
You don't really hear anything about Spectrum Meltdown anymore.
It was real big news like two years ago, right?
Yeah. And now it's like, yeah, I don't know. It might be bad.
All of our devices are compromised. We just don't know it. It's fine.
Okay. And then the last article we have is on John Hiedmaneed's blog. And if you hadn't already seen this on Twitter, he announced that he's going to be putting together another uh not just c++ conference
but kind of systems programming languages conference and uh i don't think he put out
an exact date yet but this should be uh like fall 2021 and i believe it is going to be a all
virtual conference uh but he's kind of talking a little bit about his motivation for doing this
conference and how, you know, I said it's a systems programming language conference, not just C++,
because apparently there aren't any conferences for C developers, for example. So we wanted to
make sure they felt invited to this as well. And the other interesting thing he's doing is having
double blind submissions. So, you know, if uh jason turner and you're submitting a conference
talk uh your your name alone might not get you the into the cozy conference he does say of course
there's no way to stop you from putting something like i wrote a great book on large scale software
architecture that's really good and helps you modularize and structure large software.
And the sequel is out and you should buy it now.
Right, right.
We don't have no idea who he's talking about there.
Yeah.
But definitely a good idea to do those submissions double-blind.
At least it makes a lot of sense to me.
Theoretically, the...
Oh, sorry, Patricia.
No, no, no.
I was just going to say that I think the whole putting C
and he was talking about Rust as well
and all of these things together.
I think that would be really interesting
and have some kind of cross-pollination of ideas
and learning as well.
I really need to learn more Rust.
So that would be awesome.
Yeah, sorry, but it was not about the double blind thing.
I agree. And I think the it's, I'm trying to decide if he intended this. And I think
he did. It's C-O-S-Y is the name of the conference. And I think it looks like it
should be pronounced cozy tech. I think it was supposed to be cozy, or at least I got that impression.
Yeah.
Yeah.
I don't know how else you would try to say it, at least in English.
Cosy doesn't sound as much fun.
No, no.
I know the submissions to Meeting C++ are supposed to be anonymized.
And when I submitted a talk to meeting C++
one year I had someone tweet
back to me like oh I just reviewed
your talk and I'm like how
but it was anonymized like I could tell it was
you
just based on the content
I guess
it's like no it's going to be
a talk about new features
in C++,
and the examples will be in ChaiScript.
Yeah, well, yeah.
Yeah, that's a definite giveaway,
but I don't know if I did that on that particular talk or not.
I might have.
Okay.
Well, Patricia, do you want to start off by telling us a little bit more about the Turtle Browser project that you started on?
Yeah. Well, I guess I have a thing about browsers that I really can't get over.
So my first job was at Opera. So that was back in, like, my first, like, real tech job was at Opera in 2005.
And so, and I've been going, like, I've been, even when I was at Cisco, I was also doing some browser stuff there for their embedded products. um it wasn't actually the feature that or the the the tech stack that i was working on and for them
wasn't even released like until like two years after i had left so so i was on nda for like two
years where i couldn't talk about anything i'd done i was like no i did like video conferencing
stuff uh things with screens.
But basically I was working there also for having like types of like apps where you could have on your video conferencing equipment that you might have like the calendar and stuff like for your workplace or some kind of fix or even just uh just uh like if you have a big screen in a room and nobody's actually in a teleconference then maybe you would want to have some kind of wallpaper there or some
kind of like signage or something you know so stuff like that so that's um what i was working
on making that in uh in html and and javascript and with uh so so it'd be easy to do um uh but yeah so and then i left cisco because
i i i figured out i actually really wanted to make a browser i think this is a sort of a theme
and then i went and i worked at vivaldi uh working on the vivaldi browser uh but then uh i when i uh then we started uh uh turtle sec and um and i was working on
mostly like getting the business uh up and running and and things like that and then for some reason
like well i think it was in february or march this year i tweeted uh i really want to make a browser because I can't get over it for some reason.
And then the pandemic hit and everything I was planning to do for like the entire spring was canceled.
I was like, conferences canceled, the trainings canceled, everything was canceled.
And then I was like, okay, so maybe I'm going to make a browser.
As one does. Yes. As one does.
Yes, as one does.
So I basically, I tried, so I started working on it this spring.
And then, you know, a little bit over the summer.
But then I had to, like, actually do work, work again, like, after summer.
Like, things that actually pay the bills.
But then now i i
dedicated like december and january i'm going to work on the browser uh just because i like it so
much so i'm gonna like so even like and that's the weird things like even like the really boring
like horrible parts like the stuff that i'm doing right now. I even like those bits.
Even those bits are fun.
So yeah, I'm enjoying myself.
I totally get that.
It's my second or so real job.
I worked a lot with infrared technology.
And it was like 10 years before I gave up on the idea of custom creating my own universal remote from like PCB up.
And then I'm like,
nevermind,
it's not worth the effort.
But for like 10 years,
I still would make notes every now and then about what I wanted this to do.
So.
Well,
you should have done it then because now like nobody has a universal remote
anymore.
Yeah.
Yeah.
That would be meaningless.
Yeah.
Not quite meaningless,
but yeah. So tell us a little bit more
about the project uh is it open source are you looking for contributors and is it based on an
existing engine or are you building it from the ground up uh and okay let's uh we can do it
backwards let's see if i remember all of the questions. Sorry, that's too many at once.
So the idea is to base it on Chromium Blink,
like most of the big browsers right now. Mostly, well, for many reasons, because it is very mature
and I don't have to worry about that
because I have enough to worry about by doing the whole thing.
But if I, you know, at some point get like really rich
and I can afford to pay like a couple of hundred people
to make a browser from scratch,
then, you know, that would be awesome.
But currently I don't see that in my future.
Though, you know, I would love that.
So please, like, you can come give me money, just no strings.
Like here, Patricia, I have like a billion dollars and do things.
And yeah, I don't see that happening.
So start a Kickstarter or a Patreon or something.
Yeah, I'm not sure it's going to get me enough money
to pay even one single engineer.
So, yeah.
Yeah, so the idea is to base it on Chromium Blink,
but I also want to make the UI
and as much as possible in Qt with QML
because I really like that.
So the idea was to use the integration into Qt with QML, because I really like that. So the idea was to use the integration
into Qt for Chromium Blink, which is called Qt Web Engine. The problem with Qt Web Engine and
where I'm at right now is that, yeah, and everything is open source, by the way, that was
one of your questions. And looking for contributors, yes, please reach out to me on Twitter
and we will work something out.
But yeah, so where I am right now is that the problem with Q by Benchim
is that it does have quite of an old Chromium Blink version.
And to have a real browser, I have to follow the Chromium update cycle like all other browsers.
And if you don't do that, you're basically just playing browser.
And I want to make a real browser.
So this is like one of the hardest bits to get going is you have to follow the update cycle.
And that means updating with the Chromium branch every month and a half approximately which but but that means I have to do the porting of all
of the cute patches on topochromium that I like regularly and so I need to make a process for
this that is not horrible because I have to do it all the time and currently with, they do it maybe twice a year. I will need to do it much, much more rapidly
and also with a shorter time window.
I will have only a few days probably from when it is final
until it should be released to follow the same update cycle.
So that's what I've been trying to figure out how to do well
for the past few weeks. And that's probably what I'm going to to figure out how to do well for the past few weeks.
And that's probably what I'm going to be doing all of January as well.
So it's basically just Git and building and bash scripts.
No browser features are going to come out of this,
except at the end, I hope to be like being able to update to the
latest Chromium version and then have like a system for doing this on a regular basis.
But there are lots of like other big things, but this is one of the hardest things to do. So I
want to do it early to make sure it is okay. But right now it's not really usable for, well, it is, well, you can browse the
internet with it. It has tabs, you know, doesn't have fav icons or anything, doesn't do auto
completion. It doesn't do much things, but it does have tabs and you can go on the web and you can
click on links and go places. But it is quite useless as a browser. And also, but the funny
thing is, I got like two bug reports where people said like scrolling was slow. And I got another
one. I don't remember what it was. Oh, yeah, yeah, they you couldn't go full screen in YouTube. And
both of these things are true, because I haven't implemented them yet. And the slow scrolling,
I have to figure that out. But I'm going to update the Chromium engine first. But the thing is, for them to report these bugs to me,
they have to build the browser from scratch.
There is no installable package.
That is like the next thing on my list.
So you have to actually clone this from GitHub.
Then you have to build it for your platform,
which on a regular computer will take you hours and then you have to run it and then say click on the maximum
like the the like you know full screen button on youtube and report the bug to me and i'm like you
people are heroes the amount of work you put in is amazing.
So yeah, so I actually have gotten bug reports,
but I would say right now it's not a browser that anybody would want to use
for any kind of significant amount of time.
But I'm hoping that by the end of 2021,
I will have like an alpha that is okay to use as a,
you know, as you're not,
probably not your primary browser but maybe you
know occasionally and the nice thing about it is that it has absolutely no back end at all so it's
totally local there is nobody spying on you because there is no server
it is a binary running on your machine. That's it.
So in lack of feature, it is very privacy sensitive.
Privacy sensitive because you're not trying to do anything else. Exactly.
There's no feature.
I have to do the big things first.
So right now, there's no sync.
There's no crash reporting.
There's nothing that would require some kind of server behind.
But we'll see if we ever get to that point.
Right now, I'm just going to try to make it
so that you can actually install it on your machine.
That would be nice.
And have a relatively recent Chromium version in there.
And then we will see lots of features.
I have so many features that it needs.
But I'm having fun.
Even right now, all I'm doing is basically building
and doing bash scripts and cherry picking.
And it should be horrible, but I'm actually enjoying myself.
So right now, the process is fully manual,
that they do this update from Chromium twice a year,
and you're trying to automate it, I hope?
Yeah, well, semi-automate.
It's not really possible to automate because you're going to have conflicts.
So it's going to be...
So for everyone that I know of that does this on a regular basis,
it is like a semi it's it's
a script aided manual process uh so what i'm going to try to do is to to um to make it as as as
simple to do as possible um but the thing is right now there's a lot of, Qt has several hundred patches on Chromium.
But a lot of them are things like supporting other compilers.
And Chromium doesn't really support other compilers.
So there's lots of fixes for different versions of GCC in their patches.
And I don't think that's something that I'm going to be bothering with.
So I'm probably going to be dropping a bunch of these patches.
Just require Clang 11 and GCC 11 and MSVC 2019
if you're going to go Windows and call it a day.
But the thing is, the thing is, the Chromium code base,
it currently supports only Clang.
Only Clang.
On all platforms.
So it has Clang on Windows as well.
So that's one of the things that the Qt patches do.
They enable building from and with MSVC
and with Xcode and with lots of versions of GCC.
But if I'm going to be maintaining these patches,
I'm not going to be running around
fixing all of these things every month.
So then I'm just going to say, okay, fine. We're going to build the whole browser with Clang 11 on all platforms.
That's fine.
I just have to figure out how to do that.
So that's also on my list.
My list just kind of grows.
It never actually gets shorter.
On the topic of projects maintained by Google,
since you mentioned that it only works with
clang i've seen you tweeting lately about some of the frustration with downloading and building
projects like chromium yeah yeah no i i don't i don't know i i think it's like like you know
sometimes when you hear like rich people and they say like oh yeah it's like if you know, sometimes when you hear rich people and they say like, oh yeah, it's like if you want to buy a house, just stop buying like,
what are these, like these avocado sandwiches.
Avocado toast, yeah, yeah.
Yes.
It's just like,
it's just, I don't know, like you talk to Googlers and they're like,
oh, it doesn't take that long to build Chrom from scratch i can do it in 10 minutes and they have like a freaking
build cloud they they eat they use that is internal to google where they can just like
run up like you know 140 like cores to build uh it's like it's ridiculous and then they're like
yeah it's not that bad and i'm like okay it's not so bad when you have this it's like it's like it's ridiculous and then they were like yeah it's not that bad and i'm like okay it's not so bad when you have this it's like it's like people say that it's not so hard you
know it's like yeah it's not so hard when you have your parents buy you a house
and pay you a monthly allowance then you know you can it's just it's it's just scope is weird
and so yeah so so all of the build instructions for lots of these projects they start with like No, you can't. It's just scope is weird.
And so, yeah.
So all of the build instructions for lots of these projects,
they start with the number one part of build instructions.
If you are a Google employee, don't follow these instructions.
Go here.
And if you are not a Google employee,
here is the long version on how you can do this.
And yeah, so I get a little bit frustrated sometimes because it is much harder than it is for people like Google. And I don't think they realize how much harder it is.
And they don't realize all of the obstacles that are in the way as well.
So it can get a little bit frustrating.
So yeah, so I had a rant on Twitter.
It was a multi-day rant, I believe.
Yes, yes.
Actually.
I was really having a hard time.
Like, seriously, you can't even like my my my repo is not called source
like if you check out chromium from like the the the the the official uh okay no that's not true
because they have several official like the normal the one they want you to get the source from
okay if you check it out it is called source it's called src the actual name of the
repository yeah and so you you have to so you end up with a like folder on your hard drive called
src that is chromium um and so uh but they also have a mirror of this on github and the mirror
much more sensibly is is called Chromium.
So when you do a Git clone, you get a folder called Chromium, which makes sense.
Except if you have a folder that is called Chromium, okay, first of all, you clone it,
you only get like, you get that, you get like the, okay, you get a lot of the code,
but you don't get all of the code because all of the third pride dependencies have to be fetched okay using this other tool called g client when g so it's
not using a get uh sub modules or anything no no okay uh so so you have to so you have to also
download this other tool and this other tool is then going to go into your chromium uh folder and
try to figure out what you need and try to download this,
of course, all from Google repositories.
Okay, so this I was struggling with for days.
And it turns out that this tool does not work
if the folder is not called SRC.
Of course.
So then I get really frustrated about this. And I'm like, okay,
is it me? Am I doing something wrong? So then I clone their own GitHub repository,
which is called Chromium. And I tried to run this G client on their own GitHub mirror.
And that doesn't work either, because it is also not called source. And then I go and like,
I complain about this. And then people go like, no, you just have to name it source and then I go and like I complain about this and then
people go like no you just have to name it source and I'm like I don't want to name it source why
doesn't it get the code if the folder is not called source first of all I don't want to run
an external tool to get the code for my project why is this necessary and so yeah so I was renting
um I was like just give me git sub modules and let me get
everything and they were like no this is a very big project we will have to write like a project
description and then we have to discuss and it will take years and yeah i feel like not having
hard-coded folder path names in your in your project is like the number one rule of making an open source project.
Yeah, that's, yeah. It's bad enough if it's an internal project like that.
I tried to say that and it was
they were like, just call it source. And I'm like, no.
Do you now have your own tool that goes in
and patches their tool so that you don't have to
have it called source oh i i think i think i managed to to annoy as some googlers enough
that they decided to sit down and like spend some time trying to prove how i was um i was not very
bright and so so actually it ended up with i actually got some help uh and and uh i i figured out what
patches i needed to put in here and there and and how to do to change the configuration and it ended
up with with uh with him also submitting a bunch of patches on different places so both so so
chromium got some patches and g client got some patches and even even a
little bit of a doc like a sentence on the github repository mirror of chromium saying don't build
this because it doesn't work and i was like that's not really helpful because i was just trying to
use it as an example but it's not called source.
So is it still required to be called source after those?
Now it just tells you that you're wrong?
No, it doesn't even tell you that you're wrong,
but they can point to that it has a sentence in the readme that says you're wrong.
Okay, that's great.
So I don't know. If maybe if this one change,
the patch that he submitted to Chromium lands,
then it might be actually possible to do this without patching Chromium.
But currently, yes, no.
And I love the way that lots of people
wanted to explain to me,
like, you know, I'll explain this to you like you're five.
You just have to check it out and it has to be named Source.
Like, yes, I understand.
I don't want it to be named Source.
So, yeah.
But in the end, I managed to get it to working.
So I think we both won in a way.
So now I managed to actually run the tool and get the code.
I just needed a little bit of a patch on some files inside of Chromium.
And I'm just going to leave it at that.
Maybe if his change lands
then the future will be
bright for calling it something else than source.
Sounds like a fun
riveting several days of your life.
No!
But you know
this is like
the thing. If somebody tells you
how long will this take?
And the thing is now I've been doing this for 15 years.
I know like, even if I think it's going to take, oh no, that's not going to take much
time.
Like this is going to be an hour or two max, right?
This is easy.
And then there's always like, it's not always, but very frequently, like this thing that
you had never imagined is going to take two days that pops up where there is some kind of weird thing
like here I spent two days of my life trying to figure out why a tool didn't work and narrowing
it down to the fact that my folder name was wrong of course you couldn't rename it you couldn't
rename the folder either because then it would actually go inside of git and figure out that that it didn't have
the right name and then it would do a clean checkout next to it and and sometimes it would
just change branches so if you were on a branch it would just change it to master my best my
the best one was was when it it it went into my repository,
changed the branch to master,
and then checked out under source next to it.
And I'm like, what is this?
I don't want this tool.
Can we just use Git like civilized human beings in 2020?
Why do I have a Python tool suite just to check out code this
is not like and people are like oh yeah but there are like many build systems i'm this is not the
build system we haven't even gotten to the build part i'm just trying to get the code oh my goodness
well okay anyway sorry uh it's too fresh it's too fresh you know i would say just for the record we do appreciate our friends at google we've had
several of them on the podcast but i will also state that at one of the first cbp con i went to
i don't even remember what the topic was but it was in one of the big plenary sessions and someone
like raises their hand or like oh but we do x whatever i have i don't know who i don't remember any who any of the people were but the person who
was up on the stage was you don't count your google you do things differently and then continued on
but that was also like somebody came to me and like also on twitter and they were like oh yeah
maybe it's like Bazel.
This is a really great build system.
I've never tried it, but it's probably awesome.
Some people love it, apparently.
But I'm like, no, it's not, because Chromium has its own build system.
Actually, this is the new build system called GN,
which is Chromium's own build system,
is actually not the first Chromium-only build system.
Does Chromium, is that where JIP originated from?
Yep.
Okay, yeah.
So, yeah.
But now they have JIP has been replaced by GN,
which is the new...
So that was also a little bit of the background for my like
google is made of money i i mean like you have to be made of money to be able to just go like
i feel like making a build system today and then just making not one not two but just we're gonna
make three probably more there's probably three more internal loans that we don't know about.
No, it's just like...
Did you consider using Firefox's engine instead, just out of curiosity?
Yes, I did.
Mostly, I was...
And I haven't, like, totally said I will never.
But, so I do have, like, an open, like, do a proof of concept thing.
Especially I wanted to look at Servo.
But right now I have too many things that have to land to be too ambitious.
So right now, we'll see.
If I ever get rich.
I have lots of...
Do you have any other big goals with the project?
I know you're building the whole thing in Qt.
Is that Qt 5 or 6?
Do you have any other things you're trying to achieve with it?
Well, right now it has to be Qt 5
because for now Qt Web Engine is not included in Qt 6.
Oh, okay. So they dropped a bunch of different modules for Qt WebEngine is not included in Qt 6. Oh, okay.
So they dropped a bunch of different modules for Qt 6 to make their deadline.
And that's also one of the reasons why Qt WebEngine is quite behind this
because it's only going to be updated probably with Qt 6 in the spring.
But, yeah, I want to try like all sorts of like, um, one of the things I'm
trying to do is to do it with using Conan and CMake and just having like a modern C++ kind
of project instead of using all of these like Google internal, is, of course, a whole UI toolkit.
Because why not?
So I just wanted to make... It should be a regular modern C++ project, basically,
with all of the normal, regular C++ stuff,
which is fun for me as well,
because it is like a real life
project where I have to try things out.
So yeah.
I want to interrupt the discussion for just a moment to bring a word from our sponsor,
Visual Assist.
Visual Assist is used by serious C++ developers across the world.
It's got great code generation.
Do you need to implement methods from an interface?
What about changing a pointer to a smart pointer, even an Unreal Engine smart pointer? Adding a symbol you've typed but haven't declared?
Visual Assist will do these and much more. Plus refactorings, more powerful than the ones
included in Visual C++. Or detecting errors in code and suggesting useful corrections.
Or navigation, helping you move anywhere in your code and open or locate what you need.
Or even the debug extensions. Visual Assist is written by
C++ developers for C++ developers. It includes everything you need and nothing you don't. It has
a low UI philosophy. It won't take over your IDE, but will show up when useful. It's there to help,
not to advertise itself. Visual Assist is relied on by the developers building software you've used,
whether that's office suites, operating systems, or games. Software you use was built with Visual Assist. Get the same tooling for your own development. Visual Assist supports
Unreal Engine 4 and many versions of Visual Studio, including VS 2019 and Community.
Get it at wholetomato.com.
It seems like, from what we see on Twitter again, that your business has been growing,
at least somewhat, and you moved into an office at some point.
And just how are things going
during the pandemic for Turtlesack?
Well, it's going pretty well, actually.
Of course, it would have been gone better
if there wasn't a pandemic,
but it's going pretty good
we got in our first employee uh and uh so now uh we are thinking we are hoping to hire
uh next year uh hopefully two people uh so um but that's also a thing because I don't know anything about hiring. So I need to figure that out.
But yeah, so it is going quite well.
And we got an office.
It's pretty central in Norway and it's basically like in this old building.
Are you in that
office right now okay yeah it's a little bit of a mess behind me but i'm i've ordered lots of boxes
from ikea so i'm hoping that by the time like i i will have it and will look stylish even if it
will be messy um but yeah so it's the the ceilings are really high. I don't know, like, feet and things.
No, just say meters.
It's fine.
3.6 meters.
So it's really high ceilings.
That is really high.
Yeah.
That would be about 12 feet.
Yeah, so really high ceilings, old building with, like, crown molding
and all sorts of things.
And then, like like these double doors
and the whole the building is probably 150 years old so it's it's in like original hardwood floors
and it's just really nice um and we have like three big rooms and then we have like a little
kitchen and bathroom area so one of the rooms is basically a
meeting room and then this is uh this is one of the offices which i am currently the only one in
and then we have like the little like couch area and then uh then we have like the other office
next to it and i don't know it's nice it's like, and the thing is, it's quite close to our house.
So we can just walk here.
So we don't, so, and since my business partner is my husband,
we are in the same cohort.
Right.
The bubble, I think is the bubble here.
Yeah.
So it's fine.
So it's really, I do appreciate going to the office, actually,
especially maybe now during the pandemic,
because I can get out of the house.
Because before, like, I've worked from home for a long time,
so that's fine.
But I usually have like
going out of the house i would go and have lunch with people or you know i would go to conferences
or meetups or i would i would actually leave the house but but the thing is with the pandemic and
you're working from home you can basically end up being at home like 24 77. I barely left this room for nine months. Exactly.
I totally get all that. I found it though kind of curious to, because I hear so many stories about companies that are like, oh, we're just
going to close our office because it's pointless to keep paying the rent on it when
everyone's working from home. And I'm like, wait a minute, she just went and got an
office. That's the opposite of what everyone else.
The thing is, okay, so I've been thinking about getting an office for a long time.
And because I feel like for our company to feel like a company and not like something we're running out of our house, it would be nicer.
Because I want to grow.
I want to have employees.
I want us to be more than just us
right so it's like it's like my my like in the beginning i forced him to be in a like a workshop
he's like what are you gonna do we're gonna have a workshop for like two people and i'm like yes
we're going to have a workshop we are going to make a five-year plan and he was like uh okay
yeah all right i was like i want you to write down where do you
see yourself in five years um seriously i did this he was like whatever and he was like it was like
he writes down on a piece of paper in five years i hope that we uh have a business we're not broke
and we're kind of happy and we have clients and you're still broke, and we're kind of happy, and we have clients. And you're still married.
Yeah, and we're still married.
And I was like, so basically, you're hoping that we are exactly where we are now in five years.
And he was like, yeah, that's good.
And then, but me, I was like, oh, I hope that we have a team and we have like a blah.
And I'm like, oh, like, I don don't know why because I'm not like a very
extroverted person but for some reason I'd like to have a team but but the thing is then we then
we decided to um to hire someone that we'd been we'd been talking about hiring uh them for for
a long time before but they ended up being in a situation where now was a good time and then we
were like okay yeah let's do this but then we felt like okay if we're
gonna have an employee then it doesn't feel right to run it out of our house it feels weird you know
and and especially if we're gonna have more employees where are you going to do your
interviewing like it's going to be in a cafe or on the dinner table like i i don't know it just it just felt like it yeah didn't feel right so so
then i started looking for cheap offices and this was uh relatively cheap uh and um and it's been
great actually so so so even though it's like our poor employee can't be here so he has to work i was wondering about that because well we had like a little bit of a
time before the second wave where people were allowed to be in the office at least occasionally
but that was like two days uh he was here uh before he had to work from home again so
but hopefully next year you said the office was cheap was it do you think it was cheap
because people are leaving office spaces right was it do you think it was cheap because people are
leaving office spaces right now like did you get a deal i well i think it was i think it was probably
cheap because we had to do some work before to get it to like a standard that way we felt was okay
so i think that's probably how it was i i was looking at other offices that were basically a fraction of the size, but at the same price point.
And I was like, okay.
So we did some work by fixing the kitchen.
We basically tore it down and set up a new one.
And we also did some work in the bathroom to make it nicer.
So it's probably a little bit of that.
Okay.
So you mentioned earlier on that you had to cancel some training and things like that.
What other types of work are you doing right now aside from working on the browser?
Well, I am hoping I'm working on maybe getting a contract next year for, but i don't want to jinx it so okay
well the thing is it's like i've been doing trainings and i was planning on actually doing
more trainings that was my plan for 2020 i was going to do more trainings and and then in between
trainings i could like work on projects like like uh turtle browser or other things but the whole training thing
got kind of weird so I've been doing some remote trainings but I think most people
like some of my my my my more regular clients they've been following up and doing the remote
trainings and some people were hoping to do an in-person one and then moved over to remote
but I think most people want to be together in-person one and then moved over to remote. But I think most people
want to be together physically for their trainings. And I can understand that,
especially if you're doing it as like a company, it also becomes sort of like a team building
kind of thing where you get together and you spend the days together. And, and so it's,
it's not going, it's not like a stellar business to do remote training for me, at least.
I don't know.
How about you, Jason?
You do trainings as well, don't you?
Yeah, I've only actually done two remote trainings, I believe.
And they were both with organizations that I already personally had worked with before and knew the people there and stuff.
And one of them went great and the other one did not.
So at 50-50, I, you know,
I'm reluctant to do it again.
I've generally been saying no to remote trainings
and saying here's hoping that soon enough
we'll be able to see each other in person again.
Yeah, yeah.
No, I like I've worked really, really hard to try to make the remote trainings as good as I can.
And I think they went well.
I got good feedback as well. But at the same time, I don't think that the attendees get the same kind of,
I think it's a little bit like we're seeing.
Like I asked people earlier in the pandemic as well,
what are the things that you miss about being at the office?
Because I was getting the office and I was thinking,
okay, I'm going to try to optimize for people being happy.
But what people said was that what they what they missed from the office was just just the the the informal stuff like like going like like getting coffee and just
like talking to people or lots of things around food like people were like like like like drinking Like drinking coffee, eating lunch, going out for beers.
It was very, very, you know, food and beverage oriented.
But basically what they wanted to do was the not work-related kind of talking
and bonding with other people and their colleagues and doing things together.
And now I totally forgot my point, but that was, yeah.
But yeah, so, no, but I forgot my point now.
I forgot what I was talking about.
Yeah, we're talking about remote training.
Oh, yeah, yeah.
And that's the thing.
That's the thing that you miss.
You know, I can put all of the content in there and I can make sure that everybody can follow along and that everybody has like, that people don't have technical issues and all sorts of out, like especially if you go somewhere to do the training
and then maybe stay at a hotel with your colleagues,
then you go to the bar afterwards.
And it's like I realize there's so much like social interaction
between human beings that are not really directly work
or directly learning or directly anything,
but it is so important for us as human beings.
And that part, I can't really replace that remotely.
So, yeah.
Yeah.
So I'm going with Jason.
I'm hoping, you know, things will work out at the other end.
Well, here's hoping you both are able to do more on-site training in 2021.
Yeah. And you made me think too, more on-site training in 2021. Yeah.
And you made me think too, Patricia.
I mean, I don't know if I were to just guess maybe 20% of the on-site things that I've
done have been more about, at least it would seem to me, maybe more about team building
and like something fun for the team and less about you all need this training.
You know what I mean?
Yeah.
Like almost more like a treat, I guess.
I don't know what word to use.
No, but I think that's true.
And just also snapping people out of the day-to-day
and doing something as a group
and experiencing the same thing together as a group, I think, you know, and as such, I think maybe for lots of introverts, like going to training is a good way to do team building instead of, you know, maybe some of these that can be a little bit too much.
Like, I don't know, like, let's dress up as medieval characters. And i don't know like let's dress up as as as medieval characters and i don't
know i don't know whatever they make up that freaks you out and you want to go home oh i see
right right right because yes when you have when you have a an on-site thing that is specifically a team building event
they all tend to be these like yes awkward questions and the like why are you making me
discuss my feelings about oranges like yes okay and jason now can't you i i'd like you to sing a
song for the group we're gonna do a personality test and discuss how you feel about it.
Right, right, right.
So you get the team building without the awkwardness.
Yes, exactly.
That's a great selling point right there.
So anyone who is thinking about 2021 training,
let's say sometime after June, perhaps,
it might be possible if the vaccines all
work out then uh yeah yeah pitch it pitch it as a team building activity with with with uh with uh
with a flair that's a reward for surviving the pandemic we're gonna have this
okay well on that note uh patricia it was great having you on again uh where can people find you
online find more info about turtle browser if they're interested anything else you want to plug
oh well i'm mostly on twitter so if you and my dms are open so so just um just uh just show up
and just say hey i would like to. I don't know what to do.
And then we'll schedule a Zoom
and we'll talk about it
and I'll help
and we'll figure it out together.
And so definitely just say,
I'd love to learn something.
And you don't really have to know.
I have so many things that need doing,
like just like if you're a graphical designer and or just want to
be a graphical designer you're probably better than me and um or if you want to do translations
or you know there's or documentation or if you want to do c++ or there's so many different things
so it just hey i'd like to do something on a browser i have no idea what i'm doing then you
can just hit me up in my DMs
and I will figure it out.
You'll give them the 12-hour introduction
on how to compile it.
Yeah.
I'm going to try to.
Well, that's one of the things that at the end of this,
I'm hoping it's just going to be like a Conan package
and you can just download it and just run it.
And it will be, that is the goal.
So you don't have to spend the 12 hours compiling that is the goal i'll do that i'll do that for you
all right thanks patricia thanks thanks so much for listening in as we chat about c++
we'd love to hear what you think of the podcast please let us know if we're discussing the stuff
you're interested in or if you have a suggestion for a topic, we'd love to hear about that too. You can email all your thoughts to
feedback at cppcast.com. We'd also appreciate if you can like CppCast on Facebook and follow
CppCast on Twitter. You can also follow me at Rob W. Irving and Jason at Lefticus on Twitter.
We'd also like to thank all our patrons who help support the show through Patreon.
If you'd like to support us
on Patreon, you can do so at patreon.com
slash cppcast.
And of course you can find all that info
and the show notes on the podcast website
at cppcast.com
Theme music for this
episode was provided by podcastthemes.com