CppCast - TurtleBrowser

Episode Date: December 24, 2020

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

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