SerenityOS Office Hours / Q&A (2021-11-12)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
well hello friends let's see if that works i think i clicked the right thing uh hello everybody welcome to serenity os office hours it is friday and if you can hear and see me please let me know because i never quite trust this thing um looks like i'm live but you know um so yeah excellent excellent um so it is friday and we're gonna do office hours like we always do so uh if you're not familiar the format is that um chat brings questions about serenity os or related topics and we talk about whatever you want to talk about if you have technical questions about the project or non-technical questions it's all good um and if you're working on something and you're stuck we can look into that whatever it is whatever it is really so um nice to see your people here uh there's linus hello linus well hello linus uh linus and i just did an interview actually uh with jetbrains um and it went up like in the last hour on the sea lion blog so i'm definitely going to post that in the chat right here very nice um so if people want to check that out um that was it's it's been this kind of week where there's all kinds of external attention um being given to serenity os like um i did a demo at the handmade seattle conference yesterday that people maybe saw and uh today we got this thing coming out and um i've got some other things lined up as well next week um and uh it's weird because i end up not programming and i have to do all this other stuff that feels weird because it feels like i'm not making progress on anything but at the same time i know that if we can reach more people um some of those people might be interested in joining us and working on the project together with us so i think it is worth doing that kind of stuff it just it just feels really weird in the moment uh focusing on interviews and publicity and stuff like that so let's see uh red redsharktooth 22 says hi andreas love your work please tell my lazy ass to get back to work on my bachelor thesis instead of procrastinating on youtube maybe that will help [Music] well i definitely suggest doing um your more important tasks uh instead of procrastinating on youtube uh i think there's probably nothing going to happen in the next two hours on this stream that will be more valuable to you personally than working on your bachelor thesis so i strongly recommend that you invest some time in that and buy yourself some peace of mind in the future so mati asks why did you not use parser generator like yak in j as parser so the js parser is handwritten and i think the main reason it's handwritten is because it was grown very organically and we had a bunch of people contributing and to a large extent we didn't really know what we were doing when we started the javascript engine i mean you could see the very first steps of me starting the engine in that video i made about that and then um stefan joined and added the initial um skeleton of a parser but um it grew organically and and but it does have a lot of nice benefits to not use a parser generator i'm not actually sure that you could use a parser generator for it but even if you could that it would make it probably pretty hard to integrate stuff like syntax error checking and also like um to continue parsing even though something fails uh i don't know how to do that with a parser generator um so the the js parser has a lot of a lot of interesting custom logic that happens and maybe you could use a parser generator i don't know but the reason we did it is didn't do it is because it grew organically uh see devashish read the interview well it was pretty cool thank you i'm i'm glad you liked it on the demo yeah the demo at handmade uh was very well received by the the people at handmade uh if you didn't see it you can watch the video from yesterday should be available um i don't know where exactly i guess on their vimeo channel and also on their twitch so okay it's not there there's some way to to watch that um i'll figure that out later uh if if people missed it it was a it was a pretty short demo but it was well received let's see uh pious says jetbrains interviewed you when you're actively building a free alternative to their product using their product genius right um so we are building c plus editing functionality into serenity os but i don't think that it's really a free alternative to their product it obviously um we only care about a very niche segment of c plus developers like those who work on serenity os stuff it's not really useful as a generic thing but i agree that there is a there's a sort of sweet sweet irony to that whole thing firefox 317 says can you show how to work on the arc64 port did you never try that i have never tried that so i don't know how to do that uh i will um as soon as we have something sort of demonstrable i'll make sure to ask somebody to to make a demo out of that in fact if somebody who's working on that is listening right now and you could make any kind of video demo or something i'm sure that people would find that really interesting caleb says the demo was fire well nice thank you um yeah right so the stuff will be available afterwards okay wait let's just figure this out right now i know it was on um abner's twitch so let's just find him um dammit it's tv twitch.tv abner coimbra here we are right hand made seattle day one uh right here there is a vaude of that so you can watch the entire thing uh and i don't know where exactly we are it's like four hours something into it uh let's see so ali says that parser generators are meh anyway um i guess i kind of agree with that i there are some benefits to to writing being able to write the language out in a less imperative form right like to write something descriptive but it's also nice to have total control of the parsing so paco power says hello since you do a lot of oop stuff how do you deal with failure in object constructors so the pattern that we adopt in serenity os is that we don't want failure to be a thing in constructors so because we don't use exceptions so we don't really have a way to return failure what we tend to do instead is we have these helper factory functions and let's see if we can look at one so like file open in the libcore library so uh instead of calling the file constructor when you want to open a file you would call this helper function called open and it will then internally construct a file object and attempt to open the file and then return to you um the file object if the open was successful uh or an error object if it was not successful and that's sort of that's sort of how we deal with construction failures in that we simply avoid avoid calling constructors if there will be an error so we want our constructors to really be just dumb functions that receive all of the initial state from a factory function but the constructors themselves don't do anything that could fail and ideally that should also include allocation that's aspirational though that's we're not there yet we do have a lot of constructors that allocate but i would like to eventually get to a point where all allocation failures have been surfaced by the factory function and we simply have to move all of those allocated things into the constructor um so that that but that yeah that's aspirational one day we're gonna get there this is something that we're working on um and the main reason to to move forward on stuff like that is to make us way more resilient in the face of um memory allocation failures right and that's an area where our kernel is rapidly improving user space has been lagging behind a bit because there's less incentive obviously to care about allocation failure in user space because it's okay for a user space program to crash uh it's more okay for a user space program to crash than it is for the kernel to crash but recently i have been doing a whole bunch of whole bunch of stuff on surfacing allocation problems in the user space for example introducing this new type called error or which is a template that can be returned by anybody both in user space and kernel space and it replaces all of our previous mechanisms we had for returning an error so now we have the single unified thing both in user space and kernel space uh and you can then uh use this in in combination with our try macros so let's see if we can find some use of that so it would look something like this so file equals and then try to open something and what happens here is that if this thing returns an error then that error will simply just be propagated immediately um as the return value of this function and so on so that that whole thing is working out pretty nicely but we have about a million places that we need to um spread this pattern let's see could i take a look at the question asked in discord um i don't particularly want to open discord on stream so i'm not going to do that let's see i don't know why stream chat is lagging behind and this is indeed a hefty mug this is a christmas mug that i picked up in the store has a little santa claus on it and i am a big fan of christmas so when i saw this in the store i thought i gotta get that and i'm very happy with it because it allows me to charge up two um two t's in one cup anyway tom french says so the same behavior as rust options and the question mark operator right that's right um this this is essentially what we wanted to achieve was have the same behavior as the question mark operator and rust so we have our own sort of result type and this is our own question mark operator since we can't get an a question mark um from the from the core language this is the closest that we could figure out uh so okay so lina says question for office hours please explain things from this pyramid oh i see this is the question from discord and then i should explain things from this pyramid right well i feel like it would be almost cheating if i explain everything um the point of these is that the information should be difficult to gather right like if if i just say what everything is that kind of breaks the entire iceberg so uh but i guess i guess we can we can um look at some of them let's see um so i guess like this oh right area so this is like the entry-level stuff stuff that everybody knows and then it gets progressively more obscure until you reach the bottom where um there's all these things here that people might not be familiar with and not all of these things are real things uh whoever made this is has been like memeing a little bit and adding fake entries which um which makes it like i don't know to me that makes it a little bit less interesting um because okay at the same time i guess it's sort of part of the meme format that it has to be a little bit over the top and silly so let's see um which one should we look at i guess the let's play super metroid part two right so um that one refers to let's see if that's at the bottom there let me make sure i'm not obscuring it um so for april fool's day not last not this year but the year before uh i made a silly video where i pretended that i was tired of programming and i was gonna turn my youtube channel into a let's play channel instead and i made a video where i played super metroid and i made it was a part one because um i found it really difficult to play and talk at the same time and i got like halfway through the game and then i was just really tired of it so i thought okay let's just cut it off here this will be part one and then the next day i recorded a part two but uh it didn't go very well it was a i didn't play very well and i ended up screwing up a lot and um i didn't use save points so i lost a lot of progress and it i got like a bit i guess a little bit irritated with myself and my poor decisions in the gameplay but i was recording it so there was a part two to the super metroid let's play um with me becoming increasingly frustrated but it was never uploaded anywhere so that's what that refers to so now we have shed some light on one of these if if people have a particular one of these that they're interested in that we can certainly shed some light on it but outside of that let's just put that to rest let's see arya says that they recreated the cat dog with react.js how can you share how can i share it with you i guess you can link it in the chat i don't know um so matty says is it possible to port wine to serenity os uh it's certainly possible absolutely um but i don't know what's currently standing in the way i know that there's a bug open about it um right here there's a wine checklist and if you're interested in this i encourage you to go and look at this and investigate what what you might be able to um to do to move that forward if that's something that you care about uh johnny sternado says oh wait hold on let me not miss this one right here dris de urden says just curiosity is serenity map shared file also more performant than standard file open read functions um i i haven't measured it so i don't know but i would expect yes because once you have memory mapped a file the page fault handler is pretty straightforward so like you access a new part of the memory map file that you haven't accessed before and we have to take a page fault and fault in that page by reading it from disk but that is substantially less um substantially less work than doing lots of repeated read accesses so i guess it depends on your access pattern actually so if you're doing like many many small reads like you're reading one byte at a time for example with the read syscall mmap will definitely be faster but if you reading one page at a time so four kilobytes at a time i would expect it to be faster but really this is something that should be measured so i don't know let's see yeah yeah james already way ahead of me with the linking the wine checklist johnny said maybe this has been asked before but what are my expectations on a proper ide what are the advantages of c lion what's hack studio uh so my expectations of a proper ide is um being able to look to jump directly to a class by typing the name so i want to be able to type in here for example open file description uh and be able to just jump to that class right i also want to be able to click on a function somewhere and like the use of a function and then be taken to its declaration like that [Music] and things like that and i also want code completion uh because i love to use really long variable names but if i had to type out the really long variable names every time i would probably not not like them as much so code completion like really well working code completion and c lion is just so much more mature than hack studio for sure hack studio is the ide in serenity and if you haven't seen it let's just bring it up so let's see that would be in the develop menu development hack studio don't have make installed that's fine um right so it's a an ide for c plus plus development but of course it also supports other languages that we we implement like javascript uh but the the basic idea is to make an ide for development that we can use and that's what it is it is way less mature than sea lion uh it doesn't understand code as well as c-line does uh because we build we're building our own c plus parser to power all of this stuff so it's something that just takes time to to get right but we're making forward progress on it uh and i guess lately i have been like people have been telling me over and over and over to use multiple cursors in c-line like when they see me editing they get frustrated that i don't use multi-cursor and i am getting a little bit better at using that so um that's something that eventually i'm probably going to have to implement for our text editor and serenity as well but i haven't thought about how yet but you know how hard can it be right let's see atlas says many file managers are unable to make a file copy to a root directory without relaunching his root windows does this by elevating a process that performs the copy as this is a thing in serenity it is not really a thing at the moment but the architecture act is actually there to support this um most of the architecture so when you copy files with uh file manager we're actually launching a secondary program to perform the copy um and it's a program that's called file operation and uh where is it right here so it's a separate program and what that does is that it uh feeds file managers sort of for progress updates uh and that was very fast as you could see um but you get this sort of um status update like how's the copy going and um i built it this way because i wanted it to be uh very responsive and if something goes wrong during a copy or something operation i don't want the file manager to crash and i don't want the file manager to slow down or something because you're doing a copy so it's completely delegated to a separate program that just feeds progress updates to file manager and because we have that architecture you could easily imagine [Music] having a way to launch one of these file operations processes with elevated privileges somehow right um i'm not exactly sure how the privilege escalation would work like what would be the best layering of of that but architecturally speaking like file manager is pretty well set up once we have a way to to elevate the privileges of such a process uh packerpower says what do you think about c plus plus 20 modules any plans to use it in serenity or is sticking to an older standard we do not stick to older standards we stick to the bleeding edge of whatever is available in gcc and clang because we use we do use both compilers but whatever is available in both gcc and clang that's the c plus plus that we use so like all the latest stuff uh as long as it's useful to us now i haven't used c plus 20 modules yet so i don't have an opinion about them let's see kevin says hi andreas and good evening everyone any updates or thoughts on the network apple connection status bug 6062 um let's investigate 6062 what is that 6.062 uh okay own the ip address is used to check network connection status um wait did i get the right i mean i guess that was the right part uh i i don't have any updates on it looks like nobody had any updates on it since april um so what is the issue so currently the network applet always shows the same icon whether it's connected or not it would be better if we showed an icon where there's no connection blah blah blah and then what the problem is this is a lot of reading here um okay uh i don't really have uh i haven't looked into this issue at all but sounds like this is a bare metal concern because right here we have an interface that is listed as not up i don't even know what that is though hmm also why do if i select something here it gets unselected after just a moment i guess because the data model underlying this view is updated but that's not nice we should fix that um right this thing i i don't have any thoughts on that i have to to look more closely at it later but it's looks like a mouthful suzy bros says where does the infamous tuba image come from so there's a picture of me with a tuba and that i think that was taken in oslo um i had a friend there who had a tuba and he had a lot of silly hats and i put on a silly hat and took a picture with a tuba that's the that's the basic backstory uh osamu says will you start a new serenity type typo os project in the future if you aren't didn't aren't doing or wait what does this mean do you if you're asking if i will start a new serenity-like operating system project in the future um no i'm not sure why i would want to do that i'm very happy with the project we have going on here i don't really see a need to bootstrap a new project with the same goal [Music] but serenity os is pretty it's a pretty unusual project in many ways because the scope of it keeps changing and keeps growing um when we discover that oh you know we should really teach it how to do this thing so um you know when i started it was very bare bones and it has grown as we add functionality as we discover what we would like it to do and i'm sure that there's more functionality that we're going to add over time obviously so since i since i'm so focused on this project i don't really feel the need to start a new separate project for any reason when i can just expand the scope of this project to contain whatever it is that i want to do [Music] but of course if if i woke up one day and i wanted to build uh you know web apps or something i would probably have to start a new project because it really wouldn't fit into serenity but that's a i feel like that's a different thing triangles with many exclamation points says that they use vs code as their c plus plus ide and it has made some great improvements over time that is cool um it's it's nice that there's competition in the ide space i think um it is the only thing that's a bit sad in the ide space is that um all of the ides are really really heavy and um they're built in really heavy ways uh the the least heavy ide i guess is probably q creator which is the one i was using before but uh it's all it also has a lot less functionality than um the heavier ides so you kind of have to pay that tax when you use a high functionality ide devashish says why is it a big deal to have many idle threads in a pool can you give a low-level overview of what resources do they consume while doing absolutely nothing um well a thread that's not running is not very heavy in a well built system i guess uh but it still uses memory resources and um also i guess if you put if you put too many thread pool too many threads in a pool then i imagine that um you end up like if if literally every job you put into the pool ends up on a new thread so that there's like there's never any reuse of a thread then you end up eating more scheduling overhead i would think so uh you know if you have say that you have 10 threads and a thousand jobs and those 10 threads end up doing like 100 jobs each then you're very often you're like in a situation where a thread can keep running for a while longer and just get one more job and do that one too you don't have to pay the cost of a context switch to a different thread whereas if you had a thousand threads and a thousand jobs every every thread got one job then you would have to pay for the contact switch between these threads um so i can imagine that that that might be an issue but this isn't really something that i have spent much time messing around with or thinking about so that was just a guess from first principles let's see miles says the linux style capabilities sound like a reasonable approach to that problem with the file manager escalation [Music] yeah so capability is one solution something that we're already building in serenity is this thing called the file system access server and file system access server is a pretty interesting service so it's a service that's always running and um it's used by programs like uh text editor or pixel paint and anybody who wants to do file system access they actually don't have access to the file system themselves so now when i'm opening a file here in text editor i'm actually this open dialog runs in the file system access server it's not part of the text editor program and if i want to save to this file here then i get a permission request or a dialog where this is a file system access server asking if i really want to allow text editor to write to this file and you only have to do you only have to approve it once but basically this this is a mechanism that we've been building that allows um a separate service program to mediate file system access and this could also certainly be used um as a building block and something like that privileged escalation for copying something to the root um that said i'm not sure how common it is to want to copy something to the root but but i do agree that it it does feel like um something that would if there is a straightforward way in the gui to just copy something to the root and elevate your privileges temporarily to do that i feel like that would that would give this feeling of quality right that's a really high level of polish if you you can do that in a secure way um so i do like that idea let's see kevin joseph says really appreciate these thank you thank you for coming kevin glad to have you here uh olaru says hi how does the serenity kernel get its symbols does it generate a symbol table file which is parses at runtime or does it get compiled with debug symbols and reads them from the various sections aha i'll show you so we actually generate a file i think yes here it is it's called kernel.map so it looks like this basically and it's just a sorted list of all the kernel symbols and we generate that as part of the build part of the build process and i think the first number here is just a hexadecimal number um that contains the number of number of symbols in this file so that the the code in the kernel that wants to parse this thing knows exactly how many symbols to expect so you can just read that many lines and in the kernel we call these k sims uh and we load them on startup let's see load kernel symbols um wait did this change did this change i wonder kernel.map oh shoot okay so uh we're still using that symbol thing but nowadays we're actually baking it into the kernel elf so we're baking it in as a separate section [Music] right and that's what we see here so the kernel symbols is we use some bin utils trickery to jam this text file that i just showed you we jam it into the kernel image and then we parse them out from there so that's the first part here is correct like we generate a symbol table file which we then parse at runtime it would be pretty cool to uh have the kernel sort of self reflect and like read its own image but the way that our boot process is set up right now we don't actually load the whole kernel image into ram we only load the um the pt load sections of the pt load headers so if you look at the headers with redelf like this uh we can see these so we we load all these load headers here but um we don't we can't find random sections um in memory so that's why like and and the main elf header itself we also can't find i think because it doesn't get stored anywhere just throw it out um let's see ananta says hello awesome cling do you implement x3 or x4 fs and linux compatibility capability for serenity it will be interesting and more useful like using wine libreoffice and other linux apps um so currently we implement x ext2 that's a file system that we implement from the linux world and the the one that we use as our basic root file system at the moment i'm not interested in linux compatibility capabilities like syscall translation stuff like that i'm sure that you could build compatibility layers with that if you wanted but if you want to run linux apps then you can also just use linux like [Music] we're not trying to create linux or something linux compatible here we're building something different um something that fits what we're interested in um [Music] and like i have nothing against linux like if you want to use linux then use linux but that's not what we're building let's see just erden says probably stupid question when debug information is open at serenity but how much system use memory when just use terminal um i guess what you mean is like how much do we use um like how much is the baseline memory usage if we boot without the gui um it's not something i've investigated but i encourage you to investigate that yourself you can boot the system in text mode and get some measurements should be pretty straightforward uh aria says youtube chat doesn't let me send links uh well i'm sure that you could come up with a crafty way to encode the links so that i could still understand how to reassemble them [Music] if you wanted to lebster says is it possible to view your demo from handmade seattle yeah absolutely um that there should be a way to do that we looked into it earlier uh where the hell was that it was here on twitch um just go to abner's twitch i linked it earlier i'll link it again here and yeah uh so one infinitive one says maybe disable the thing that deletes links i have no control over that um i have no control over moderation basically on youtube which is i have to say that's that's something that's extremely frustrating because i i can i often see that i get comments and then they get deleted by youtube and um but before they get deleted i get a notification on my phone that like oh so-and-so commented on your youtube video and i can see the comment but when i go there it's been deleted and this happens pretty often and they're just like innocuous comments um but i think i think the thing that youtube just really dislikes is if you have urls in your comments um at least that's what i often see like i get some comment and i see some part of the url in it and then it's deleted um and it is it is really frustrating um but i mean i guess i guess they're dealing with a lot of spam so what do i know i don't know how to solve a problem like that at that scale um but i would like to i guess i would i would like to just say that uh i don't have control over deleted comments and deleted messages in the chat at all and there are no settings i can use to to improve that as far as i know uh but if i'm wrong and there's a setting somewhere then then i would be happy to hear about it uh christophe hornal says hi is there something like an online package repository and manager planned there are no plans we don't have plans in this project and i like the ports monorepo system i would say that's one of our greatest strengths over the more linux-like development model the fact that we are extremely cohesive and we stay in a single repo allows us to to build with um a kind of leverage that you simply don't get in a distributed project model [Music] and that's something that i'm really happy with and i i think a large large part of the our ability to make fast progress on things is that everything is developed in this way if we try to split everything up uh then we would we would just clone a lot of the problems that um traditional linux distros have for no real reason let's see just ordinance says he meant with base gui plus terminal right yeah but um whatever configuration like you can you can definitely figure that out and let us know that would be interesting okay the bitly hash 30 h3swn bit lee let's try it out look at that we figured it out and there is cat dog check it out can we zoom and it works when we're zoomed that's awesome it feels like uh she's a lot faster than the native cat dog or a bit faster also i wonder why it doesn't like it gets blurry when i zoom in but that's probably firefox being obnoxious i wish it would just pixelate that's awesome nice job on that oh cat dog it's a little bit strange that when i move the cursor around the cat dog comes along with it i wish she would kind of stay in place even if i'm moving the cursor near the cat dog can we try to open the react cat dog demo in the serenity os browser you're gosh dan right we're gonna try that that's exactly what we're gonna try and that will also give us a chance to try if bitly works in the serenity browser i have no idea so we got a bunch of things to figure out here um bit lee 30 h3 swn all right bidly worked oh no we have a javascript exception cannot set property width of object canvas element um all right hold on let's try to fix that um cannot set property width of object canvas element so oh because i've made it read only for some reason oh let's just it shouldn't be read only i think um let's double check with the spec but i think you're supposed to be able to assign to the width property uh width is yeah it writes it's not a read-only attribute it's just a plain attribute all right so then we make that not read-only same with height and then we need to add some um getter and setter i guess so those are longs or unsigned long wait ah i have the wrong key map the swedish key map everything felt so wrong all right let's let's just add these here and let's do a little bit of that multi-cursor editing that we talked about maybe something like this all right and then set attribute string number value attributes why can't i spell attribute names colon colon and then we just have to change that one okay wow see that multi-cursor editing is it's pretty handy i have to admit mr brax says you don't use the swedish keymap heck no i use a u.s english keymap i just have an ability to switch to swedish keymap if i need to type in swedish and i've been in contact with some swedish people today so i had to switch to a compatible keymap and by the way i guess we can look at how this is actually what does this actually do oh this is not very not very view source friendly it's going to be fine let's see red jay says hey andreas i'm a bit late would it be possible to run something like the chromium browser in serenity and if not is that a possible plan for the future we do not have plans for the future or um even the near future we just we just do whatever comes up on a daily basis it would certainly be possible to port chromium or firefox or whatever browser you wanted they are very portable things it would be a lot of work and in my opinion it would be extremely uninteresting work that's why we're building a new browser engine instead because it's far more interesting both both like on a personal level but also i think what there are a few things the world needs less than yet another chromium port i think so [Music] building a completely different browser engine seems almost virtuous in a way um so i'm i'm definitely on that track let's see if we can run this if we allow assigning to those properties sky chip says hey hey hey hey to you too all right what was that url i already lost it oh no i didn't it's right there um bitly there's probably going to be more problems but we'll see all right so we didn't get the javascript exception um but also nothing really happening so i guess this doesn't work i wonder why i mean it could be a million million things right um something that maybe we should debug separately [Music] what events is it using hmm yeah i don't know that it's probably not terribly difficult it just takes it takes a long there's a fair amount of startup time when you want to debug with these modern web things um just because react and things like that are so involved that there's like a million different components that interact in our browser engine uh on mouse move right so yeah that's what i would expect just a simple on mouse move thing but um it's not here i guess it's in some external file do we send mouse move events i wonder um event names um mouse move we do generate miles move events yeah we do so uh i don't know why it doesn't work but it doesn't work at the moment something that we can look into later let's see mr brax says interesting i've been programming for over a decade always with the swedish one i guess it's mostly muscle memory right um so i programmed with the swedish keymap for many years as well but it is like it is just cumbersome um the way that you have to contort your fingers to hit a lot of the bracket keys and stuff like that it's just not very ergonomic so they've kind of sacrificed convenience to have space for the o characters um and if you use us english keyboard then there's like way less finger travel going on um and if you if you do the majority of your typing in english anyway then i feel like that's a it's a pretty fair deal um but if you have muscle memory for swedish keyboard then nothing wrong with holding on to that either uh but um i'm i made sort of a decision to switch to us english and i'm happy that i did because um my hands feel like they suffer less since i switched uh sky chip says boot time is absolutely insane by the way do you have a plan for real hardware support uh i don't have a plan in the serenity os project we do not have plans [Music] and if you visit the faq page that's listed in the pin comment and uh also in the bottom left of the screen uh you can find this faq here where the answer is that i don't have a plan for anything to implement uh or anything to do uh it's we're really just uh flying uh one day at a time see daniel sand says i liked your demo in the conference yesterday although it felt short yeah it it did feel short i tried to pack as much as possible into it but the conference organizers were very very serious about the time limit like they they said five minutes and i went over like my my demo was like five minutes and 30 seconds and um they were pretty hard about it um and they said they said that like next year they're not gonna have any kind of tolerance for anything about five minutes but for this year it was like okay five minutes uh 30 seconds or six minutes or whatever um [Music] and i wish i would have had more time for sure because making a five minute demo of serenity is way harder than making a 10 or 15 minute demo and i i would have loved to show like a lot more things um but that was the time slot that i had so i try to make the most of it let's see hyperlunk wants a serenity os like gtk theme i'm sure you can make that if you uh dig into it uh jcs says oh hello joshua nice to see you here uh hey andreas are you open to talking about what your original demo plans were um sure so the original demo was going to be um using a very popular website that um is like a very heavy very heavy website so um like twitter and uh um there were all these things that had to get working like um like react react dom um css flexbox media queries javascript things uh there were like a million things to get working and a lot of them did get working um and a lot of a lot of people helped out um getting a lot of things working but we were not really able to get the site uh looking good in time and also the performance was pretty terrible it took um like for example if you if you tried to load my twitter profile it would take um about 30 40 seconds um before the page would finish loading and that uh felt like it it wouldn't make a very impressive demo if you had to wait that long uh and of course you know you could cheat that kind of thing with movie movie magic but uh it was it was very very slow but the main thing that killed it was that the page layout was just not getting good enough in time um so i kind of just abandoned the whole thing you know and i made the video about um wanting to uh not be so isolated anyway and i think part of it was that um i i felt really bad about isolating over this whole thing but i also felt like um it was it was not gonna get it wasn't gonna get finished with a high enough quality in time so um there were kind of multiple factors that made me feel really bad i don't know i in retrospect it was the whole thing was kind of a stupid idea because i don't want to develop this project in a in a kind of a silo or in secret but i've already talked at length about that as you know but yeah so that was the that was the original plan was to get a modern website like twitter working uh but but ultimately like i think the demo turned out way better when it wasn't as specific thing like that but instead more like oh here are some some random four random things that you can do on serenity uh and we ended up showing off a lot more of the system that way let's see uh zero says seems like the organizers were german [Laughter] uh i don't think i don't think they are but uh that is still funny to me um it seems that we have the same um same stereotypes about germans uh devashi says that he did a react project quite a while back it uses fancy web audio apis so it probably won't function um [Music] but the ui is pretty simple can we try loading it in serenity browser we could absolutely try it but i'm not sure i'm not sure if it would work but you know send it here and we'll give it a try um let's see show us how twitter looks now so i haven't actually tried it for a while let me see what it looks like today it's gonna load for a while probably no yeah so as you can see it's not like the most beautiful thing oh and we crashed uh look at that our memory usage graph just spiking up and then dying uh that was one of many many problems um with this kind of thing is that modern websites are extremely resource hungry uh twitter is no exception they create hundreds of thousands of javascript objects and things like that and um you just kind of have to deal with it in the in your engine and sort of try to make object representation small and and we've done a bunch of optimizations in the javascript and web engines to try to deal with some of these things but i don't know it was a bit it was a bit ambitious at this stage like um we can we're obviously going to get there to get this thing working but we're going to need to sort of flesh out and make more mature the web engine the css stuff was uh in particular uh pain point that we encountered so react based websites or websites like twitter they use css flex box pretty heavy so flexible boxes and those are very convenient for developers and uh very tricky to implement as a browser engine because um the flexbox layout algorithm is um i don't even know what the word is but basically you you have to do multiple passes of layouts in order to discover constraints so like you can only learn which constraints apply to a box after you have uh laid out the inside of that box uh figured out what is the intrinsic size of its content and then you have to relay out um the containing box in in its parent context once you have that information and then like that feeds you new information that you use to do the next passive layout so it's it's like this big multi-pass recursive layout thing and i had totally underestimated how um [Music] how tricky it would be to to get flexbox working well enough that it could display twitter correctly because you can you can get it working kind of in ver in simple cases but something that's very annoying on the web is um or not annoying but like it's a great feature of web content is that if you don't say how wide something is then the browser will just figure out how wide it needs to be based on how wide its content is and that is really convenient when you're a web developer but when you're building the browser to actually compute the bang width of things based on their content that's like that's the thing that makes css layout really tricky in my opinion um [Music] because things can have things inside of them that have things inside of them and so on right um anyways let's see paul ratz says it might have been okay to recorded sessions on the demo stuff without saying it's for a demo sure um i mean if sure uh watkins r says hey andreas i hope you're doing well i am doing well thank you for asking i hope you're doing well too um i guess i was not asking but hoping so thank you for hoping and i hope you're doing well too let's see um danielson says that his favorite was the colonel json thing yeah that's something that i'm so used to that in serenity um that i kind of take it for granted but when people see that for the first time they tend to be like oh whoa you can do that and you know of course you can because we've been doing it for so long um and it i don't know it's just so logical and and i always forget about it and um actually before i made the demos i spoke to jt of systems with jt fame here on youtube and [Music] got the advice that that i have to think about like not what is cool to me about serenity but what is it like for somebody who sees the system for the first time like what would be interesting to them and that totally changed my perspective on what the demo should be like so that made me go for these kind of um like simple but but really cool things that i've taken for granted for over a year so it's it sounds like people um liked it i'm happy with that let's see firefox says i really like that you showed the proc file system with its json output and combine that with showing the javascript system yeah so like like i said like i had five minutes so i tried to jam as much functionality in there as possible even like i had to do a lot of functionality demo without even saying what it was or like without calling it out so for example like i i made sure to like right click on something in the file manager and like open it from there in the text editor stuff like that or you know using the ability to toggle things in menus without closing the menu um things like that so i try to try to pack a lot of that stuff in there so that if if somebody was paying attention then they would notice all these little details and and say wait a minute how did he do that um and uh yeah i think it turned out good gcs says i thought the demo came through very impressively i was thinking a neat demo would be to boot a whole bunch of milestones in qmu one after another to see how it progressed over the years that would be super cool actually that is a really cool idea i like that oh i'm far behind again uh ponte82 says interesting how heavy the modern web is when you open it in a naive browser that is really true yeah you there's nothing quite like building a browser from scratch to show you just how extremely heavy the contemporary web is like the amount of javascript that you have to load that they just throw in your face and they're like here load this two megabyte javascript and don't ask why um that was some some of the earliest stuff towards um twitter compatibility was like um they're sending us this one and a half megabytes of javascript what the heck are we gonna do it's taking like several seconds just to parse that where like the browser just stalls waiting for the javascript parser so i had to do a bunch of optimization work on the parser um but you know all of that was really good stuff because uh it made the whole browser and js engine better and faster so that's something that's really nice about that particular demo that i that are the original demo um was that all of the work that went into that was just work making the browser better so none of it was wasted um i am happy about that it would it would have been really really sad if if all that time was spent and then uh it was sort of just thrown aside but instead nothing of it was wasted let's see deborah she says wait what oh here we go this dot netlify.app okay let's see if we can load it here net lift it's nice that people are sending um sending me links in segments we're beating the system here communicating links even though we're not supposed to um and let's see if we can load that then so hashtag the pose netlify.app http load failed uh we don't have any cipher suites in common with that host i'm afraid so i cannot load that in serenity um that is a tls problem so we're not we're not implementing any of the um cryptographic ciphers cryptographic functions that they support on that particular server so our tls library is not able to speak to it so that's unfortunate let's see clinton programs says do you think we would be better off without react and other modern web development trends it seems like it has a lot of negatives such as tracking bloat etc but it also makes the web more interactive um i don't know i don't i don't think that we would be better off i i think that um abstraction what abstraction is a really powerful and useful thing and it allows people to build more capable web applications and like we're able to do so much on the web these days that would have been very very cumbersome to build if everybody had nothing but vanilla javascript and html and css right the fact that there are these really sophisticated building blocks and frameworks that people can use is a large part of why we have such a rich web so i don't know that we would be better off um i guess one feeling that i do have is that we maybe would be better off if javascript hadn't been so absurdly optimized in browsers like the the amount of compiler engineer optimization work that has gone into the major javascript engines like v8 javascript core and spider monkey it's just a lot right there's man decades of optimization effort poured into these things and the result of that is that all of these very complex websites they expect javascript to execute really really fast and that's nice in many ways but like the faster you make it the more code they throw at it there's like that that cycle uh that unavoidable natural cycle that whatever resources you give to abstraction developers they will expand their abstractions to consume those resources um and that puts us as like an sort of underdog project like a new browser at a pretty heavy disadvantage because not only do we have to support the language as specified but if you want to actually execute code from the modern web then you're going to have to also optimize your engine pretty aggressively for example or an example of that is so the javascript language as specified tells you to instantiate the arguments object in every function call right so you call a function and in the context of that function being called there exists a magical object called arguments that you can access your function arguments through sort of an array-like interface and there's the arguments object in javascript and the spec says that that object always has to be allocated in every function that you call so if you just implement javascript according to spec that means that you will create this arguments object every time there is a function call and that ends up being extremely heavy and that was one of the one of the many many many performance problems that we had on twitter and um to alleviate that you can sort of statically determine that wait a minute this function doesn't even access the arguments object so if i create an argument's object and allocate that from the garbage collector it will never ever get accessed so you can just elide that allocation right so you just don't create the arguments object and then you save yourself the trouble of allocating uh of collecting the garbage of using the memory and so on and there's a million other things like that that all of the mature engines of course already do all these things right but if you don't do them then you quickly discover that you're in a lot of pain because i think when we when we first had twitter loading in the browser it took like three minutes or something like that before it finished loading and a huge chunk of that which is the garbage collector running over and over because we allocated so many arguments objects and so many declarative environment objects and things like that and then i had to figure out ways to actually avoid creating those objects because we could statically prove that they were not needed and i guess it would be really cool to if you could have a documentation resource not just of javascript the language as specified but of like optimization strategies or common common optimization strategies that every engine implements um how they work what what they achieve and sort of what problem they avoid things like that that would be a fascinating thing to have and if i knew more about it i could write some of it myself um but it's uh maybe maybe someday i will know more about it so i can write it myself anyway let's see uh jcs says that every program attempts to expand until it can read mail that is that is um disturbing but you have a point um that's certainly i've certainly seen that happen more than once um and i i feel like i haven't i haven't done that to any of my own programs but i have definitely written programs that ended up sending mail more than once so my programs expand until they send mail let's see panta82 says imagine how much work microsoft has put into edge and ie over the years to keep up the pace of optimization only to throw it all away right that is pretty sad i i think um the fact that they dropped their engine and sort of joined the chromium crowd is really really really sad um and it's really not something that should be celebrated uh or encouraged but quite the opposite like i feel like that's that's a really shameful thing that they did um and it's it's hard to argue like it's hard to believe them when they say that they care about the web when they had a um such a capable engine that they just threw away to join another one but uh i don't know of course there you know there were many pros and cons and and various motivations and and i don't know what that decision looked like internally but i do think from an external perspective it's extremely depressing that they ended up doing that and i wish they i wish they would have made a different decision let's see arthur says some of my favorite videos are your performance optimization videos you're extremely good at it and i am not when you worked on optimizing safari what tools did you use in-house and or more the main tool that i used for safari was instruments so instruments on mac os um wait that's not it instruments on mac os is the profiling tool but it also has a bunch of other functionality not just time profiles but you can do memory analysis um page fault tracing stuff like that and if it if it looks vaguely uh familiar then um i've been building the serenity os profiler to have sort of a similar ui layout where you have the timeline track and then the tree view down below it's totally based on the same ideas and that that's the main optimization tool that i used and then we had all of these different benchmarks that were in-house that we would run capture a profile of the benchmarks and then try to work out how we could optimize execution let's see mustafa says the camera is nice but it looks like it's set up higher than usual yeah i'm just uh trying out a new um new camera mount today and it ended up a little bit higher than usual i'm still experimenting with it i uh only got it set up like 20 minutes before starting the stream so didn't have didn't have too much time to to adjust and mess around let's see andrew castor bragging about having played 12 hours of forza in the last two days great job sir um that sounds like it might be fun then so very cool i was playing uh i was playing dark souls 2 in the last two days and it's not very fun i have to admit like i got i got a decent ways into the game now and i'm not having fun first game was super fun this one is not very fun um so watkins r says i imagine those v8 engineers probably have stuff like that in their respective corporations um right so a lot of a lot of knowledge about javascript engine optimization is stored internally at companies for sure and also i think uh a large it's largely like um generic compiler optimizations at this point because all of the major engines are uh jit compilers and they implement a lot of like standard compiler optimizations that you would find in other compilers too like gcc or llvm or whatever so i think but because because i don't know much about compiler optimizations from an implementation perspective uh i don't know how that stuff works but maybe one day i should figure out how that works we'll see as salur says one thing i'm wondering is why isn't an operating system dedicated to just one programming language i mean like game engines can't only serenity os be a programming platform for example c plus versus versus what um why an operating system is not dedicated to one programming language i guess serenity is probably the closest thing to that uh or there are other operating systems that have a single language like there's temple os right that that has holy c um serenity os is written in c plus it's very much um dedicated to that in a sense although uh it is purely practical really like it is the language that i felt the most productive with when i started and that's why we're all using it now uh if if there were to be something that made me feel way more productive or way more practical tomorrow then i would look at okay so how can we how can we make use of that um and i don't know like why you would want to really restrict yourself to one thing if there's a better tool for the job i think that's what it comes down to people people who do heavy work tend to appreciate good tools and the moment you tie yourself to a tool you're kind of limiting the you're putting a cap on the kind of work you can do because there's no tool that's the best tool for every job they're great tools but none of them are going to be like the objectively best tool for every job so if you if you tether yourself to a specific one then you're like eternally capped and i think that's probably why you don't see many systems like dedicated to a single language let's see christian garcia says what was the update of a tool that you use that you enjoyed the most in your life oh an interesting question um the update of a tool that i use that i enjoy the most in my life i don't know um i should keep track of that kind of thing like because i frequently have this experience that i install some new version of something and i think oh wow what a great change right but then i just forget about it or like i forget what the software was like before the change and now i only remember how it's like now um but if i think back really far like the most impactful update that i can remember was i think microsoft office 97 when when i saw the toolbars that it just made such an impact on me i was so impressed with them that um i decided to recreate that toolbar basically here and it had this effect that like they would draw this little button outline around the button when you would hover over it and in office 95 they didn't do that so that was new in office 97 i think that was in office 97 and i i just remember being totally in awe by this super cool effect and i still haven't let go um i still love it the way that it just pops suddenly it's so neat um so i guess it's like decades later and i'm still thinking about it so that's probably the one i enjoyed the most in my life uh let's see patrick mcgill says it's friday again crazy i agree it is a little bit crazy time flies um beige dove says gen 2 or open bsd well if i had to choose between those two i would probably pick open bsd because i have spent enough time in my life compiling uh portage packages that i don't need to emerge anything anytime soon mustafa says what should i have for lunch today i'm terrible at making decisions you should have indian food arthur says played metroid dread yet great game i haven't played it yet i watched a little bit of gameplay on youtube and i watched some somebody speedrunning it on twitch and it looks totally alright and uh i i think i stopped watching people playing it because i didn't want to spoil too much uh and i'm probably gonna check it out it's just i'm i'm in this total dark souls zone right now where i'm just trying out the dark souls series after having such a great experience with the first one currently not enjoying the second one but i'm going to play a little bit more and then move on to the third and then i also have um bloodborne queued up so but metroid red probably i'm gonna i'm probably gonna play that at some point um i would like to wait for the game to get a little bit cheaper i i do like to buy cheaper things and i'm not it's not like i'm in a hurry to play it right but um we'll see i i feel like uh that's one of those things where it's quite easy to save money if i just wait to buy games instead of getting them when they're new because i used to buy new games all the time when they would come out but it just it just feels a bit like what's the urgency anyway qian says hello sir is your base gui hardware accelerated no it is not it is built on frame buffer bitmaps let's see [Music] patrick mcgill says firmware written in c plus plus would not be a good idea well you could probably write some of the firmware in c plus plus but i wouldn't necessarily write all of it in c plus plus but anything you can do in c you can definitely do better in c plus plus but very often you also want to use assembly and firmware so let's see uh chan says in my opinion they perfected ui design in windows 9x and 2000 but threw it all away for the sake of touch devices and dpi scaling uh yes i agree uh i i do feel the same way that they did throw it away for the sake of um they threw a lot of things away for the sake of touch devices and and um dpi stuff uh although i would say that happened later i i don't think that so windows xp was the thing that came after this right and i don't think that's necessarily when they started getting corrupted by touch devices but what happened there was that they started um targeting consumers very heavily and that was sort of the catalyst that sent them on a very sad path ui design wise and thankfully we can choose which ui paradigms we implement here in serenity so we just do the ones that are the awesomest ones oops let's see patrick says he's getting his friday dose of andreas cling asmr my wife is very used to the sound of your voice now too well uh that's [Laughter] that is funny um i'm surprised that that people listen to this on speakers but at the same time why wouldn't you uh hmm i i wish i had something clever to say about this but i'm just going to keep my mouth shut um let's see mr brock says nintendo games getting cheaper huh yeah i know but um i can always hope at least uh at least i feel like like if i go and look at the uh what is it the nintendo switch store they do have a little bit of um deals and that you just kind of have to wait for something to show up in the deals section uh essler says asking if you've seen the movie her i have not seen the movie her [Music] but i'm aware of it but i haven't seen it that's the um joaquin phoenix movie right i have not seen that mustafa what is your favorite underrated conference slash other talk on programming oh i don't know hmm i don't know damn it i wish i had an answer uh i don't have an answer i have to uh think about that damn it i have to get better at recalling random things like this like if you ask me to recall some code thing then it's so much easier than uh trying to recall something from reality reality is much much harder to remember um [Music] and i have not seen serial experiments elaine either all right so mustafa says that he has a favorite here's a talk that he really likes which is a guy pretending to talk about the future of computers from 1973 really great okay so i think that you should share that with us so that we can all appreciate that um that would be very nice oh i know i know now which talk i wanted to um show you oh damn what the heck um i follow this greek professor guy on twitter but what the heck is his name again um greek professor eunuchs diomedes spineless that was easy uh this guy he has a great talk about the history of unix which i really really like can we find that half a century of unix history preservation uh no that's not the one unix architecture evolution from the 1970 um to the 2018 freebsd this was super interesting i really really enjoyed this talk i will link it in the chat um and that now my brain is starting to unclog so i also remembered the dave cutler interview i really really like these as well the oral history of dave cutler who is the guy behind the vms operating system and the windows nte kernel fantastic talk as well recommend both of these videos so hpq oeu says have you ever tried any of the bsds or any other unix as a desktop for a prolonged time sure yes i have used openbsd and fbsd and freebsd as desktop system for a couple of months each i think and i've also used mac os of course as my desktop it is technically a unix i used it for for years as my desktop i've also run solaris many many years ago rana solaris desktop um yeah those are the the ones and uh you know they all have their strengths and weaknesses let's see the future of programming let me just google that so we can find it that was a bit of an ambiguous title i feel like there are so many of them let's see alex says how many cpus are in the room you are in right now all right the questions are getting a little silly here but let's uh let's see how many cpus are in the room i guess there i would have to say three three cpus in the room um [Music] there's a little intel nook computer that i used to use i got my phone and um i got my the computer that i'm streaming from and then of course they have many cores inside of them and so on let's see all right so mustafa was saying brett victor the future of programming by brett victor let's link that all right yeah so there are obviously a lot of cool videos about programming uh and i think uh it's it's good to allocate a little bit of time every week to to like take in at least something new that you haven't seen before um which you know it can be hard especially if you are used to sort of sticking in a routine like i have this problem that trying taking in new stuff that i'm not familiar with is kind of something i have to force myself to do but it always feels like time well spent afterwards um and like even even watching stuff like lecture on data structure a lecture on a data structure that you haven't seen before or something like that um [Music] i think it's definitely worth doing and i this is the reason i'm saying this now is because i'm reminding myself to do that i gotta do gotta do that soon again um ali says speaking of that intel nook do you remember off the top of your head what its processor was oh that is a tricky question i don't know that i remember that off the top of my head but i can make a little bit of a search through my archive here i do have it on the other screen i think i do have a model number all right let's see let's google it on bing actually obviously let's go to bing please we're googling bing so we can go to bing and search for this this was the thing um this right here is an i3 6100u thingy this was the um computer i was using in the beginning um of the serenity os project this like my first videos were on made on that thing and my goodness that thing would die if i try to record a video of my contemporary workflow of like using sea lion and building serenity and making a video at the same time the higher resolution and everything that would be that'd be interesting um it's just sitting here on a shelf right now i have nothing for it to do and uh it's a little bit sad actually i would like to give it something to do but um what are you gonna do some i'm sure something will come up like this i will eventually like spill tea or something on this computer and i will need a replacement so that's why i'm having it around ah let's see asistol says hey andreas why we're boy we are on have you ever used x have you ever run bos not much i i used it for like an hour or something and just click around doodle around see what the ui felt like and it was not super interesting to me like i like the icon style but something about it just didn't appeal to me um i was a much bigger fan of next next step system i really like the way that looked so that's something i spent a bunch more time with um [Music] but but even like i say much more time but really not that much more time actually if i'm honest i just uh i just liked it more so it felt like i spent more time with it um what's the tldo valtteri says what's the tl dr on why east const is cool well i advise you to read this post right here and um it explains the arguments for east con's placement but the quick answer is that it's the same order in which the language um understands the type so it's the natural natural position for the const qualifier andrew caster says now that you've done one conference and a few podcasts are you more open to extra conferences and podcasts in the future i guess um i mean yeah i think so definitely it's uh it's gets easier every time i do it and yesterday when i was doing the handmade seattle demo i was surprisingly nervous for a pre-recorded demo um but i was still sitting here like uh my stomach was turning and uh like uh gotta answer all the questions in the q a and uh uh unfortunately like the ques the q a section was not publicly visible like it was only visible to conference ticket holders and it was in text form so i was doing it in a chat room but it was really fun and i think every time that i do one of these things like conferences podcasts and newspaper articles blog posts whatever um it gets a little bit better a little bit easier and a little bit funner so i'm certainly more open to it now than i've been in the past but at the same time i also don't want to do i don't i don't want to like over saturate the internet with like the same things over and over because i feel like it's good that we have some time to develop the system before i go out and talk about it again now it's been a while since the [Music] since the last time um yeah and by the way one of my favorite things that happened this year is that uh linus started doing a little bit of serenity publicity as well uh not just participating in the monthly update videos but also like going out and and doing podcasts and um like two days uh interviewed by jetbrains um on the sea lion blog and stuff like that that's that's really awesome i'm i'm really happy with that and i would love to see more people um anybody who's interested in you know sharing their experience of working on the project if they would go out and and talk about that in whatever appropriate form that would be awesome and i really hope that nobody that there isn't somebody who who feels that they really would like to but they that they shouldn't or something like that or that it would be frowned upon because i would certainly encourage everybody to to share your own experience with uh with the project if if you feel like it it would just be really fun let's see mustafa says better yet when saturn the os conference well um for when posting in my chat box uh your punishment is that you have to organize the first serenity os conference so go go do it uh mitchell says andreas do you ever look at unknown or also homegrown operating systems that previous bos question made me wonder if you try to avoid them maybe because you don't want to copy them etc or the opposite [Music] i don't really look at other systems super much in general anymore because i'm and it's something i should do more of really it's just that i get kind of tunnel visioned on what i'm working on and then i forget to go and look for inspiration um but i i've certainly i certainly like looking at random operating systems that people are working on and uh for example there are two other operating systems presenting demos at handmade seattle there's box os by uh daniel boxer and there's also uh essence by next and uh i was looking at those systems and it's it's really really fun to see how other people approach these things and they're very very different from serenity and uh i've also uh in the past uh looked at systems like um like wing os and um have been so many different ones actually like whenever somebody says oh hey andreas i'm working on this operating system i usually try to to like um check out the code and like build it and run it and see what it looks like just because it's fun so i do enjoy that yes and i'm not afraid to copy anybody i mean have you seen serenity os like does it look like i'm afraid to copy anybody we're literally stealing um the entire visual identity um but the reason that it's okay is because the people were stealing it from were foolish enough to discard it in favor of something way uglier so that makes it okay i think like they they don't want it we'll take it uh that's my my reasoning anyway um serendio was conference someday yeah so kevin says in c is it true that not freeing every pointer allocated affects the runtime of the program uh it may and it may not it really depends on many different factors so if it's just a handful of pointers that you don't free that's usually fine but if you allocate gigabytes and gigabytes and you don't free it the operating system is eventually going to have to put your gigabytes somewhere because you're going to run out of ram and usually what happens then is that it gets it copies those things out to disk instead and then the disk is usually a lot slower than your ram so that starts to affect runtime um but if it's just a small number of allocations or a small amount of memory allocated that's usually not an issue [Music] but in general it's usually a pretty good idea to to free memory that you've allocated i would suggest doing it devashi says do you like indian food what's your favorite i love indian food i super love it um my favorite food is probably palak paneer um this like spinach and paneer dish uh it's a super awesome curry that i usually get whenever i'm in an indian restaurant um and i i love like all kinds of different paneer dishes really and um and when i lived in san francisco i i used to try like every vegetarian dish in every uh every indian restaurant in the city i was almost like on a mission to try all of them and they were all awesome and it's the one thing i would say about indian food is that it feel it feels to me like if i wanted to get really really fat the easiest way for me to do that would be to eat nothing but indian food because it's so stupidly good that i can just eat infinity amounts of it and that seems dangerous but yes i do love it thank you for listening to that suddenly passionate outburst about indian food um let's see i poke badgers with spoon says what is the biggest decision you regret on the design of serenity that cost you the most pain changing um i don't know um i don't really have any answer to that i don't regret anything in particular i'm pretty happy with the things that we have i think like obviously we've made lots of mistakes and we continue to make mistakes but um those mistakes give us learning experiences and if it weren't for those learning experiences we wouldn't improve as developers and i think the system wouldn't improve either so i don't regret screwing up uh designs i i'm happy that we screw them up so that we can um because the thing is when you screw something up and and you're forced to figure out how to make it better then you actually not only do you end up with a better thing but you also understand what made that other thing what made the previous design bad right whereas if you if you just do something correctly the first time or like the optimal way the first time um then and if it's by accident i mean like you accidentally make something great the first time that's nice and everything but um it's it feels so nice to understand why a flawed design is flawed uh and to have that experience of like replacing it with a better design and i think that's also um why it's so important to when you're teaching new developers they don't just like tell them what they should do to achieve the optimal design right away but instead like help them work through some bad designs so that they can learn from their own mistakes like what makes this inefficient or what makes this not uh work well and help them sort of iterate their way to a good design and i like to um i like i like to do that myself as well like iterate and experience the iterative process that leads to the better design let's see uh jack delahunt says you never seem to be logged into your github account and firefox do you use a different browser off stream do you log out before stream [Laughter] i'm not sure i'm not sure that matters but in the interest of a little bit of opsec i'm just going to say no comment um retro game plus says have you considered doing a video on staying motivated i think i probably did one at least one already but um my my main feeling about motivation is that motivation is unreliable kind of fickle and um if you if you build your life around motivation then you're always at the mercy of this unreliable jerk that lives in your head and you wake up one day and you're not motivated and if that's what you rely on then you can't work properly and so i'm a big fan of making routines instead and like learning how to be disciplined sticking to your routines because if you have discipline then you don't need motivation then motivation is just a nice bonus on top of your discipline so that's that's my my short version of my opinion on motivation um yeah i'm sure that there's a car video about that i feel like i've talked about that before now people want indian food yeah valtteri says what is your system for maintaining focus do you have a mandatory minimum time of working on serenity every day um not really i just uh it's just it's just i'm very fortunate i would say because i am intrinsically motivated to work on serenity even if i have the discipline so what i just said about discipline like i build discipline underneath and then i have this stupid amount of motivation on top of that so at the moment i my my system for maintaining focus is that i i go and i sit at the computer every day and um i try to put in like at least i would say like i try to like merge at least a few pr's i try to write maybe i don't know like four or five commits minimum every day so i have i have some like metrics like that that i like to stick to um but you know obviously some days i don't end up writing code like um like this week i was doing interviews and conference preparation and next week there's more interview stuff happening and so so i do i guess yeah i do have this mandatory minimum time it's just that it's not time it's more like mandatory minimum output that i want to produce um but then on top of that i have this stupid intrinsic motivation that just um seems endless at the moment so while i do have the mandatory minimum i just end up doing so much more usually um but but yeah so but as i said like motivation is unreliable so some days it just doesn't happen and then i do try to i do force myself to do something anyway let's see uh butter says it would be interesting to see a video showing your daily flow like checking prs figuring out the next thing to work on and so on yeah i guess so that that does sound like it could be interesting i would have to um i would have to observe myself to see what i actually do maybe keep a log or something um or i guess i can also just record it and see see what happens um but yeah that's a good idea uh andrew casler says did you see the low-level emotional programming talk at handmade seattle yesterday did it resonate with you i definitely saw myself in the bursts of extreme productivity crafts i only saw parts of that yet because i was also doing other tasks at the same time so i have yet to watch the whole thing i am going to listen to the whole thing of course so the parts i did see they were they did resonate partly but i will reserve comment until i have seen the whole thing i watched the whole the first talk by erasmus anderson uh and then i had to leave during the um the happy cat talk so i'll have to get back to you on that let's see [Music] how what's something you wish more programmers knew or understood um oh hmm something i wish more programmers knew or understood i guess that um what's something oh damn it this is such a good question like if i have to condense it down to one thing um i wish more people would understand how to identify what matters right that's such a typical mistake that so many people make i've made that mistake hundreds of times myself wasting a bunch of time on something irrelevant because i didn't take the extra steps to actually determine like what is the real impact of what i'm doing right now like does this thing actually matter in the great scheme of things i've wasted so much time on irrelevant things because i didn't like honestly consider if they were relevant and you you see that a lot with you see that a lot among uh junior developers especially but it's it's like it's something that never really stops and you have to consciously fight against it and a typical thing is um these like performance optimizations or performance optimizations that you convince yourself you need to do because you know oh this should be this would be more efficient if we did it this way or that way and so much stuff like that really doesn't matter um and if you measure it which you should if you're doing performance work you will find that like this really didn't matter and you spent way more time on this um on just making this change than will ever be saved by the code change in terms of performance and that's something i wish people would um i guess i wish people would make more of an effort in honestly evaluating the impact of the things that they're working on and trying their best to choose the most impactful things but at the same time obviously sometimes you want to do something just because it's fun just because it tickles your your nerd brain right and i'm no different um and i but i think it's okay to make exceptions for those cases so like if you're doing something that is really really fun for you even though you recognize that it's kind of ultimately pointless but you're really enjoying uh refactoring this thing or implementing some optimization that doesn't really matter in the great scheme of things but it's just so darn fun to do um then you should you should not feel bad about doing that right yeah it's kind of about cost benefit analysis just on a micro level as well not just at the macro level but like at the micro level like what am i doing right now is this really actually beneficial um or is this is this pointless optimization really fun enough that um that i should spend my time on it yeah that's the that's what i think let's see um and paul says almost end of office hours nice chat everyone thanks andreas enjoy weekend indeed we are at the end of office hours so this will be the end of today um and oh let me just answer a fart monster here before we go yes fart monster you can watch the demo on twitch right there it's four hours and something into it so yes this is the end of office hours thank you all very much for coming for all the questions and the dialogue very very nice to talk to all of you and it's uh i think it's so great that we still have this format going and it somehow it manages to feel fresh every week so really appreciate everybody making that happen because uh if you were not here it would not be fresh every week uh so that's all thanks to you uh hope everybody will have a great weekend and i will see you all next time bye
Info
Channel: Andreas Kling
Views: 2,595
Rating: undefined out of 5
Keywords: serenityos, osdev, c++
Id: aabIlXbB9yU
Channel Id: undefined
Length: 121min 10sec (7270 seconds)
Published: Fri Nov 12 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.