Joe Biden now has a career in public office dating back over 44 years that's close to double my age. Throughout that entire time, he's had the nickname middle class Joe and is often referred to himself as one of the poorest members of congress. These days he's definitely not the poorest member of congress with multiple real estate holdings like a few in Delaware and living in lavish home throughout the years, which we'll check out in this video. In these videos we don't reveal any addresses and even though I've done a house tour of my own place these do not show up at any private residences because it's not safe for anyone. Joe Biden comes from scrappy roots he was born in Scranton, Pennsylvania to a father that suffered a series of financial setbacks and for a short time there at least Joe wasn't any different. According to the Wall Street Journal, the reason why Biden was so often at the bottom of the wealth ladder among his other colleagues in the senate had a lot to do with his life long obsession for real estate. He wrote in his autobiography promises to keep, even as a kid in high school I'd been seduced by real estate. As a youngster in his 20s, Biden began buying up homes especially once outside of his budget, taking out multiple mortgages and receiving loans against life insurance policies. As he grew older, his net worth was often in the negatives and by 2007 he was ranked as the least wealthy senator in the US when his net worth was estimated to be less than $30,000. But today the 77 year old presidential election is far from middle class. According to a 2019 Forbes estimate, Biden and his wife Jill are now worth as much as $9 million, much of which was earned from $100,000 speaking fees and $8 million book deals that came pouring in after his vice presidency. About $4 million of his overall net worth is estimated to be wrapped up in his current real estate holdings, two homes that he owns in Delaware and today I'm going to tell you not only about them but a couple others he's lived in over the years too. How's it going guys and gals, it's Kara here for you with a brand new house tour. I noticed 95% of you watching aren't subscribed so hit that subscribe button and ring that bell. We post a new video daily. Today we're going to be taking a look at the homes of presidential elect Joe Biden and while we don't have a whole lot to share with you in terms of the current interiors of these homes, I've still got all the details you could want along with some juicy gossip. So if you've ever wanted to know how Joe Biden lives by the end of this video you will. As always, let me know what you think by following me on Instagram or dropping your thoughts in the comments down below. Now let's get into this video. Let's start with the Biden's main home located in Wilmington, Delaware. The house is situated to overlook a man-made lake that was created by the wealthy members of the DuPont family. Local real estate agents called this area one of the most expensive in the state and it's known as Chateau Country thanks in large part to a group of massive colonial estates that were built in the area also by the DuPont family. Joe and Jill first purchased the four acres of land that this home sits on back in 1996 for $350,000. Soon after they built a 6,850 square foot home on the premises which is now estimated to be worth somewhere in the $1 million to $2 million range. During his vice presidency was reported that Joe rented out the cottage located in the property to the Secret Service for 220 a month. I don't know how smart it is to make the people protecting you pay for the opportunity to do so but one look at his bank account tells us it clearly worked out for him. A few years back when Joe's son Bo was valiantly fighting against brain cancer Joe considered selling this home to help pay for the treatment but he was discouraged from doing so by a pretty surprising source. President Barack Obama. President Obama offered to lend him the money instead. The Bidens are reportedly seen around town here a whole bunch spending time at the local grocery store Jansons Market which is only a 5 minute drive from their home. They also attend the St. Joseph on the Brandywine Roman Catholic Church nearby. Before we move on to Biden's vacation home I thought we take a quick look at Joe's former home located in the neighborhood of Greensville, Delaware. That recently came back to bite the president elect a little bit. As you can see the Trump family called this estate into question during the most recent election cycle questioning how old middle class Joe could afford such a nice estate but here's the thing he doesn't own it at least not anymore. Back in 1974 Joe was a very young senator and a recent widower when he purchased this former DuPont mansion for $185,000. At the time he nicknamed the home this station and it became his campaign headquarters for his first presidential run in 1988. Joe spent over two decades renovating the space and by the end the home featured five bedrooms 2.5 baths and over 10,000 square feet of living space. After staying here for close to 20 years Joe sold this home back in 1996 for $1.2 million a substantial gain over what he paid for it. Today estimates suggest that the home is worth as much as $1.7 million.  Next up is a look at Joe's vacation home located in Rehoboth Beach, Delaware. In the summer of 2017 Joe was coming off of eight years as the vice commander in chief and he must have been looking for a little R&R because he and his wife Jill settled on this home on the Delaware shore scooping it up for $2.7 million. This beautiful 4,786 square foot beach house overlooks Cape Henlepen State Park and is just a couple blocks from the beach. It features three stories, six bedrooms, 5.5 baths, expansive porches, views of the Atlantic Ocean and a backyard built for entertaining including an outdoor kitchen, barbecue and fireplace to impress all those Washington socialites that Joe was close with. After buying this home Joe said in a statement throughout our careers Jill and I have dreamed of being able to buy a place at the beach at home where we can bring the whole family. We feel very lucky that we're now able to make that happen and are looking forward to spending time with our family in the place that matters most to us in the world. For those of you paying attention 2017 is the same year that Biden's net worth catapulted upwards thanks to the speaking arrangements and book deals. So in a very real way I think this home was a gift from Joe to Joe. When you're running for the most public office in all the land people are gonna dig up a whole lot about your past. One of the homes that middle class Joe was associated with owning was this rental home located McLean, Virginia. And actuality the Bidens only rented this home between 2017 and 2019 hanged $20,000 per month for a home that's estimated to be worth somewhere in the $4 million range after moving out of the vice presidential residence at the Naval Observatory at the end of his term. This upscale neighborhood in Virginia is practically a who's who of senators, Supreme Court justices and Washington diplomats while staying here. Joe lived in a Georgian style house which he rented from venture capitalist Mark Ene who previously purchased the home from Alexander Hagg, the secretary of state during the Reagan administration. Sprawled out at over 12,000 square feet. This five bedroom beauty has its own gym, sauna, Florida ceiling windows and a driveway that's big enough for nearly 20 cars. Despite how nice it is in 2019 preparation for his upcoming presidential bid, Joe and his wife moved out of this home to focus on the campaign. All right guys, I think we'll bring this house tour to an end right there. What did you guys think about Joe Biden's homes? Which one of his many different paths would you prefer to stay at? Give me his beach house in Delaware and I'd be good to go. Let me know what you guys thought in the comments down below. Don't forget to follow me on Instagram and I'll catch you all in the next video. Bye.


Okay, very good morning. I hope you're doing well Gonna go through a couple of different things first of all which you can see to the chart to the side of me Stocks worldwide posting their first back-to-back gains in more than a month quite incredible So just having two days of going up in the equity market globally has been an anomaly of late But yesterday was one of those days obviously we can touch upon now the kind of more Concrete the confirmation at least of the Senate for the US Stimulus package that now goes to the house, but it's going to be kind of fast-tracked from here Generally speaking so now that's now into the system the question of course comes Well, where do we go now? Do we now start to see that price still and it's almost like that that? Positivity is over or do we continue to push higher and I guess these are some of the things that we can discuss as well as The jobless claims a lot of people will be talking about that later Also some virus updates and so on but before I begin don't forget if you are watching this on YouTube to subscribe to the channel It is my birthday today So if you want to give me a treat for my birthday hit that subscribe button And we're all good If you're if you're lucky, we might send you out one of these I've got a bit of of the merch going on the Amplify t-shirt today. So Yeah, let's get this let's get the show on the road So as you can see here then, you know from the the chart back-to-back gains What does that look like from a broader context then selling us up for the session this morning? Well things are relatively I guess calm but a little bit of profit-taking perhaps in the equity space given what we've just said the Dow futures down about 340 the taxes down just over 250 at the moment So t-notes up about eight ticks. You can see here in the bottom right-hand side And then gold gold if anything just backing off slightly from some of the longer-term levels We're going to have a look at some of these charts technically as in terms of the last part of my delivery So I won't touch too much on those at the moment But FX markets the Dixie's down the touch Having seen some weakness Towards the back end of yesterday. So we're down two tents there. So both pairs up Or be a cable relatively flat this morning. Don't forget as well UK data. I think it's because of the lock the lockdown issues but also some of the Ability for the Bank of England to try and counteract this leaking of data and things like that as it goes under review Given some of the things and difficulties they've had in recent months So UK economic data continues to come out early 7 a.m. We had retail sales But it was all backward-looking numbers. So it's not really anything too much to to worry about quite quite honestly So let's go straight into some headlines and let's start then with The Senate what exactly have they done? Well, they passed a historic two trillion Dollar virus rescue package and as I say the financial Crisis package was about 800 billion. So this is far exceeds that one It equates to about 9.5 percent of us GDP if that helps give it some context the package includes Injection of loans tax breaks direct payments for major corporations individual taxpayers So it's very expansive very far-reaching as we said yesterday much of a similar vein to what we had in the UK We've seen in other places So I don't think this is really new information the confirmation of this going through the Senate I wouldn't be expecting that to be like the Ignition then of another upward move. I think we saw that two days ago That was when we had that bigger stock market rally Since 1933 in the Dow and 12 years in the S&P. So it's kind of done in that respect Which does put us put us at quite interesting I guess juncture now for equity markets from whether or not now we start to see a renewed kind of push on the Downside or not a few things though that I thought was quite interesting There are a few people I've seen have mentioned and that is the actually over the course of the beginning of this week So Monday Tuesday Wednesday, generally training volumes Have been relatively low And some would say then you know when we've seen these massive bouts of volatility Obviously it can act as a bit of a trigger point then for real flushing markets You get these our Algorithmic systems also hitting the moves of volume typically is quite high on those days And you can see that period really of mid-march volume really peaked when we were seeing these big Multi swings remember the Dow Since mid-march up until really the end of last week was seeing an average price increment percentage wise about 7% So these are huge moves But that has dropped quite considerably and if anything you know Although we did see we're still seeing some pretty sizable moves in the equity market generally it feels a lot more Let's say smooth in terms of some of the price movement than what we've been seeing of late The other thing as well as the volatility Kind of indexes so the VIX Whether this is looking at the Eurostocks 50 or if you're looking at the more brook broader benchmark the kind of S&P VIX index but generally speaking still elevated but off the initial highs and where we were which were Way above the global financial crisis that we have pulled back now to kind of the sovereign crisis level if that makes you feel That is better so still very high But again volatility decreasing volume generally traded levels decreasing perhaps the general Lockdowns that we're now seeing in mainland Europe in London I know some people have said the FX markets that has is having Implications for some of the traded volume and therefore some of the subsequent movement as well So perhaps I might explain it But a couple of these you could interpret potentially as signals you probably saw The hedge fund manager Bill Ackman of Pershing Square He was loading up and and on his portfolio of his long-only positions now Just looking to rearm and build up more long positions and some of his equity holdings. There's been some other Portfolio manager saying similar type things So I guess these all could be if you're more of a bullish mindset some good signals to be seeing In order for trying to ascertain whether we've hit a bottom or not for me. I'm not quite convinced at this point I do think that there's a potential for more downside because in respect of all these measures And particularly those that we've seen from governments now from the US I mean there's not a lot more now the US can do kind of like the UK They've now played that big they fired that big bazooka the same way of which the ECB The Bank of England and the Federal Reserve have done so now it's down to now the development of the virus I think which carries the key as to whether or not We have already found a bottom or we're going to get another retest at those levels And so prudent of course to have an update on the the virus situation We're now a total confirmed cases 472,000 deaths just north of 21,000 I guess when these countries on the left the ones that continue to be the most Underwatch would be Italy 75,000 cases, but deaths now in Italy at 7,500 so more than double that of mainland China US is going to leapfrog them though very quickly Would not be a surprise to see that in the next 24 hours 48 hours I would expect Spain also is being a key area as well, which is growing quite considerably in terms of its death rate The UK is still tracking just just shy of 10,000 for the moment. So if you're looking at that from a trajectory point of view from the rate of number of cumulative deaths New York probably still one of the steepest and that's probably one of the most worrying Given then the US in my mind still has We're still so early in the cycle and to make that have a bit more sense This was a good graphic that I saw from JP Morgan analysts yesterday and this is this is a Simplistic version of just the distributions in order to plot roughly where we are in terms of doing the development of the virus But there's there's two important things here for me And this again is what I think will determine whether or not we've hit a bottom or not in markets and that is The US and the UK and if you actually look at some of these other European countries like Spain for example We're still really in the early development or acceleration phase at this point in time And I would agree with this graphics probably a day or two out of date I'd say probably all of these have shifted slightly Further along the curve But the idea here is being that people like China are way beyond that at the moment as we've discussed at the beginning of the Week they're looking to gradually reopen Generally the infrastructure particularly in places like Wuhan the heart has hit given the origination of the virus in that area And then a full opening if you like on the 8th of April But that's the important point on to but let's finish one one is you know things are going to get a lot worse And at this point yes We have tried to get ahead of that hence the reason why you've got a two trillion dollar rescue package already put Into play because we know it's going to be bad This is very important for I think the reaction the markets are going to have with jobless Quite frankly. I don't think it's important. It is going to be bad We know that so by definition And I don't think it's going to come as a shock And so I think it's potential to move markets might be fairly limited in my opinion. So Here I think these numbers are going to get Drastically worse and as I said the US I feel it's only matter of time. It's almost inevitable They will have to adopt similar type measures to what we've just deployed in the UK this week Which is much more onerous rules more strict about home or being at home in self-containment to stop the stop the spread So that's part one part two is this other part which is down here then the recovery phase Now the recovery phase the reason the interesting thing here is if we go back to here You can see well, let me let me scroll It's probably a better one to look at would be countries. So rather than cities. We're looking here now You've got a lot of the far east nations. So Japan South Korea But there's a few things here that people have been mentioning JP were saying about the recent Infection spike has actually occurred in Hong Kong and Singapore Now suggest as long as the global infection curve is developing Premature relaxation of heightened community risk awareness could set off a rebound of Controlled infection curve or a second wave, you know What if you see this wave here, which is what we're generally living through globally at the moment But as when China reopened that's what we're just suggesting here with Hong Kong in Singapore And you start to see another another renewed spike in cases and deaths Do we then have a secondary more flatter wave perhaps as another round goes through that? for me would be a massive negative for markets because then you know governments and central banks have just got to go even further at that point and Yeah, the question marks on how much, you know, it's kind of like every time you do You fire your bazooka your bazooka becomes a little less effective in terms of trying to manage market Prices because we get accustomed to it in that sense as market participants So they're kind of the two things I'm watching here on this curve one the acceleration Phase particularly in the number of these mainland European UK and particularly the US and then two Do we see a secondary Wave of infections if there's a premature relaxation of the rules that have been Put into place in order to delay and contain this virus in these other areas that are further down the curve So that for me is going to be particularly key. I think All right Quick look at some other things. This is some UK data did come out earlier this morning Was UK retail sales? But honestly, it doesn't even warrant me talking about to be quite frank because this is February data And the virus in terms of its impact in the UK hasn't really started to pick up until The middle of March and so this data really is redundant But one thing we do have later To my understanding according to the Bank of England press office the Bank of England rate decision is still going ahead today as per normal I would Anticipate though. It's going to be a non-event in the fact that we've already seen them have their inter meeting Decision anyway, so we know what the situation is in that respect. So we'll see how that plays out I'll update you more as we get closer to that event Otherwise Having a quick look at the US session. Well, let's just check mainland Europe You've got the well, there's nothing really too much easy the economic bill is in money suppliers I'm gonna be market moving so going to the US session you get the GDP Numbers for Q4 remember though, you know, we're in the end of March now So these Q4 numbers are very dated and the market is much more obsessed now about forward-looking Remember, even if Q4 GDP comes out this afternoon in the US unrevised at 2.1% That means nothing because Q2 potentially could be a negative 30% So hence the reason why these old data points particularly backward-looking are really quite irrelevant at this point in time The one load it probably is going to draw a lot of attention as this one the initial jobless claims You can see here on investing comm is expected to be a one million reading. This was a graphic that I saw Last night, you might have seen me tweet it This was looking at a couple of just a selection of Wall Street banks and their expectation Generally of what the initial unemployment claims and projections are for today Now estimates range as you can see here from just sub one million up to four million According to city for the week ended March 21st The low end of this range so even if I was to take UBS that would be more than three fold increase from last week's number Just to give you a guide The number of states specifically citing COVID-19 related layoffs Is why these estimates are so high and they've already been quite explicit in that it's going to impact the numbers Many states reported increased layoffs in service related industries as you would imagine Accommodation food services specifically as well as transportation the warehouse industries these types of things The two most recent peaks in jobless claims that we've had as some context in 1982 and 2008 the financial crisis Were much more gradual Trying to recall the number in my head. I think I was looking at it yesterday There was more like seeing half a million clips in terms of the jobless change when it came to the financial crisis Because remember at that point it was companies gradually going kind of going under going bankrupt So it meant that there was these gradual waves of unemployed whereas with a virus. It's Contain and delay everyone must work from home Everyone the every small medium business needs to make an immediate decision about their economic future remember The scary time was just a week ago. You didn't know what the government were going to do So that uncertainty then could have been a trigger for these small businesses Who can't afford then to take that risk and have to cut their Their staff and have quite a large layoffs across the board. So hence the reason why this is very different This is going to be a much more elevated number as you can see city on the top end four million GS as we discussed on Monday two and a quarter million UBS a little bit more pessimistic with the figure Well, I shouldn't say pessimistic. It's probably the wrong word a little bit more low ball with their number 860 But as I said in summary I mean would I look at this figure and it's kind of drama and it's kind of like a non-farm parallel release We all wait for this figure Yes, it's going to be interesting. Yes, obviously it is a reality of the situation these are factual layoffs, but in terms of then adding to this jobless claims, but At the end of the day, I think it's been so well telegraphed and talked about I don't think now four million I mean four million is toppy, but a number in the millions I don't think it's as surprising perhaps as what it could have been that's what I mean If the number is let's say north of four million I guess then it could add some additional weight to the just general precarious nature of markets from a sentiment point of view at this point in time And perhaps that could trigger a bit of a move lower inequities and a bit of a flight to quality bit Perhaps because that would suggest that things are actually the worst case scenario so to speak Let's have a quick look at a couple of charts before I do just a quick word Andy did email me yesterday So feel free to follow and message me on Twitter if you ever have any questions or if you're watching this on YouTube Just leave a comment or a question. I'll always reply throughout the day But I got asked about can Trump Cancell the US election. So this is why I found that the short answer is no He can't under the US Constitution amendment 20 Trump and vice president Mike Pence cannot stay in office past their allotted four-year term without being re-elected If the election does not happen for any reason constitutional rules of succession kick in so One thing to be aware of though Obviously just because it hasn't happened before and just because Constitution has its rules now That doesn't mean that cannot change though an old antiquated law dating back to basically post wartime in 1948 whereby you could have a different Interpretation of the text that was used that could move the date a little from my understanding of what I've read back a little bit I a couple of weeks, but probably you wouldn't be able to go any further than that So if there were a delay probably a very short one and then the election wouldn't actually need to take place So again much is legal text. It's all about One's proof of into how you interpret certain terminology that's used in some of these old Old laws. So yeah, I hope to answer your question. I think the answer is no I can see why you you would ask that question though Given the virus and does he need to delay it in order to get a bit more of an economic recovery up on the way So he's got more of a chance, but to be quite honest I think he's gonna be able to do what needs to be done to spin a bad situation in his favor anyway So I don't think that's gonna happen in terms of I think the election will still go ahead All things being equal at this point. All right, let's have a quick look at some charts. I Just saw the S&P 500 was flashing Session lows This was a chart I had marked up from yesterday You might have seen those I did tweet a few few charts yesterday Don't forget to check out Sam is still sharing all his charts via his Twitter account while he is Not doing the briefings with me for the moment. So here obviously a couple of markups You got the Fed the initial volatility we saw in the Fed announcement Back at the beginning of the week on Monday, then you've got the US stimulus rally So remember the stimulus rally came two days ago So this is just kind of it's almost like buying the rumor sell the fact type price action now that we've seen Because yesterday we peaked we got up to that level which was the hide that you can see here from going back to the 17th and then we just came Back quite aggressively really into the late US session yesterday before we then had a little pop perhaps Just going into the beginning of the Asian session But again under a little bit of pressure this morning that does bring into context perhaps quite an interesting area If I just put my lips on so if we come back down, you've got the S1 level here You've got that double bottom that you can see from yesterday's price activity You can see a bit of resistance there on the pride day on Tuesday and the Fed blip high as well So if we did remain heavy quite a big area of support there to keep an eye on now that we're below Where we had a mark up at around 2448 30 Potentially that could be a downside level to target today if we were going to be Moving any lower? Otherwise a quick look in some other markets. I was looking at WTI crude oil last night and We're pretty much locked in a range bound activity at the moment It's been particularly quiet from the likes of Russia and Saudi and so on so at the moment Respecting this range, you know, and I continue to play that accordingly Unless something really meaningful develops now that meaningful development could be either a comment out of Russia or Saudi or It could be then let's say Joplus comes in at five million that acts as then a kind of ignition for price movement downward in Inequities they start to break some key technical levels. I'd expect then that to also Start to feed through into the the Crude market and just add a little bit of further weight as people become more bearish again about the future prospects for the economy Despite the stimulus and then you'd be looking for perhaps a break We come back up to the level and then look to then play the market back down See perhaps you have to target here at that 23rd low and then you can keep the Second part of the position on looking to target down at these levels here So one Two if that was to materialize again on the upside though similar case really, but just playing the other way So just keeping an eye for this rain top end of the range that we've traded on the week Any break above there? I'd probably be looking then up at around the twenty six dollar handle You can see that that comes in within a 10 cent range of that previous high That we had printed on the 20th just here So pretty much just watching the range for oil for the moment It has been in a bit of a phase of consolidation so far this week for gold markets Yeah, really interesting actually for gold because we've kind of got up to that high yesterday You got a quite a defined clear resistance level here psychologically On the the 1700 in the futures. You can see we ran up to it on Tuesday. We had a retest of it Later on in that session right at the US close and then we've kind of come south ever since that point I was just looking here on a slightly longer time frame. This is a 90 minute So that double top that we were just referring to here. I mean, that's your 1700 and you can see it It is a big level we go back to the beginning of March had a little breakthrough but failed to close above it and Same thing happening again this week And so that continues to be a key level but as we've continued to remain quite heavy It's quite interesting to see we've had a bit of a bounce after the initial test that was seen in what the overnight session and If we come back down to around that 16 12 10 level you can see I've got it marked up here those highs That we previously the market has responded to around a similar price point could be quite interesting And again, if that does start to break down If gold let's say if we have a bit more risk on if equities do start living on the on the upside Then perhaps then we could break through that and see a bit of an extension through to 1600 as a target You've got 1605 as well the s1 before we would get to that point again Any reversal though if if we've talked about those other markets where equities will coming under pressure perhaps if that was to happen That again looking for the market to respond and move back higher in this type of fashion and for it to act now that we've Come down quite aggressively about 1890 dollars for it to act as a bit of a safe haven short term again Just on the intraday basis just given now that it's relatively low comparative to the price action of the last 12 hours in that sense Last thing I'll look at is the pound again. I was just I was having a Chat with a few people online last night Of which I'll show you in a second, but the pounds main is quite buoyant this morning. We've managed to Break you can see the trend line just from some of the near-term price activity that we've had Also then taking out the highs that were seen from the overnight Asia-Pacific session and also from yesterday Evening that's now helping price just continue to edge higher and keeping eye here. You've got the Weekly high coming in at just ahead of the 120 handle now up here is really quite important and What I mean by this is this level here is key because if you start putting on a weekly This is now looking at hopefully you can see my annotations on this chart This is looking at a much longer term Picture of cable here. We start to bring in the e referendum You can see on the left-hand side all the way through the journey of cable if you like nails that 120 was massive You remember me look at the if I just move this so you can make it a bit more clear You know the flushing prices that we had At the beginning of March where it wasn't even that long ago two weeks ago or so as soon as we broke 120 It came crashing down quite quickly then 116 soon became 114 66 the low in the futures, but you can see this sharp recovery that we've had we retested that Got rejected. We've seen a continuation of the bounce particularly with some of the dollar Movement of the weakness on the back of some of the Fed move So here cables at a real key point and where we close today could be quite pivotal if we close above that 120 Does it remain a little bit more bullish? I guess you know sounds your man for making those types of calls from a technical perspective But yeah, that's something that's going to be really interesting I think that's a really big level coming up here around that 120 You got the previous high as I said there at 91 as well in the sterling futures So it definitely would be keeping an eye on that for sure All right One of the things I have been saying is that yeah I was doing a webinar last night and the webinar I was doing if you ever did want to join is On our amplify now, so this is more for the guys who perhaps are watching this on YouTube You've never really you're quite new to the channel So as well as having a small proprietary trading arm amplify, we also have a Training program. There's two different forms. There's one that's like an on-demand Program, which is amplify now, which I'm showing you here So just to quickly run you through this is it works on a subscription monthly service But basically what it is is we've put together Everything that you would need to know To understand financial markets better This for us is the kind of key foundation that any trader would need to have in order to be able to Understand markets correctly. So here we've got kind of chapters where each one of these are lessons But their videos predominantly among 95% of the videos and there's about 75 of them in total From peers the head of trading or from me and you can see here economics 101 So we explain how macroeconomics works how monetary policy works I look at the Fed in great detail for half an hour in the video what you need to look for How do they use their language and things like that? So there's economics equity markets to explain the forex markets the bond market commodity markets So I talk about things like geopolitics or China Supply and demand law these types of things technical analysis, of course trading the news psychology You know, it's very much in depth and actually the other cool thing about this is that every Wednesday night I get to hold a webinar just for the members of this who are online. So whilst they go through this this course content and They also get a level 4 diploma and an accredited diploma So professional qualification they get to improve and enhance their knowledge particularly in the fundamentals But it we also cover risk management trade execution technical analysis as well So check that out. I'll put the link to that into the description of the video for anyone interested. All right. Well, that's it Gonna leave you and I'll See you online any questions though. Just feel free to to leave me a comment. All right guys. Have a good day


Hello everyone, thanks to join today's session and hope you all have a great holiday in Kukong. My name is Ken, I'm from Dark Cloud based in Shanghai, China, and... Hello. Hi, my name is Aldo. I'm from Google in Canada. And together we, with Kante and multiple other contributors, we have built this queue system that we're going to present to you now. Yeah, so today we'd like to talk a bit about building a batch system in Cloud with a queue. So before we talk about the queue, I think it was needed to mention a bit about something like what's the job. It may be a little funny here to talk about this in batch today, but just in case we have some newcomers and who are interested. So what's the job? We think it has several points here, like job will run to completion. So different from the long-running workloads like the deployments, step-offsets, they will restart the port when they fall into failures. But jobs will run to completion. And usually for batch jobs it runs with a group of parts. They may run independently or collaboratively. For example, like the index job, they will run with partition index in parallel. And for like the MPI job, they will have the launcher and the worker who will communicate with each other. So also jobs are flexible. So you can run in different time at different locations. And also they are compatible with a variety of resources. Let's take the time for example. So let's say we have some like latency in sensitive workloads. So we can deploy them together with sensitive traffic, sensitive service. So when we hit a sudden spike, then the in sensitive workloads will be implemented. So that's what we call a job. And the next question. So why job query? I think the answer is easy to answer because resources are limited. So like in prem, we have static cloud clusters. So if we want to run more jobs in parallel, we may have to jump to the cloud for so-called affinity resources. But usually the cloud can not grow as big as we want. Maybe because we may like account for the discounts in cloud. And also the Kubernetes before the cluster has a scalability limit like with 5,000 nodes. And also besides the limited resources, we may have jobs with different priorities. So the higher ones maybe have more chance to run than the lower ones. So job query can help us there. Okay, back to the key point today. So what is Q? In one word, Q is the Kubernetes native job query. So it can help us to manage the resource quarter in multi-tenants with a boundary and pre-ambition between different tenants. Also it supports resource fungibility in heterogeneous clusters. The resource fungibility means we can define a set of resources for the job and they will follow through policy. Yes, about the support for Q. Actually, we support Kubernetes native job in the first place. And in the last list, we support the Kubeflow MPI job. We did a lot to implement this like we implement the suspend semantics in Kubeflow MPI job. With the experience of the MPI job, we believe it will be easier to integrate with Q if we can provide like a control library for scaffold. So now you can just, if you want to build your own control, you can just implement the interface which shapes the behaviors of the job. Yeah, we are looking for to collaborate with more communities. And exciting news is from the Telton cloud native CR32 who is also searching for the job query solution and we hope we can do something. Then we'll talk a bit about the relationship between the Q and Kubernetes. So there may be some question like we do have some projects under the CNCF who also focus on the job query. So what do we want to incubate the Q again? I think the most difference here is about the start point. So Q is focused on the separation of consoles with the different Kubernetes components, especially with the Kube schedule. So for Kube schedule, it will focus on the post-scheduling. But however, the Q will focus on a more high level workload like a job. So for functional days, Q will not overlap with these components. And yes, Q is compatible with other Kubernetes components. So like, you know, the cluster auto scalar, which plays an important role in batch processing. As a result, so Q has close relationships with other Kubernetes 6, like the 6 scheduling, 6 apps. And we are now under the governance of the batch working group. So if you are interested and don't be hasty to submit to your ideas there. Okay, so let's go through how Q works inside the Kubernetes cluster. Actually, in Q, we have different responsibilities for different roles. So like for batch admin, which behaves like the control plan. So it can create different tenants and set the resource usage limits for different tenants. But for batch users, they can only submit to the job, run the job. So let's, from the first step, the batch admin may create the QQ APIs. And we assume that with these APIs applied, we have built up a batch system. Since the batch user will submit the jobs with the level name pointing to the Q, the real Q, yeah. One thing I want to highlight here is about the suspend field. So whatever the job is suspend or not when submitting, if it's under the control of Q, it will be suspended. Then the Q will try to admit the job based on the like the priorities, like the quotas. And if the job fits, the Q will inject scheduling directives like the node affinity. And also yes, unsuspend the job. Then we will go through the normal Kubernetes flow like job control. We will watch the suspended job and create the pause and the schedule will try to schedule all the pause. And if there is not enough resource in the cluster, the cluster auto-scaler we are getting on board. Yes. And then I will hand over to Eldor for the API path and several user cases. So next I'm going to explain some use cases, some close to real world use cases that you can enable through Q. So for that, we need to understand a little bit about the APIs that we use. As we mentioned earlier, we look at two types of users, the batch administrator and the end user, the researchers, et cetera. So let me start with the APIs that researchers kind of have a view of. So most importantly, a researcher will just use the job API. That's traditionally the V1 job API, but it could be others like MPI job, Qflow API, TensorFlow, et cetera. So that's the primary API that the user will send. The user just writes a regular job, a regular Kubernetes job. And we will see that there is a label here, a special label that Q understands, which has the name of the Q. So and then this Q is an object that the end user observes is able to list, can see which Qs are available to them. Because they don't really need to create it or interact with it. And additionally, we Q manages some metadata for the job about like how if it's spending, why it's spending, how many resources extra are needed, et cetera, et cetera. This is all hidden or stored in this internal API that we call workload. And this cluster Q API is the next side of the equation that I will explain, which is basically the administration point of view. So as I was saying, the other user of Q is the administrator. And they have potentially the most complicated task of setting up the cluster to enable resource sharing, et cetera. Down here, we have the nodes. So these are the nodes of the cluster. And as most Kubernetes clusters, you will have different types of nodes, right? Here I'm highlighting standard and spot. So these are different provisioning guarantees for nodes that happen to have different prices. So you could have those or you could have different models of GPUs. So all of these details about the nodes, you can abstract them using these resource-flavored objects. And then the administrator can set up quotas for each of these resources. So here we have two cluster Qs using these resources. On here on the left, you have an example of a cluster Q object. In this case, these cluster Qs governing two quotas for CPU and memory, and we have two flavors. So a flavor for standard VMs or on-demand, they are also called, and spot VMs. So and then we can define the quotas for this Q. So with that background, let's jump now into one example. So in this case, let's imagine the most simple example where we have one user for one cluster. Probably not the real world, but let's start from there. But we have actually an intergenerous cluster where we have spot VMs and on-demand, or even we have, let's say, committed discounts in this cluster. So you have the user has bought 40 CPUs of committed discount, but also they want to be able to go over their commitment if there are too many jobs. And they have a certain quota for spot. So this is the cluster Q object, right? Now, the cluster Q object is a primarily administration object. The end user facing object is the local Q, which is namespace. So this is going to be in the namespace of the user because we are only, in this example, we only have one user. That's the default namespace. And then this object points to the cluster Q for the resources. And then we have a couple of resource flavors. One resource flavor representing, in this case, the reservation discounts. And in this case, I'm using the official labels from GKE that are associated to the standard VMs. And we have another resource flavor that represents the VMs of type spot. And also I'm using here the label for that. So each of these resource flavors are associated to a set of nodes in the cluster. And on the other hand, so that's the administration side of things. And on the other side, we just have the researcher running a job. Again, it's the basic job API, the same old, except that it has this extra label that points to the queue. So now all the jobs will be queued in this queue, right? And if I still have quota, they will keep starting. If we don't have quota, they will be suspended. Now, initially, let's say I create a job and there is quota for my reservation. That's the first one that is going to be used. So queue will select the reservation flavor and it will inject this node selector into the job. This guarantees that all the pods in the job will run in the same set of VMs. You generally don't want your job to have pods in nodes of different flavors. But let's say the capacity or the quota for reservation is exhausted, then actually queue might decide to put everything in the spot flavor. And then this is the primary API in which queue communicates with the rest of the Kubernetes system. You just inject the node selector and when queue scheduler picks it up, it knows exactly in which kind of nodes it needs to be scheduled. With that, I want to... So that's the first use case. Before we talk about the next use case, I want to talk about a new feature that we introduced in the latest release, which is preemption. Preemption is basically the idea that if I have enough capacity, I can keep adding jobs, right? But if a new job comes in that has a higher priority, we should make space for it. That's one case. But in queue, there is also the possibility of sharing resources. So in this case, we have two cluster queues, one cluster queue for the team A and another cluster queue for a team B. Let's imagine they both look roughly the same. So this is the team A definition for the team A cluster queue definition. And we can see that it has an assigned quota of 40. So this is the 40 we see here. And it has a borrowing limit of 20. So it can actually borrow anything that the other cluster queue is not using up to 40 plus 20, right? 60. So let's say I'm running like this. These are all my jobs on each of the teams. And a new job comes in, it can borrow because the other team is not using the resources. So we can borrow those resources. And our job comes in, we can still borrow. But then team B wants to run a new job. Now, this team A was actually borrowing from team B, right? So we want to recover that quota for team A because that's what it belongs to them. So we can issue a preemption. So let's, we can basically evict one job from team A, which was borrowing. And then we can accept, we can admit this job from team B. So, and now we are happy, we are like respecting everybody's, everybody's quotas. But when, again, when there is no, not all the resources are used, we can still borrow resources back. So that's one case of preemption. Here we have another case of preemption where actually we have jobs with different priorities. Here, bigger number means higher priority. So we have this, all these jobs running. And then a new jobs comes in in this case from team A. We cannot really preempt jobs in team B because we would be violating their quota. But this spot, this job D has higher priority. So we can inspect which of the jobs has less priority and we can evict it. And then we can admit this job. So all of this can be handled by Q. Here in this example, I minimized this is only one resource. So we can look at things linearly. But of course, it works across CPU memory, like whatever you want to define. It can work on all those dimensions and it can work across different flavors as well. So that's preemption. And with this concept, we can implement, implement a bigger system with two, in this case, two teams that can borrow resources from each other. So how do we manifest this in the Q APIs? First, we have two teams. Sorry, we have one team, team A, which has two researchers. Each researcher has its own namespace. And the way we are defining the team is using these labels. The same label, team A, means that they are part of the same team. And then we can define a cluster queue. As you can see here, there is a namespace selector that matches these labels in the namespaces. So this is how we define that the cluster queue is for these namespaces, or in this case, this team. And we have some quota here that they can use. So they can completely share this quota. And then we can establish the local queue objects, which are the ones that are actually namespace. So these two, they match the same namespace. And we are matching here the cluster queues and the same for the other researcher. And this is one team. If we have another team here, they are maybe a smaller team. So it has a less quota, nominal quota of 40. And the crucial part of the API here is that they are part of the same cohort. When two cluster queues are part of the same cohort, it means that they can share the quota that is not being used among each other. And you can also control how much you can borrow. You might allow it to borrow everything. But you can also control, like, I don't want to borrow all the unused quota. I want to control to some level how much we can borrow. So that's it for the use cases. Yes, we just released a new version several weeks ago. It's 0.3.0, and we introduced quite a lot of features in this release. So the first part is about the API. Now we bump the API to better, and we respect the Kubernetes depletion policy. So if you are using a low one, like the alpha level, we encourage you to migrate to the latest one. And we add quite a lot of validation in the web hook, so for the robustness of the queue. And the next is about the preemption. Yes, just introduced quite a lot about it. So we now support the preemption inside a cluster queue or between different cluster queues. And in this release, we add support for the MPI job view on bad truth. And we also provide a control library for easy integrators. So if you, yes, you can refer to the template. And the next is about the option feature with for post-ready. So it acts like a sequential admission. So it means if the job will be admitted until all its previous jobs getting ready. You can enable it. It's disabled, and if you want to use it, you should disable in the flags. Because queue is sensitive to the resources, so we make it aware of the limited ranges and put overhead. And last but not least, we sense sense for all the contributors in the last release. They are from different companies, different countries, and also different communities. Much appreciate. And about our last next release, we mainly focus on the exist features like the way for post-ready and preemption. It would be nice to have some features like dynamic quota reclaiming, because now we only reclaim the jobs when the job finishes. Also, we want to add more support for the other jobs like the Ray, also jobs in Kubeflow. Yes, and if you are interested and if you can contribute to your ideas here. So I guess if someone has some interest with the project, you can visit our new website. Yes, we have a new website. And also participate in the batch working group. Also find some issues and we welcome every kind of contributions. So this is our new logo. Pretty much for today's session. Any questions? Thank you guys for the amazing presentation. I have a couple of questions about the system. First one I want to understand. So if I keep sending jobs, you say if you go back to the slide where you show the like baseline architecture from the, when the user submits a job, I think was one of the first ones. Yeah, this one. So basically here on the right side we see user which creates a job and you put it into suspended mode. So if I keep sending jobs will I eventually overload the API server. So you don't have any external storage component here or so I assume it all ends up in the city. So basically what's the limit for the system then. So can I basically overload the class with jobs in the end. Yes, so the key thing here is that we are working at the job level. So because we are suspending the job, even if your job is a parallel job of 1000 pots or even bigger, there is only one object, which is the job. So from this, that's already a starting point where we have much, much lower load on API server, because we are not, we are not allowing these pots to even be created. So that's a big starting point for the scalability. But resource, you can still use resource quotas to, you know, control, like put this failover mechanisms, not about like usage of the jobs, but about like tipping points for your cluster, because in any system you will have a tipping point, right. And you can still use Kubernetes resource quotas to define those scalability limits. And if the user exhausted that, well, they will have to retry the job creation. Okay, then next small question would be if we take airflow as an example, as a system that I can use basically for the same purpose with bits of Python code on top. I can also use airflow to do job scheduling multi across multiple different classes, but in this case I'm a limited to a single cluster. That's correct, right. But what about namespaces? Can I at least, does this work across namespaces in the cluster? We are bound to a single namespace here. If I want separate namespaces for different teams and then I want to have a cluster queues that target different namespaces as well. The queue APIs give you all the flexibility. So you can define a team to be one space namespace, or you can define a team to be a set of namespaces. That's something you can control within the APIs. So yes, it's multi multi tenant within a single cluster. And to answer the other part of your question today queue is a single cluster, but we are already thinking about multi cluster. And there is a contributor that will share some some news, some initial like design in the working group. So if you want to participate and learn more about the multi cluster plans, you can join the next working group much batch meetings. And we will have this discussion sometime soon. So I think we're out of time, but our next next pictures speakers are Richard and she why I couldn't see them. Can you raise your hand if you're here, hopefully they're there. Okay, cool.


Are you ready for a reaction here today? Are you ready for a reaction here today? Hi, welcome back to our reaction units. I'm Corbin. I'm Rev. And you can follow us on Instagram and Twitter. And you can also send us some Patreon and follow us on Facebook, Twitter, or account. And today is just dropped right now. It's on the floor. It's there. Pick it up. And it's the second trailer for, well, there was the teaser and the first trailer. Right. And I think this is another teaser, honestly, but it's called the second trailer. The second trailer teaser. But it's called The Battlefield for Scyra. Right, right? Scyra, Scyra, Scyra, Scyra. The two trailers we've seen of this have been epic. Awesome. It looks, looks fantastic. It's like a fantastic epic film that we won't, um, you know, compared to 300. Yeah. What is that? 300. What's that? What is that film? I don't believe this has subs. I don't know why. I'm assuming it's just action, but I'm sorry. Yeah, we can't help it. It's just dropped. I can't help it. People want us to get to it as soon as possible. Hopefully it is just action. Watch this will be the only one with just dialogue. With scenes. Dialogue throughout. Wow, that was great. I can now. Yeah, we don't have any subs. I'll make it. I'm leading them. What's the deal? I don't know. The other ones had subs right away. They did. Right away. Here we go. Get out of my motherland. I think, yeah, I think that's what, I think that's what it was, because I think we saw it in the other one. Yeah, I think he's, get out of my motherland. I think he says it multiple times. I'm quite disappointed in you guys for your, whoever the production company is that's putting this out. Your other ones had English subs right here. Right. Why wouldn't this one have English subs equally as right away? I, I don't know. Anyway. Sorry, but. It looks as beautiful as the other stuff. Yeah. And there's some stuff in there that looks like every single time they put it, like this is probably one of the most. It looks like, I don't want to compare it to anything because you hate it when I do that, but that's the only thing I can do here. Like, you know, like I don't want to remind you of what? Toy Story. Yes. Yeah. The visuals. No, what is the classic Civil War movie that we have here? I just can't think of it. Yeah. With Denzel Washington. Good grief. Whatever. It's one word. Well, one of those old school.  One of those old school war movies that's so pretty, but it just, it's like has extremely glorious warrior elements to it. Yeah. Like stuff obviously we don't have here in American history, right? Or even when we do movies about like other history like Spartan, but I don't remember the name of that movie. Yeah. One about Sparta. Oh, 400. No. Don't compare it to that though. I'm not. You will get crucified. I'm not. Just like I'm not comparing that other Sugi Fahler Khan character to Jack Sparrow. Don't say that. We got, we got scolded for that. I know. But I was right about that one that they, they said. We're not going to talk about that. We'll talk about it in the next trailer, but whatever. Yeah, that's right. Um, this, I'm glad we actually got, because this is the first time we actually got to see Big Beat Talk, correct? Yeah. And apparently he plays him, he was younger here. It was like a young Gandalf. Remember? Because of the other one, he was much older. No, he's been older than this one the whole time. No, he didn't look that old in this one. He didn't have any gray in this, this shot. Um, there was no gray in that beard and hair. Did you take your old man nap today? I think you need to. Well, let me see that. You should read up on napping. Discover it's not for old people. I fell asleep while reading it. Yeah. Nice. Get up here. See? He still looks old. But his hair isn't white. There's some white in there. No, no, no, no, no. He goes pure, he goes like Gandalf the Gray to Gandalf the White. In the other trailer, he's like all white. So this, is this, do you think it's gonna span? Yeah, it's time. It's released with his character. I'm sure it covers a time frame of 800 years. And I don't know what the relationship between these two is. No clue. I love that this is, this is based on a true story. Is it? Yeah. Really? It says at the beginning of the trailer. At the top line, it said based on a true story, true events. Obviously some of it's going to be exaggerated. Oh, it'll be dramatic effort. I'm sure the battle sequences will have some exaggerated effects.  But then you throw in this, um, I keep calling it on my Assassin's Creed because that's all he reminds me of. Like, is that sword he had? It was like a double, like double-sided sword that he just kept stabbing. I love the weaponry that we've seen. Remember when we first looked at that, what the blade is called, but the one that we saw for the first time? The flimsy one. Yeah, that's flappy. Yeah. Yeah. I would like to see, like, I know we've seen a couple of them. We, in fact, I think when we first saw it, we were like, Oh, look at those cheap swords they're using for that special use.  Exactly.  It's true. But no, I would, I love like seeing all that kind of, because it's, it's almost like something you're familiar with and then they throw a different element into it. Yeah. That, you know, you, I personally, I'm sure you have because and there's even a couple of moments in here that were reminiscent just because of the British outfits and stuff that looked a little bit like some of the action sequences in the Pirates of the Caribbean films. And there's some grand shots in this. Grand. Some of these shots, not to compare with anything. Look at that. Exactly. They're going down the river. Yeah. Some of these wide epic shot. It just, it looks. And then anytime they have a battle, I don't know how much of it is CGI, like how many of the extras are actually there and then how many they CGI'd in because they do do that a lot of course.  To make it look like more full. Sure. So they obviously don't have to, I don't, maybe they don't have to pay them. I don't know what the extra rates are. Oh geez. Do you see, do you see that shot? Yeah, it was a great shot. You know, the, that, that knife, what is it called? A knife. Look. Yeah. Yeah. It's got a, it's got a. One side that he's holding like this, he can stab her here, but then it also has a hook on the other end. Either way. And he just, boom, back and forth. Look at this guy. He's just watching it. Wouldn't you? He's going, he's like, oh, that's good. That's right, that's right. You teach me how to use that? Well, I like what you're doing there with that thing. Everybody else is fighting and there's carnage going all around. Dang, nice weapon. Wow. Can I have one of those? Exactly. Where'd you buy that, Amazon? This film though looks like. Looks amazing. And you know what's crazy? The day it's coming out is today war is coming out. Make a double feature film. I'm wondering as to why, because they just released a trailer last week. Double feature. Release this one. They just want to keep the buzz up because obviously you're going to have to be competing with. Yeah. Tiger and Rithic. Two of the biggest films of the year. Right. And then this is also one of the most epic, biggest films of the year, I would think. One, this is obviously regional. And the other one is Bollywood. Right. But then you, well, that comes out that same day. The Joker.   I can tell you which one. Triple feature. I'm going to tell you which one I'm going to be watching first. I'm doing a triple feature, Corbin Miles. I just can't pass up that. But then I also want to see these. It's been a long time since I've done a double feature in the same, you know where I've done two movies in one day at the movie theater, back to back like that. I might have to do a triple feature that day. It just depends on what we get here. Yeah. We'll get war. I hope we get this. I bet we get this at the same time. I bet we do. I hope so. Well, it's also a question. If there is a like a video about all the different type of weaponry, because we see so many different types of weaponry in Indian cinema, I think that'd be cool to react to. That would be really cool. No? Yeah. Because like we've seen a few of these, like the martial arts one we did, that was awesome. Even better, a few of them. Even better if somebody could get them into our hands and we could use them and like see if we can get through a video without losing an appendage. And you like that idea, don't you? We do have a lot of film studios. I know. I bet we can get our hands off, get our hands on something. You shouldn't have given me this idea.


The landscape of software development is changing. Today's users expect applications that are always on and accessible everywhere. To keep up, centralized apps are shifting to distributed cloud services, built and run by teams all around the world. With all of this complexity, software teams need a DevOps solution that enables them to become faster and more efficient while staying secure and reliable. Luckily, there's GitLab, a complete DevOps platform delivered as a single application. Get powerful collaboration capabilities like agile planning, version control and code review, multi-cloud CICD that enables you to deploy anywhere and built-in security and monitoring right out of the box. GitLab makes you fast so you can meet business demand and react to disruptions. GitLab makes you efficient, helping you improve productivity, reduce rework and work from anywhere, all while helping you build and maintain trust as you reduce vulnerabilities, streamline auditing and stay compliant. What's more, everyone can contribute to this open source application so GitLab is continuously improving. Are you ready to deliver better products faster, work more efficiently and reduce security and compliance risk? Try GitLab today!


Hi there, welcome back to my YouTube channel. This is Daniel Rossell here. I want to do another video about doing a guest interview using Zoom and then pulling that into OBS, whether you're pulling that into record in OBS, or you're going to be doing a live stream of your interview in real time using OBS, a little bit more challenging. Both can be done and once again I'm using the rather strange device, but it does work if you're just trying to play around with this. I've just set up a teddy bear here in front of my laptop and have him sitting on the other side of my home office here. So this is it. Now, before we even get into OBS, there are a couple of things that you need to do. Now, I have muted the guest slash talent because it would be creating a feedback loop. But getting the guest audio into OBS is actually pretty straightforward. So that's the one thing. Now, there are a couple of changes you need to make in Zoom before you even touch OBS. So the first you can get these in video settings. Ideally, you would be using two webcams. Now, the reason for this is that typically a webcam can't be used in two programs simultaneously. So what I would recommend doing is having a cheap ish webcam just so the guests can see you. If the guest doesn't need to actually see your webcam feed, they can just hear audio and speak to you. Some guests would be fine with that. Others really want video and keeping your best video capture gear, whether that's a webcam or a camcorder for OBS. There is no point in recording you via Zoom into OBS. That doesn't really make any sense because you're going to be losing quality in your audio feed. Now, there are two settings in the video settings that I change when I'm using Zoom for this purpose. One of these is see myself as active speaker. Now, that is enabled by default. So you can see what this feature in Zoom does is whoever is speaking gets the screen. So because I'm speaking, my teddy bear is not speaking. Therefore, I'm the active speaker. And that would be a problem because if we want it, we're going to want to use this window to record in OBS. And therefore, we're going to want to keep it on the guest. So therefore, take that setting off, and we're going to lock on to the guest. Second thing is we are going to go for now you can do hide non video participants if you're not using a webcam to just filter yourself out. You can also go for display participant names. This setting here is another one I would recommend taking off. Now, make sure before you go into OBS to either I'm going to stop the video or use a separate webcam for the reasons I explained what I'm going to do. I'm going to drag my zoom over to another screen. And I'm going to put that into full screen mode because it's going to make our job of cropping this a bit easier. Now what I'm going to do is set up my OBS for recording this, this interview. So firstly, I'm going to get myself a video capture device is new. I need to do a new new one going to call it web cam. There's myself video format going to be why you 12 and I'm just going to drag that out to fill up the canvas and put my overlay above that. So now this is let's say host, right? Now I'm going to duplicate this scene in OBS.  Now I'm not going to show an audio setup in this but it's actually quite easy. At least in Ubuntu Linux, I just need to add as a audio output capture what's coming out of zoom. So for me, I have that directed towards my default. My analog stereo. So therefore I just need to add that as a source. Now I have my microphone as a source my lab mic. I have zoom as a source. And then I just need to make sure the levels are so much okay. But that goes for any audio project. So that's fine. So I'm not going to show that. And because my teddy bear can't speak, I'm not going to be it's not there's not going to be really much to see there. And so that's me set up now for the guests side by side. Well, first thing I'm going to want to do is make my feet smaller. So let's just go to webcam here. And let's not do a real side to side or just be kind of in the corner here. And then what you'd want to do now you can do this one of two ways. Window capture in Linux is kind of buggy. Unfortunately, it doesn't ideally these windows should all be labeled beautifully. And you can see that's just not the case. I'm not going to waste this whole video going through it's just it's buggy. So what I'm doing instead for this one, if it's being finicky is I'm going to just use the screen. So I'm going to go for screen capture. I'm going to call it also zoom guest. And the screen I'm going to want is going to be this one. So just this is really worth doing this before you hit the record button. And so that you make sure everything's nicely set up and you don't have now what you can see right now is I don't want the zoom bar in this recording. So what I'm going to do here is crop all that out. I'm going to crop actually this out to and I'm going to crop is a little tick symbol here that I also don't want to the top. So now I just got my talent in inverted commas. And what he can do is just put him stretch him out to fill up the canvas. Now, obviously depending on how this is going to look, you may so and then I'm just going to edit my sources. So I'm going to be overlaid a little bit. Let's just say this much, bring myself down here. Now I realize this is completely, completely preposterous. But it does demonstrate how I set this up. Now the final configuration, the final scene is going to be guest only. So for guest only, I'm going to want to hide whoops, I'm going to want to hide my webcam and just go to guest. And that's basically good to go. We can just run the zoom interview now and toggle through these through these different scenes. And we're going to have that real time transition baked into the recording too. So that's me host guest side by side, and then finally guest only now. Of course, if you wanted to do this more beautifully, we could decorate the screens and we could have little things running along the top and the bottom. But this is basically how I did it. And the final thing I did before setting up an interview is put all these on hockey's. So firstly, the host is number, let's put that as number pad one. Host guest side by size is two. And guest only is three. And just apply those and save those. And now what this means is I can hit the record button. And I can just quickly toggle between I'm talking, talking, talking, and I want to go to the guest. We've hit keypad three want to go back to me, keypad one, and we want to do a side by side between host and guest over to keypad two. So that's it guys. How to use zoom to record in OBS. It does work well. But you need a bit of time to set everything up. I had to do a zoom interview last week. And we were going to do zoom, then switch to OBS. And I didn't get all my shortcuts configured in time, but it still worked out fairly okay. So that's what you do for audio. You need to put in the audio capture device. You need to basically take the zoom guest window, set up zoom properly, do a little bit of cropping to get everything out of the guest feed. Then you can have a guest only window and put your webcam and the guest window together for side by side. And if you do want the guest to be able to see you during the interview, then it would probably be a good idea to have two webcams set up. One of those is going to be for zoom. One of those is going to be for OBS. And then you can either record in OBS or stream from OBS. Thank you guys for watching. I'd like to get more videos from me. Feel free to subscribe to this YouTube channel.


Great, so let's talk a bit about the history of WebAssembly. So I think you've heard about it briefly in a previous talk, but just to set up what we're talking about. So the web has two general-purpose languages, JavaScript and WebAssembly. So WebAssembly was added much, much later after JavaScript. And it's an interesting story, I think. And we edited it because it does different things in JavaScript, in particular that the stuff noted on the slide here. It's a binary format, so it's much smaller, more compact. It's a compilation target, so you typically don't write it by hand. You compile to it. And it's designed to be fast from basic principles, essentially. So this talk is kind of how we came to standardize something like that, and specifically WebAssembly. Maybe the place to start is way back in 2008. So back then, suddenly JavaScript started to become fast. Before it was just an interpreted language, so it was quite slow, but all you did was write little scripts on pages, so it was fine. But in 2008 Chrome launched, so obviously that happened in with the V8. And also Firefox and Safari launched two JITs as well. So by the end of that year, there was a big speedup. And this kind of the arrow tries to show it for many, many years after this constant speedups were happening. So these were very exciting years in JavaScript space. But kind of getting back to the 2008, 2009 time frame, there was still a question of how fast will it get? It was starting to speed up. But if we want to run something like a game or a photo editor or something that requires a lot of heavy computation, will it be fast enough? I think it was very reasonable to be skeptical at that time. And maybe JavaScript won't be fast enough in it, so maybe we need something else. So one possibility of something else is Native Client, which we'll talk a bunch about now. So Native Client basically defines a safe subset of a particular CPU's code.  And this was started in 2008 at Google by Brad Chen, Benny and David Sehr. And it was quickly announced publicly and open sourced, which is great because if we want something to be part of the web, it makes sense to work on it in the open. It made a lot of quick progress in 2009, there was a research paper, and it graduated from research into a plan towards becoming a product. So this is some data on speed. The key thing is the column on the right, which shows sort of the extra overhead of running a Native Client as opposed to running the same code natively. Maybe it's a little hard to see the numbers, but anyway it's essentially in all the benchmarks it's single digit overhead. So you're running maybe 5% slower than the full possible maximum speed. So this is very, very low overhead, very, very impressive that you can do this in a safe way. And safety is really a super high priority here. I mean we just had a talk about safety and security on the web, so the timing is good. You're running content from that people are sending over the network, you don't know what it is, you have to be very careful. The Neckle had two layers of sandboxing. So one is sort of what you see in application code, that's sort of by running in a subset that you can prove is safe, that's sort of one layer of sandboxing. The other layer is you actually, all that code can do is communicate with the Neckle runtime, and all of that is in a process, again kind of mentioned in the previous talk, and that process is sandboxed as well, so you have a second layer of sandboxing. One issue that you might have been thinking about is portability, so I said it's specific to a CPU architecture, obviously that's not great because we don't want to ship just native X86 or native ARM, we need to ship something portable. You need to be able to view a website no matter what CPU you have. So of course this was not a surprise, and in 2010 portable native client was launched, so Pinnacle, and it basically replaces that sort of native machine code with something else, in this case LVM IR, LVM is a compiler, IR is the internal representation in the compiler. So you can kind of imagine that you compile the code halfway, then you ship that over the network, and then you finish the compilation on the user's machine where you know the architecture of their CPU. That's kind of the model, and on the client you finish the compilation to NACL, so same as before the same sandboxing, same safety. There was some initial controversy with Pinnacle over the use of LVM IR, because LVM IR was actually not portable, had undefined behavior, but over time these issues were fixed. Okay, something worth spending time on is the fact that NACL ran in a separate process, as already mentioned, this is great for security, but it had a large impact I think on sort of the overall, what happened with technology, because it prevented calling web APIs. You're in a separate process than JavaScript in the DOM, you can't actually just call into the normal things that JavaScript would, what you can call is a plugin API. So this was initially the NP API, the Netscape plugin API, the thing that was used by Flash and Java back in the day. Later a new plugin API was made, the Pepper plugin API, PP API, so Pepper, Salt, et cetera. And this worked, however, a criticism was that it overlaps with existing web APIs, so the web already had APIs for rendering and audio and network, and this was basically a bunch of new APIs that do similar things. Another criticism was that the APIs weren't fully specified, so there was an implementation of Pepper in Chrome and docs, but other browsers were a little bit worried whether the docs were spec enough, whether there are corner cases, whether they try to implement it, they'll run into issues. It's a little hard to say how valid those concerns are, but these are things that people were worried about at the time. Okay, so more flooded context here. So again, this is around like 2008, 2010, et cetera. This is about the time when the web is trying to move away from plugins, so people are being told, web devs are told, don't use Flash, don't use Java, just use HTML, JavaScript, et cetera. And that's good in general. For Native Client, this was sort of a problem in that it began as a plugin. Again, it used NP API or PP API. It was later integrated into the browser at which point it's not a plugin, it's just part of the Chrome platform. But I think that by running in a separate process, by having a new set of APIs that are very different than the existing web APIs, it still felt more like Flash and Java to other people. And all this had an impact on adoption of the technology. So early Knackle ran in other browsers using NP API. So the same way that Flash ran in other browsers, it just used a plugin API. But in 2011, Mozilla and Opera announced that they oppose Knackle and Pepper. And since that point, Knackle only ran in Chrome, essentially. So adoption was an issue. Still, the technology made huge, huge strides over the years. For example, in a few milestones are mentioned here in the slide. So in 2010, Unity was ported to Knackle. Unity is a massively important game engine, extremely popular. In 2011, Mono was ported, which is a sort of CLR implementation. It's also very important for games, among other things. In 2011, there was a lot of noise around Bastion and a bunch of other popular games at the time, being ported to Knackle. A big milestone is 2013, when Chrome decided that Pinnacle is safe enough and stable enough to be shipped on the web, that is to be enabled for web content to use. Until then, it was just sort of on the Chrome web store, which is very limited. And the idea was, well, we'll ship it. Web devs will use it, and then we'll show how useful the technology is, and other browsers will welcome it. That was the hope. So that launched 2013. And of course, over the years, the technology just kept getting better and better. For example, 2016 Sub-Zero was launched, as the slide says, which is basically a super-fast compiler for Pinnacle. So this kind of addresses the issue that, as I said, you kind of finish compiling the code on the user's machine if it's a very large project that can be slow. So Sub-Zero was very fast, faster than building with dash of zero. OK, so we've talked a bunch about Knackle. Meanwhile, other events were happening in a parallel world. So there's another path that involves things like SNJS and M-scripten. And this is kind of the path that I was involved in. So maybe a good place to start is 2010, where I gave up on a startup that you never heard of. And I moved to work in Favrex for Android in the US. And that was fun at Mozilla. And in my spare time, I kept tinkering with the game engine from the startup. So the startup was kind of like this game engine that could run on the web, and you would download games and stuff. And so I tinkered with the game engine for fun. It was open source, and I wanted to run on the web, because I like the web. But the question was, how? So remember, this is 2010. So Knackle was quite new. Pinnacle was just announced. It wasn't clear what the adoption would be of these technologies. So it wasn't clear what would be a good way of running a large C++ codebase on the web. So I was thinking, well, JavaScript is fast now. Let's maybe compile to JavaScript. So JavaScript has no explicit types. You just write var, and that's it. But I was thinking, when you compile C++ to JavaScript, it would maybe preserve the types that were there originally, and maybe a way to look at it is in this super simple code here. So in C++, we write x equals 10, x plus plus. Obviously, it's an integer, and it stays an integer. In JavaScript, just replace the int with a var, just kind of drop the types, and it's valid JavaScript. And you can imagine that the compiler would actually see, well, this begins as 10, begins as an integer. All the operations on it preserve the fact that it's an integer, and then it could be optimized. And it did some experiments in this area, in particular using PyPy, which is pretty good at compiling large amounts of code with no types and inferring those types. But I don't have time to get into the details. But anyway, I convinced at least myself that this could work, so I bet on JavaScript and started writing a compiler from C++ to JavaScript. And I called it MScript, and as we said, because it turned LVM IR into JavaScript. And it's kind of a Simpsons reference, the episode with Cromulant, if anyone knows. If not, you can look it up. And this was kind of a fun weekend evening side project for me, just tinkering, getting code to run. It was just fun. Around a year later, it became more than fun, became kind of part of my job. So by that time, MScript could compile quite a lot of things like Python and Doom, and kind of showed that this could work. So we're compiling to JavaScript, which we never intended as a compiler target. But it turns out you can compile stuff like C++ to it. Of course, there have been other compilers like GWT from Java, but I think this was the first for C++. So this year, I gave a talk at GS Conf EU about it, and I published a paper on the re-looper algorithm that it uses. So very, very briefly, a compiler typically has very low level view of control flow. But JavaScript, of course, has ifs and loops, so you need somehow to bridge that gap. Anyway, so I made up something that helps them. And later in the year, Mozilla basically gave me the option to join the research team and to work on this full-time, basically, as my day job. So I was super happy to say yes to that. And kind of why did they do that? I think because they understood that native code on the web matters. We want to run games, other high-performance things. There were worries about NACL like the ones that I mentioned earlier. They felt that compiling to JavaScript is just the safe option. It felt web-friendly. It uses web APIs normally. JavaScript already runs in all browsers. It doesn't need a plug-in. And of course, the belief was, well, JavaScript is just getting faster and faster. So MScripting shows this can work. And we'll just make JavaScript fast. And everything will be great. Well, it turns out not everything will be great because normal JavaScript speeders are actually not quite enough to get to native speed. The issue, of course, is that JavaScript is just in time for JIT optimizations. It's kind of unpredictable. It's not a consistent thing between browser to browser or even different versions of browsers. So in 2013, Luke Wagner, David Herman, and I made up something called AsmJS, which is a subset of JavaScript. So this is a little sample of AsmJS. If you know JavaScript and you know what this does, what might look odd are these kind of OR0s. So the OR operator in JavaScript converts both inputs to a 32-bit integer. When you do an OR with zero, it changes no bits. So writing OR0 is a very concise way to, say, turn this thing into a 32-bit integer. And therefore, when you see a function like this, the inputs are turned into integers. The output of the ad is turned into an integer. So the JavaScript VM, if it thinks about it, it can easily see that, well, we're not writing the types, but these kind of annotate the types for me, and I can optimize these as integers. And in fact, we added useAsm, kind of a convention that if the browser sees that string, it can use the AsmJS type system, which formally specified how this works. And it can do ahead of time AOT compilation if it wants to. So when it does that, it literally sees the types of every variable, and it can generate very efficient code. Here's some data from the first launch of AsmJS in Firefox. So the key thing here is to look at, so in kind of orange on the bottom in each of the three benchmarks is native, which is normalized to 1. Lower values are better. And you can see that in the blue bars is Firefox without AsmJS. It's kind of like 10, 12 times slower, 5 times slower. With AsmJS, it gets to about 2 times slower than native. So it kind of reaches half of native speed. So that's a pretty big jump using this AOT approach. It did get a bunch faster later, but to be fair, it never quite got to the speed of Knackler. But it did kind of get to the right ballpark. It did have some serious issues though. So one issue is startup speed. It's parsed because it's JavaScript. So it arrives as text in the browser. And the browser needs to parse it and figure out what to do with it. It's never going to be as fast as an actually efficient binary format. There's no way to solve this, not with something that is in JavaScript. So the benefit is being in JavaScript that it runs everywhere, but the downside is it's in text. And also, it's a hack. So it's maybe a fun hack, but it's a hack. Those or zero things are weird. If you get the slides later, there's a link there to a blog post that's very smart. So it's weird. A lot of people didn't like it. I can definitely understand why they didn't like it. But what I want to say more about on this slide is that it's sort of aside from being kind of weird, it also had serious downsides that it's a hack. So we added things like Math.iML and Math.fRound to the JavaScript language that made it a better compilation target. So those two things help with sort of low level math. And the standards bodies were happy to work with us, because this actually helps normal JavaScript, too, in some ways. But you can imagine that if we try to get closer and closer to native speed, we will eventually need more hackish things from the language which it was never designed to do. So you can imagine the standards bodies would understandably eventually not be so happy with this. This was also a problem for us writing the As-and-Just type system. So it got harder and harder to add more complicated things, because in As-and-Just, it has to run as JavaScript, because a browser might not use the As-and-Just type system. But it also has to be easy when doing AOT compilation to sort of see what it's supposed to be doing and to optimize it. So there's kind of this tension there. And for example, we added memory growth, which means that you can sort of adjust the size of memory over time. And it had this convoluted pattern. It was so complicated and annoying that we ended up getting rid of it from Firefox and we got rid of it from the spec. So the hacks had a cost. Despite that, it did do quite well for a few years. So as I think I said, it was announced in 2013. Unreal Engine was ported that year. Unreal is another very important game engine used in Fortnite today, for example. Benchmark started to take a look at As-and-JS around that time. So for example, in Octane, there was sort of a subbenchmark that used it. In 2014, the Unity game engine that we already mentioned earlier announced support for As-and-JS and M-scripten. And in 2015, two more browsers joined Firefox in doing the AOT path, so Edge and Chrome. OK, so we've talked for a while about Native Client and for a while about As-and-JS and M-scripten. And here's a kind of two separate parallel paths. We've talked about what each has done. But of course, they're not really that separate in that they competed and cooperated and interacted in various ways. So let's talk a bit more about that. Obviously, they competed. I don't really have much to say about that. They both kind of hope to be the future of Native code on the web. What I think is more interesting and maybe less obvious, and so I want to spend more time on, is there was increasing cooperation too. So in 2013, we started to have lunch, dinner, meetups between Google and Mozilla Tools. This was just a lot of fun and also helped us work together on things, get to know each other. We started to share code between the two projects. M-scripten started to adopt the pinnacle legalization passes. So it's the code in LVM that sort of handles some crucial things. We started to share a triple in LVM, sort of the definition of the target machine we compiled to. And there was also pepper.js, which basically let you compile a Native Client application using M-scripten to As-and-JS. You could take the same code base, compile it either to Native Client, well, to pinnacle at the time, or to As-and-JS. And there was more and more cooperation on the browser and VM side too. So in 2014, the VM people, that is, the people working on the JavaScript engines talked more about As-and-JS because they were each optimizing it in their own way. But they started to talk more about, hey, how should we optimize this? What's the future in this area? In particular, I want to mention Luke Wagner from Mozilla and Ben Tezer from Google that I know talked quite a lot about this. And sort of the idea of a byte code, a more proper solution, keeps coming up. So you're talking about As-and-JS and how to optimize it, but it's a natural thing to think about how to do better in this space. And in 2015, Mozilla, Google, and others met during GDC, the Game Developers Conference, to talk more about what we call at the time web asm. And the plans got increasingly concrete. And in fact, we announced WebAssembly in that year, 2015. So I think it might have been around April that we came up with the name. We found some emails that mentioned it, replacing some other names that were thrown around. And then we spent a few weeks working behind the scenes. So at this point, we had agreement between all the major browsers that were going to standardize a new thing called WebAssembly. And we sort of prepared a website and a process, et cetera. And then we launched it. That is, we announced it publicly that we're starting the process of spec-in and designing this thing. So that was in June 12. OK, so what changed in 2015? By which I mean, for many, many years, people have asked for native code on the web. Why don't browsers just ship a VM, ship a byte code, let us use whatever language we want? Why are we forced to just use JavaScript? These are very common complaints from web developers and developers in general. And I think it's a reasonable question. Why did browsers finally end up doing this at all? And why in 2015 and not earlier, why not later? So at least my theory is we've kind of mentioned this. Browsers had to optimize SNJS. It runs as JavaScript in your browser. So you're already running this, and there's so much competition on JavaScript speed, you have to run it fast. So you're very motivated to optimize SNJS and to use the SNJS AOT path, et cetera. But once you're optimizing SNJS, you realize how much of a heck it is. You see all the downsides. And you naturally want to do something better, something cleaner, a more proper solution. And there was an increase in collaboration between browsers, as I mentioned. And I think just that we were all talking together more, working together on smaller things, helped us finally get to a point where we could work together on standardizing and do a big thing. And I think that kind of shows in WebAssembly, that is, the history that we had these two paths that eventually ended up working together. So just like NACL, WebAssembly is not based on JavaScript. It's a new design. It's proper. It's in binary. This is very much the right thing. And this is something NACL very much got right. Like SNJS, it runs in the same process as JavaScript, uses normal JavaScript. Sorry, normal web APIs. So I think that's something that SNJS got right. This kind of also shows in our tool chain. So we use MScripten, which basically had the right JavaScripts and web API model. It compiled to SNJS before. And now we just made it compile to WebAssembly. And it's basically calling the same API, et cetera, so we could keep using it. And MScripten uses the new LVM WebAssembly backend that was written in collaboration between tools people from Mozilla and Google, the people that used to work on SNJS and used to work on Pinnacle are working together on this stuff. I think I have one or two more slides, which is very briefly just to mention a few more milestones along the way here. So as I mentioned, we announced WebAssembly in 2015. Before the end of the year, we already could start to run the work in progress version of it in our tool chain and MScripten. In 2016, we showed multiple browsers running a bunch of large demos like Angry Bots that sort of proved that we were all in sync and working together effectively. We reached a consensus on Wasm in 2017. And all major browsers shipped is supported in a stable version by November, so you could say Wasm one point arrived by the end of that year. We also published a paper on Wasm in PLDI. And we announced the deprecation of Pinnacle in favor of WebAssembly. And you could also say SNJS is deprecated effectively, essentially, since we don't really need it. In fact, in MScripten, we plan to stop the mitigate in just a bit Wasm. OK, so getting back to this picture, so these two paths would seem to go on forever, but not converge. So it turns out they do converge just past the hill where you can't see it in the picture. And they converge to WebAssembly, obviously. And that's it. Thank you.