Okay i should have probably watched the episode uh before to like get in the mood again it’s been a while since i’ve uh i’ve recorded such an advertisement episode um i guess welcome back um oh yeah doing things um let’s connect to lgl.silihoon.com which is a anarchy server a vanilla anarchy server and Yeah i’ve not been playing here for quite some time i think it was a few um yeah weeks a month i don’t know the thing is i i already feared that the server won’t survive me not actively advertising for it and yeah it seems like it’s actually Like that and i will most likely not um be active for long here on the server and advertising it so if you’re interested in playing on here and you don’t want to be alone you have to bring your own friends um i don’t really have a efficient um Advertisement set up oh and yeah i reset my computer so as few things are not configured yet um yes i want that one oh and there’s a new version of minecraft out if um you haven’t noticed it’s all already um it’s almost not new anymore um So the thing this uh anarchy server here offers for you this um not the greatest hardware or the most performing server or like the most players or whatever even though the hardware is uh quite fine it’s not like um yeah high-end um overclocked whatever the best on the planet um And it’s mostly empty but it’s a vanilla server which is quite uncommon for a mckee environment and that allows me to update and also the low player count allows me to update to the latest versions which means and you can play in a anarchy environment without Um yeah having to keep your client in a outdated version which is the case for yeah all the other servers that have like players and um yeah depend on a more stable version of minecraft because the newer versions tend to get more unstable and unstable um Yeah so um if that server interests you and you want to play on a server that is like mostly empty but uh still online um i mean the server won’t go away just because there are no players um then go check out laser government reachable under lgl.legal.com and yeah today i prepared a Video about a javascript from the javascript conference from asia asia is it even in english wait what did i prepare here and the browser gets to decide when to do this and it tries to i think i’ve seen it already but i um like the video that i Think i’ve seen already i could not remember like i cannot remember like in detail enough so it’s probably worth a rewatch um the thing is this video is not licensed under creative comments on youtube and the description states which i think is cool that the speakers hold the rights um so we Are a little bit gambling here that um the speaker jake archibald i don’t know um is not going to sue us and by us i mean me um by replaying that video in the background so yeah i think it’s a cool idea to um yeah to keep the rights to the speakers But i i also think it would be an even cooler idea to like recommend the speakers um to use a permissive license um and then upload it under this license on youtube because what i feel is like there’s no communication between the speakers and the conference at all And it just like says it’s a permissive li it’s not a permissive like the right belongs to the speaker but there’s no communication with the speaker so even if the speaker would allow like use of that content um he’s not like actively asked or things like that I’m just assuming here but i feel like this is how it’s going and um i think most speakers um yeah i know i’m just assuming here uh are grateful for people like watching their content and um yeah i mean re-uploading content is like not the thing that they They love but um it’s not like that i’m stealing views here because people prefer to watch it on my channel um because the original isn’t like better audio quality so i guess um and better you have even video in the original so i guess it’s fine uh For this case um yes you might have noticed in the previous episodes i’m usually quite um yeah uh how you how do you say in english um i try to uh not uh like upset people by uh using their content and what is the sound outside i have to go Okay so with that being said i’m now going to watch a youtube video from the youtube channel um jsconf it’s a video from 2018 and it has the title jake archibald in the loop jsconf.asia it has 200 000 views and if you’re interested in that content Then make sure to check out the original as i already like um mentioned it’s always cool to keep the views uh to the original uploaders even though it’s not the speaker’s channel it’s like the official conference channel so i guess they would appreciate that also if you have Feedback to um the video that i’m now going to play back make sure to not write comments here because um it won’t reach the speaker or the conference or whatever okay and if you’re interested in this minecraft server if you want to play in an environment where you can like grieve Where you have vanilla a vanilla server where you are allowed to do a to do some things like um griefing killing other players uh using hectic clients and like try harding um with whatever like uh utilities you can get um to yeah achieve your goals um yeah So um that’s that’s about it for my introduction and i would say let’s go play the video hello everyone how’s it going get my slide clicker out um yeah this is my first time in in singapore um yeah it’s nice oh singapore that kind of thing is already Going well if i get an applause for that that’s fantastic um like well what do i know about the world but i feel like singapore is like the most european asia you can get right if that makes sense to you i mean as i saw asia in the title i thought it Would be like some i don’t want to sound rude but like most like um i think it’s especially chinese i don’t know like what was it this one defcon in china that was quite um intense um regarding the um english skills um it’s such a different language that it’s Hard to understand uh like not all people but um yeah most i don’t know what to say most but um you see more chinese talks where it’s hard to understand what they are talking um then i would say european talks or whatever um yeah but um the english skills in singapore are Good i don’t know why i’m even talking all right let’s continue it’s around yet like i landed just before the conference so i i can’t say i’ve really experienced it yet i’m going to stay on for a few days afterwards and have a proper explore um well i mean other than that He doesn’t even seem to come from singapore but yeah partner along with me as well uh and i have to say that was a big mistake a huge mistake um because she’s she’s been really looking forward to this trip right and especially over the last couple of weeks he’s been saying things like Two weeks can we go to singapore one week we go to singapore five days to go four days to go and i’m like could you could you please not do that because what i’m hearing right is five days you only have five days to finish your talk four days Three days you’re still not ready are you for the worst project manager ever just like taunting me and how unprepared i am but then she’s brilliant like she knows how to she knows how to put up with me because because i stress right i stress pretty easily i stress about Things that aren’t really problems i stress about things that are really nothing to do with me and someone posted this picture on twitter last week he’s holding a macbook between two above fingers i have not slept since i saw this picture i i stress about code like this right um firstly because There’s no semicolons giving you cheer if you use semicolons in javascript yes good to hear the rest of you are monsters but that’s not the main thing that stresses me out it’s because it’s adding stuff to the dom and then hiding it like presumably to show it sometime later like on Something and that stresses me out because it’s like can we be sure that the user’s not going to see like a flash of that element before it’s hidden and i’ve never been able to recreate this problem i’ve never seen it happen but i you never know when it comes to Race i don’t even know what i was about to do before i started the recording i i ran around a little bit and i seemed to i think i was like searching sand and i then like before the recording i placed all the things that’s why i decided to farm it again But i don’t know where where i even needed it for that looks cool um such such a random bridge um i guess i should uh search the uh ball oh here’s the border i found it that was easy okay yeah i did that here like here i left in the last Recording i think it wasn’t a recording i used to live stream where back then it’s like i don’t i have like actually no clue when the last time was i played here but looks like nobody filled up the thing yet which is uh wood so looks good to me So i’d always just swap those lines around you know just so i can get some sleep but really there’s no race condition here because the timing of running code and rendering is all it’s all tightly defined and mostly deterministic and that is thanks to The event loop and if i do a half decent job in the next 30 or so minutes you’ll know why things run in the order they do and i don’t know it might even make sense but there’s no promises there so web pages have a thing that we tend to call the Main thread here’s the main thread we call it the main thread because loads of stuff happens here it’s where javascript happens it’s where rendering happens it’s where the dom lives and this means that the bulk of your stuff on the web has a deterministic order you don’t get Multiple bits of code running at the same time like trying to edit the same dom and giving you a world of horrible race conditions but it does mean that if something on the main thread takes a long time and by a long time i mean like 200 milliseconds that’s a long Time in terms of user interaction then it becomes really noticeable because it’s blocked loads of other things like it blocks rendering blocks interaction and i think it’s difficult for us to think in this way because as humans we are extremely multi-threaded like i can stand here i can wave one Hand i can stand on one leg i can wave the other leg and all the time i’m speaking i’m breathing and processing audio and visual information as humans we don’t really have a main thread we don’t really have things that block unrelated things i mean we have one and that is when We sneeze because as you begin to sneeze just stuff shuts down you know like the first thing you lose is the ability to talk uh then you pull a stupid face uh if you’re driving at this point this is where you think huh i hope no one dies Least of all me and then the human body becomes entirely single threaded like you were sneezing nothing else you can’t see hear think you can move and make noises but only in ways the sneeze wants you to you have no control over this at all and then it’s over right you essentially Wake up and you find out if your car is still on the road if you have the same number of limbs you started with the same number of passengers you started with right needless to say we don’t want to write code that is like a sneeze so although we have this This main thread thing we tend to spawn a whole series of threads like the networking stuff encoding and decoding crypto monitoring input devices but once these threads have done something that the page needs to hear about they need to sort of come back to the main thread to give it that information And it’s the event move that orchestrates all of this take set timeout for instance is it badly named yes are the arguments in the wrong order i’d say so but have you thought about how it actually works well let’s write a web standard for it because That’s what i do these days we’ll start with a set timeout method when involved must run the following steps wait ms milliseconds invoke callback done but this isn’t quite working because spec text like this this runs on the same thread as whatever invokes it and in this case it’s invoked by Javascript so this is running on the main thread so if we say 5 weights milliseconds we are waiting 5 000 milliseconds on on the main thread we’re blocking lots of other stuff so this spec is very sneezy right now so we need to change that And we do this we run the steps in parallel which is magic spec speak for get off the main thread i’ll get off this thread and run this stuff kind of at the same time there’s other stuff but we’ve created a new problem here because now we’re invoking a callback From something other than the main thread and i mean there’s no way this can really work i mean you’d end up with lots of javascript running in parallel still editing the same dom and you’d end up with all of these race conditions so what we do is this we cue a task And we queue a task to get back onto the main thread at some point and now we’re calling javascript on the thread where javascript lives so it all works and this is a core part of how the browser works so if you click the mouse like how does That get from the operating system into your javascript it queues a task when you fetch something how how do you get the response into your javascript well it cues a task and you send the message from a page to a worker once again accuse a task to do that so The first part of the event if i want to look at are task queues and this is the oldest part of the event um rather than look at the spec uh i thought it might be easier to try and visualize the event loop so here it is this is this I hope that clears up any questions you have um actually i really hope it does because i’ve based the whole talk around this one diagram so i hope it works but yeah without anything to do the event loop just spins round and round in a cpu efficient manner now This visualization is running at a fraction of a percent of real time and it’s still kind of too fast to really see what’s going on so let’s slow things down a bit when we cue a task the event loop takes a d to it so this the is in the background Of this talk there’s the screen and there’s this detail here this is where tasks happen i don’t get it so at some point the browser says oh we’ve actually player online here that’s so surprising i i really don’t know how this works i mean i’m not even live is it like People stalking the there’s not even a server browser i’m like i don’t get it like why are people joining when i’m playing them oh i’m on this side i somehow thought i’m on the other side and i somehow thought that all my bases are raided by now But that’s cool all my stuff is still here i mean we are like in the 1000 blocks uh corner from spawn so that’s like super close uh but yeah that’s what you get on a chilled anarchy server you get a chill even at spawn that’s um so nice Um i feel like i i should go lower how high am i here like at 68 um yeah maybe those people are coming like from server lists and you get ranked higher on the server list if you have like one connected player um yeah because like um usually when i check um How many players are like here not to my minecraft client but like in my tools that like monitor all the game servers i host it says zero players and it said that like forever um yeah i don’t feel like mining that thing away let me maybe build a canon that just Yeah i don’t know what is going on it’s ever broken hey i’ve got a job for you to do and eventually was like excellent okay add it to my to-do list it’s my connection look at this boy why is it so bad round to it at some point no problem done What if we do this using set timeout we cue two callbacks that we want to run after one second 1000 milliseconds well according to the spec we wrote these two algorithms go parallel each waits for a thousand milliseconds and then they need to come back Onto the main thread and they do that by queueing a task so the browser says to defend loot hey i’ve got something here that wants to do main thread work in fact i have two things and it adds each one as a separate to-do item uh in The task queue then looks like sure that’s fine i’ll get around to it so it runs the first callback i said low enough around the event do you even still know how to find those machines uh to build those machines uh and it would be pretty simple that’s all it was But it gets more complicated when we think about the render steps and this is what the browser uses to update what’s actually on the screen looks like the render steps are another detour and that involves style calculation um this is looking at all of the css that’s Going on and working out what applies to each element layout this is creating a render tree figuring out where everything is on the page um and where it’s positioned and then creating the actual pixel thing it looks good to me actual painting so at some point the Browser will say to the event loop hey you know we need to we need to update what’s on the screen an event loops like no problem i’ll get around to that next time i go around the event week now i don’t know about you but um i would consider myself an expert At coding badly but i can take very simple bits of javascript and create infinite loops out of them in places i least expect but let’s take a closer look at what happens when i do that here’s a page with a gif and some text a big button that runs an infinite Javascript loop so if i click that button everything stops the gif is stopped i can no longer select text the whole tab has kind of come to a standstill code for this is simple this is just button click while true so how do we actually visualize this Well the user clicks the button so the browser says hey event loop i’ve got a task for you event looks like yep no problem i’m on it but this task never ends it’s running javascript forever a couple of minute seconds later the browser says hey event luke Um we need to uh update that gif that was on on the page so if you could just uh render at your next earliest convenience that would be fantastic the event looks like yeah okay i’ll get round to that right after i finish this infinite loop that i’m busy doing right now Then the user tries to highlight text and that involves like hit testing involves looking at the dom to see what the text actually is so the browser says hey i’ve got a couple more items for your to-do list there the event loops like are you having a Lot like do you know how long it takes to perform an intimate loop it’s a long time you know there is a clue in the name so that is why in a while it’s rendering interaction this is a good thing in practice we look again at the code that i started With um i used to worry that this would result in a flash of content but it can’t right this script runs as part of a panel guarantees your password but in the background here’s what’s happening we do a task we go around the event loop pick up that task and we queue But as we’ve already seen right only one task can be processed at a time so when it comes to tap it can go all the way around the event but if you want to run code that has anything to do with rendering um a task is really the wrong place to Do it because a task is on the opposite side of the world to force the rendering surface as far as the event is concerned what we want to do is animation it looks like this now this box is moving faster it’s only about 3.5 times faster and that means this callback is being Called more often and that is not a good thing decide when to do this and it tries to be as efficient as possible the render sets only happens something actually if nothing’s changed it will follow like this browser tab is in the background it will never run the render settings But also the majority of screens of data are set frequency in location that’s six times seconds some streams go faster slower but 60 hertz is the most common so if we change page value like a thousand times a second it’s not going oh that happened already to me didn’t it I forgot about that you don’t get stuck here moving faster because it’s updating the position of that cost more tighter than you see more times in this display of his capable of shines also so far we’ve been using set time out of this kind of shorthand for a few attempts And it isn’t really because even though we put zero so rendering can happen between towns but you can have many even tens of thousands let’s imagine each of these is a frame that is displayed to the user so our rendering effects they happen at the start of each frame and that includes my Style calculation layout not necessarily all free every time there is no and that means that three quarters of those callbacks will wait for the kepler rendering all animation uh and they’re assuming a lot about the screen there they’re shooting the screen at 60 hertz unfortunately it was a massive hack Because it’s not designed for animation and it really shows like due to inaccuracies you can end up with drift what’s happened here is we we’re doing nodding in one then in the next frame including a slightly amount of work and that is a visual change Also if one of your tasks wins wrong you can end up moving the render steps around because it’s all really on the same thread and you’re sort of disturbing lovely routine that they have if we use request animation rate rather than it would look a lot more bigger everything is You and generally you want to respond to those as soon as possible oh no no things like timing from the network i really recommend using request automation right to batch that work together especially if you already have that you can push through it right i mean i would consider myself an Aesthetic person but i have limits like i think soda water is totally disgusting and i cannot think of a way that a human being could drink fizzy water without gagging um donald trump i am blowing the case wide open taking him straight to the fbi and it Takes me to tell you this conspiracy goes the main ingredient of air is nitrogen right but you can still die if that’s all you breathe so there’s more like that you cannot survive request animations right there’s one more detail i want to get to and many many times but this is actually Really cheap like javascript will always run to completion before rendering handles so while you’re doing this the browser just fits back and it lets you have your fun changing value and it doesn’t really think about it in terms least something that’s helped me out i had a thing right That i wanted to animate from an exposition of 1000 to 500 so i had my listener here i set the exposition to 1000 i sold it to transition and i changed the market to 500. that and then i could bring zero to 500.00 the same reason we saw before but the Parameters there’s nothing to think about it but this thing’s got one block of javascript um so we’re going to ignore that first transform value sorry okay fair enough what i’ll do then is i’m going to put this in a second animation right and now it still Animates from zero to 500 and i was like what is what is going on here i finally figured it out the user clicks on the button and that’s a task up here so the browser doesn’t think about cfs until this next step over the purple block there This is where it calculates this invest so again it totally misses the first value because it hasn’t thought about files but in between those two things and that’s why to make this work now this will validate why there it totally is the first value and it calculates the css So again it totally misses the first value because it hasn’t thought about styles but between those two things and that’s why to make this work you need to use not one but two request animation frames and now this will animate from 1000 to 500. i don’t get it incidentally there’s a quick alternative To this um you can use something like get computer style and just access one of the properties on it and this forces the browser our calculation a lot earlier than it actually would but it makes the browser take note of all the things you set up until that point was like oh Okay transform traffic um in reality the best way to deal with this uh would be the animation api the web animation is so additional probably not your fault uh you might have been misled by particular implementations because agent safari they get this very wrong they put rap around about here Most completely they put it after paint and that’s kind of annoying because it means that if the user clicks somewhere or something happens and you want to batch that work you’ve been using request animation frame edge and safari they will render before they get to your callback So the user is going to see something and that means that you’re not going to see the actual changes you make until the next frame along and that’s adding quite a significant delay to things appearing on the screen and it also makes it really difficult to batch Work together i hope this is something to fix soon there’s been activity on the bugs recently but the web standards say it should be here and that’s where it is in firefox okay that’s enough about request animation frame i want to take a look at microtasks this is probably the least Understood part of the event we could say um i strongly associate microtasks with promises but this is not where they started back in the 1990s browsers wanted to give developers a way to monitor dom changes uh in the w3c like okay we’ll sort that out for you And they gave us mutation events so this is where i can say okay i want to know when a node is inserted into the body element and fine excellent can you get a series of others but in practice this was pretty problematic like we take this bit of Code here what i’m doing is i’m adding 100 spans uh into the body element how many events would you expect to receive as a result of this one event one event for the whole operation no 100 events one for each span yes but also another 100 for this line here When the content is going into the actual span a text node is going into the span until these events bubble this single piece of code is going to land you with 200 events and because of this like relatively simple dom modifications ended up trigging triggering thousands Of events and if you were doing like a tiny bit of work in these listeners that quickly became a big bit of work and it was a performance disaster what we really wanted was a way to sort of hear about a batch of this work and similar to what we saw with styles Before we want the browser to kind of sit back let us do some stuff and then at a convenient point say ah some stuff changed here is a kind of an event or something to represent all of those changes we want to hear about it once not 200 Times and the answer became mutation observers and they created a new queue called microtasks a lot of documentation i read about microtasks suggests that it it happens like i don’t know every return of the event loop or it happens after a task or something like that and that’s kind of true There is a single place on the event where micro tasks happen but that is not where you’ll generally encounter it they also happen whenever the javascripts whenever javascript finishes executing yeah that means that the javascript stack has gone from having stuff in it to having No stuff in it and that’s where we run multiple tasks so you can end up with micros happening halfway through a task you can have happen you can have micro tasks in the render steps as part of request animation frames kind of anywhere anywhere javascript can run So that means this javascript will run to completion adding 100 spams and their contents javascript finishes executing and we get our mutation observer callback promises made use of them as well so here we cue a microtask and then log yo javascript just finished executing so we go for the microtasks and we log Hey and that means when a promised callback is executing you are guaranteed that no other javascript is midway through at the time the promise callback is right at the bottom of the stack and that’s why promises use micros but what happens if we create a loop Using mac attach a bit like we did set timeout before same demo again click the button and it blocks rendering it blocks the tap in the same way that playing while we did very different from set timeout before so promise callbacks are async fine but what does async actually mean i Mean all it means is that they happen after synchronously executing codes so that’s why we get yo before hey but just being async doesn’t mean it must yield to rendering doesn’t mean it must yield to any particular part of the ascension we’ve looked at three different cues so Far uh we need to pass queues uh animation callback hues which is where uh request animation phone callbacks happen and now we’re looking at microtasks and just to make your lives a little bit easier uh they all were processed very subtly differently uh like we’ve seen with past queues we take One item and we take one item only and if another item is queued it just goes to the end of the queue fine animation callbacks they happen until completion except ones that were queued while we were processing animation callbacks they are deferred to the next frame microtasks on the other hand they are Processed to completion including any additional eq items so if you are adding items to the queue as quickly as you’re processing them you are processing microtasks forever the event loop cannot continue until that queue has completely emptied and that is why it locks rendering sorry i get really excited about this stuff i Hope i hope other people are excited about this as i am thank you thank you thank you one person excellent you know i used to have a real job right like many of you did um this stuff like the sort of speaking the standards work the creating slides This used to be my hobby but then my hobby became my job and now i have no hobbies i’m a boring person now and i didn’t i didn’t actually notice when this happened like genuinely the only the first time i noticed is that i went for an eye test And the optician just making small talk asked and uh uh and what are your hobbies oh when did this happen like i said i stressed so i i got a bit like oh i can’t i can’t say nothing who says nothing uh so i it’s just totally true i panicked and i said I um play the piano i don’t play the piano and then i stressed even more because i thought like she was going to say oh well that’s great we don’t need to use the letters chart then here’s some sheet music can you read me the first five bars what chord is this Thankfully she didn’t uh but yeah my optician now thinks i’m a pianist it’s great i don’t go back to the opticians anymore i’m terrified of like more piano chat i don’t know how i survive in the real world right i think you’re ready for this next one occasionally i run Little javascript quizzes maybe that’s my hobby nope that’s work too never mind yes i run little javascript quizzes and this is my favorite question so i’ve got a button and on the click i resolve promise and then log something but i have two event listeners on the same element doing the same thing So if the user clicks a button what happens which order of things logs well our first listener executes great so that’s on the javascript stack q is a microtask and then we get to the next line where we log listen to one that’s the first answer Most folks agree on that bit but what next and i ran a twitter poll on this last week i’ve been speaking to you if you saw it uh most people would say the next thing log is listener two at sixty-three percent five percent of people think nan is just logged and then infinity That is not the answer but fair enough for that five percent of people but yes we got 63 and listener two is the wrong answer um this is a real gotcha with scripts um but if you thought it was listener too then you’re in very good company so don’t worry about It our listener has finished so we’ve gone from having something on the javascript stack to nothing so it is microtask time we are going to run that promise and we are going to log micro task one and there we go and then it’s time for the second listener And that works the same so the order is listener one micros one listener two micro test two but that’s if the user clicks the button what if the button is clicked using javascript oh yes it’s different for starters our script is on the stack we call click and that synchronously Dispatches the events so we start with listener one great we queue a microtask and we log listener one and now it’s microtest time no no it is not microtest time we can’t run microtasks this is where it’s different because our javascript stack is not empty button.click has not returned yet So we move on to listener two we’ll cue another microtask and now we log listener two then this is where i type versions and now our listener is done in fact all our listeners are done button.click returns our javascript stack to empties and now we can process those micro tasks And they happen in order and this has real world implications like so beware if you’re using um like prompters in this way or using if you’re using automated tests as well because automated tests if they’re clicking things on the page they’re likely to be using javascript to do it and that can Change the behavior of your code i wonder if this can be used to like detect automated bots or something i’m pretty sure right so um if someone tries to like uh act as a human and uses javascript to automate things so it’s like doing some stuff maybe in this way they can be Detected by the the order of execution right yeah cool came up when we were looking at how to add observables to the dom and how they’d integrate with promises we hit this question if we have a promise that represents the the next click of a particular link and it’s just This little bit of code here can someone use that promise and still call event docker event default promises are async so have we missed our chance to prevent the default here turns out no it’s fine it’s totally fine this works this just works unless again the user clicks the link of Some code clicks the link using javascript and this is the final puzzle of the talks is running a little bit uh to figure this out we actually need to take a look at the spec so this is a very rough description of how the spec for clicking a link works But we start by creating an event object and then for every listener we have we invoke that listener with the event object and then we take a look at how has that event object canceled flag’s been set if it’s been set then we’re not going to follow the hyperlink but if it’s unset We will follow the hyperlink when you call event.event default it sets this cancel flag on the event object so the user clicks the link that’s fine our micro tasks happen here after each callback so that’s where the javascript account empties but when we call click with javascript It’s just going to call out to our processor link click algorithm and it only returns once that algorithm is complete so the javascript stack never empties during this algorithm so our microtasks can’t happen so it hits this set free where it looks at the event object And even if you’ve got loads of promises trying to call like prevent default it’s too late it’s going to follow the hype link and then sometime later those promise callbacks happen but you’ve missed the boat you’ve missed the point where you can actually cancel that event so remember that microtasks they they You know they they ain’t quite differently depending on the child’s attack okay so that 34 minutes that was a passive brain dump of everything i know about the event move from various steps and various cues i have found that knowing this stuff like if it prevents that case where you Kind of got a bit of code that’s not doing what you want you just wrap it in a set timeout and now it kind of works sometimes because knowing this kind of helps avoid that it helps me avoid jank by getting stuff running on the correct part of the event list as well And i hope i managed to explain this stuff in a way that that is helpful to you too like i said i’m a stressful person so as a result of this i’m now going to go and collapse in a pile but you’ve been a great audience thank you very much cheers Funny dude and uh interesting talk cool so that’s it for this advertisement episode and yeah see you in the next one Video Information
This video, titled ‘Minecraft Anarchy In The Loop – JSConf.Asia’, was uploaded by ZillyGurke on 2020-07-14 13:38:50. It has garnered 17 views and 0 likes. The duration of the video is 00:48:53 or 2933 seconds.
Lasergurkenland anarchy server ip: 88.214.56.94 domain: zillyhuhn.com
Small pure vanilla minecraft server. No plugins. No admins. No rules. Chilled anarchy server with stable tps and no queue. No world resets and stable uptime. The server will stay online for at least a few years.
JSConf talks watched in this video: Jake Archibald: In The Loop – JSConf.Asia https://www.youtube.com/watch?v=cCOL7MC4Pl0