You'll regret being a Christian. You'll regret all those hours you wasted at church. You'll regret all those mornings reading that thousand-year-old book. You'll regret not partying, not having sexual experiences.   They regret turning to empty and toxic love to fill the longing of their heart. They regret spending their life on things that really have no eternal value. King Solomon, who experienced all the world had to offer, said this. I've seen everything that's done under the sun, and behold, everything is vanity and striving after the wind. One day all people will bend a knee to Jesus, and the only regret that people will have is not bending the knee sooner and surrendering to him while they had been given time. But that is a regret I will never have. I only regret the time that I wasted living for myself. All the things of this world will pass away, and it is only what is done for Christ that will last.


Hello and welcome to this session in which we will discuss flexible budgeting or flexible budget and specifically we're going to be learning about the activity variances or something called sales volume variances and revenue slash spending variances. Now if we are discussing flexible budgeting well we need to know what is flexible and what is budgeting hopefully we know what budgeting is we learn about budgeting in a prior session basically a budget or a budgeting is planning a budget to do what to run the company and usually the budget is prepared for a single planned level of activity. So it's a static or one budget so simply put we assume the activity is we're going to be selling 100 units or we're going to be selling 5000 units so one single level of activity. Now budgets are helpful and we talked about why budgets are important because it helps you plan but what happened if the level of activity differ so you plan to sell 100 units that's your budget but you might have sold more you might have sold 120 or you might have sold 80 what do you have to do if your level of activity differ this is where the flexible budget comes into place the flexible budget prepare the budget using various level of activities within the relevant range and the relevant range of the fixed cost or our capacity so rather than preparing a budget with 100 unit we can prepare with 120, 140, 160, 80, 60 or any number of units sold to determine what would happen to our financial status if the level of activity changes and this is going to show the cost and revenue that should have been incurred at the actual level of activity so the flexible budget we're going to prepare a planning budget then we can prepare flexible budget so if the planning budget differ we can compare that to the flexible budget to show us what we should have and cost and revenue given that new level of activity it enables to compare apples to apples so if you prepare a budget with 500 units then you sold 600 units well you cannot compare these two because they differ therefore you have to flex this budget to make it 600 unit then you can compare apples to apples and obviously we are going to see that in an example it helps improve performance and help control cost and that's the whole purpose of budgeting in the first place is help control control means what control means know what's happening plan ahead so we don't overspend we don't understand money the best way to illustrate the concept is to work with an example using actual numbers so we have Adam loan service company provide long care for senior citizen communities where all loans are approximately the same size at the end of May Adam prepared his June budget based on 750 loans so this is what we expect to do in June and this is basically the size of the loan and maybe he takes care of the flowers as well on average Adam charges $80 per loan and that's a variable in a sense that if you have more loans you will have more revenue if you have less you will have less revenue but we are planning to take care of 750 the wages that Adam pays are mixed Adam pays $6000 in fixed wages then he has a few individuals that work on an hourly basis and it costs them $30 per loan so it's a mixed cost part fixed and part variable we have a mixed cost here the wages the gasoline is variable and it's $9 per loan this is a variable the cost for the equipment maintenance is variable $3 per loan and the remainder of his expenses are fixed expenses so let's take a look first at a static or a planned budget for 750 units and this is what the budget what looks like this is the number of units this is a planning budget the revenue is $80 $750 $80 will give us $60,000 again the revenue would varies with the number of units wages are $6000 plus $30 times the number of units which will give us wages of $28,500 again this cost is mixed the reason I'm going whether this cost is mixed fixed or variable that's very important to understand gasoline and supplies it's $9 per loan nine times $9 times $750 will give us $6750 equipment $3 per loan $3 times $750 will give us $2250 office and shop supplies are $1,000 this is fixed it means it does not change it does not vary office and shop rent $2,000 this is fixed as well equipment depreciation should be fixed and insurance is fixed and the remainder of the costs are fixed based on our budget total expenses are $45 total revenue is $60 we expect operating income or net income to be $15,000 for the month of June so this is the budget knowing the various costs that we have now what we're going to do we're going to wait for the month of June and we're going to see what happened then make comparison and study the planning budget versus what actually happened to learn what happened this is the purpose of variances it's a form of a control so we know why did we did not make enough profit or that why did we incur more or less expenses it tells us about our business but before we look at the example we need to take a look at farhatlectures.com most likely you are a student or a CPA candidate and if that's what you are looking for flexible budgeting learning about this topic go to farhatlectures.com where I do have additional resources multiple choice through false exercises that's going to help you do better on your CPA exam as well as accounting courses if you have not connected with me on LinkedIn please do so like this recording share it with other connect with me on Instagram Facebook Twitter and Reddit now for the month of June these are the actual results okay we planned and these are these are the actual results the first thing I want you to notice is actually we the number of loans we service is seven rather than 750 we service 825 you know few other senior senior citizen communities ask us to do it so we added 75 units okay that's fine our total revenue actual total revenue was 64500 and those are the actual actual actual means this is what actually happens and what actually happens we end up earning a profit of 15725 our based on the static budget the profit was if you remember was 15000 so the first thing we are going to do is we are going to compare the planning budget to the actual results okay this is the planning or this is the budget and this is the actual result now we need to interpret this well revenue was planning budget was 60 our revenue was 64500 well it's we generated 4500 of revenues we consider this as favorable okay there's no pluses no minuses in this language it's either favorable or unfavorable how do I know it's favorable if I generate more revenues it's a favorable variance if I if I incur less expenses it's favorable if I incur more expenses it's unfavorable let's take a look at the wages and salaries we budgeted 28500 we incurred 31250 we are 2750 unfavorable now some students they get confused should I deduct actual minus planning or planning minus budget well guess what you need to understand that the actual was greater than the planning there's no pluses or minuses anyway you look at it just if the actual is more than the budget and it's for expenses it's unfavorable it's a you now you want this to be true for revenue more revenues actual than planning like for revenues here to be favorable so you have to be careful there's not plus and not minus this is not what we are looking at we are looking at whether it's a favorable or unfavorable again gasoline supplies we budgeted 6750 the actual results were 7700 it's unfavorable equipment maintenance we budgeted 2250 we incurred 2075 this is favorable because the actual was less than the planning same thing for office and shop supplies it was favorable these two are fixed they're not supposed to change and they did not change insurance supposed to be fixed also 2000 for some reason they increase our insurance by 10% it was unfavorable now what we do is we add up all the unfavorable and they add up to 3775 which is basically net them out and the net is 3775 4500 favorable in revenue 3777 3775 and expenses unfavorable the net is 725 that's fine we looked at the net it's favorable of 725 but this analysis doesn't help us at all what do I mean by this well you are comparing actual to the planning however the level of activity is different here your planning is based on 750 your actual your actual results are based on 8 I'm sorry 825 not 828 825 so what happened is you cannot compare apples to oranges so what do we need to do let's flex the budget so we're going to prepare a flex budget we're going to see what that what that is then do the comparison to learn more about the business now nothing wrong with this except it doesn't tell us much why you're going to see why once we look at the flexible budget so how to flex the budget well variable cost and variable revenue will change in proportion to the activities and total fixed cost you know remain the same assuming we are working within the relevant range so now what we're going to do we're going to prepare a flexible budget and our flexible budget it has to be based on the actual number of unit which is 825 now we take 825 times 80 will give us 66,000 so what is this 66,000 the 66,000 tells us this is how much revenue we should have based on our planning budget in this level of activity the planning budget is $80 and we we service 825 units therefore our total revenue should be 66,000 same thing with wages and salaries 6,000 plus $30 times 825 it should be 30,750 and the remainder is the same except that the fixed cost will stay the same fixed cost will stay the same and variable cost will change based on the flexible budget our profit should have been 17,850 so now we looked at the flexible budget now it makes more sense to compare the flexible budget to what actually happened don't you think because now we have the same numbers we're going to look at that in a moment okay so this is what should have been according to the budget that figure this is the flexible budget now the first variance we are going to compute is called activity variance or sales volume variance sales volume or activity variance how do we compute this variance so here's the formula you look at your planning budget which is planning budget of revenues and expenses and compare it to the flexible budget of revenues and expenses so this is basically the first thing is the activity or sales variance so let's take a look at it just simply put the flexible budget versus the planning budget so those are changes okay so the difference here is solely do we are we are computing the difference solely do to the changes in quantity in sales volume so notice the planning budget is 750 the flexible budget is 825 so by comparing those two first we're going to know do to volume what are the differences how do we look at the differences well activity variance if we look at the difference is 6000 favorable for sales simply put because we perform more we we we service more units more lawns 75 more well our revenue should have been $6000 more wages and salaries obviously all the expenses the variable should be unfavorable why because if you perform more generally speaking if you perform more and your expense is variable you should have more expenses so notice they are all unfavorable and this should make sense the fixed they should stay the same when we are performing this computation overall from the volume activity we can see that expenses are unfavorable which they should be unfavorable and when we net the favorable of revenues due to the quantity due to the increase in sales volume and the expenses overall we have a favorable volume variance or sales volume or activity variance of eight thousand five eight two thousand eight hundred and fifty again this variance has to do with the volume this is why it's called the activity or sales volume or sales activity okay so just do two changes and notice to remember this look do we have we have a different number of units 750 versus 825 so the change has to do with activity alone now we could also compute revenue and spending variance now the revenues and spending variance this is where we are really compute computing the analysis apples to apples we're going to look at actual revenue which was for 850 units compared to the flexible budget revenue which is 850 and the difference between them is called revenue variance we're going to do the same thing with the expenses called them spending variances we're going to look at the actual cost which is 850 versus the flexible budget of 850 and let's take a look at them and see how much we can learn about those now 825 825 actual results flexible budget revenue the actual revenue was sixty six thousand five hundred the flexible revenue based on this activity should have been sixty six thousand well guess what we really did not do a good job our revenue was unfavorable our revenue was unfavorable why could be many reasons but could be those 75 new loans that we got we charge them less than $80 maybe we charge some of them 70 some of them 65 so as a result our revenue end up to be our revenue end up to be unfavorable it should have been sixty six thousand if we charge everyone $80 it was 66 it could be we wanted to earn the goodwill earn their business that's why we lower the price it could be I'm not sure but we have to look at why maybe those new loans we shouldn't have service them because they're gonna you know take time from us and we can do something else and get loans that could charge us $80 I'm not sure but something we need to look into why don't you charge $80 okay so notice from a volume yes you did more work but you did not charge them $80 more work yes more quantity is it the same price no so you have to make a decision about what you want to do next month wages and salaries the actual was $31,250 the flexible should have been $30,750 it should have cost you based on our formula $30,750 if you service $825 which is $6000 plus $825 times $30 which is the formula here it costs us $31,250 somehow we spent an additional $500 why maybe we had to hire one or two employees to help extra and we had to pay them $500 maybe those 75 lawns we did not budget for them and now they came we had to hire more people or pay overtime we need to find out but it cost us $500 more gasoline based on our gasoline it should be $7,425 it cost us $7,800 again unfavorable well what could be the case here well gas prices went up there's nothing we can do we estimated to be $9 for each lawn gas prices went up and this is happening these days so you have no control over this equipment maintenance based on our formula $3 per lawn it should be $2,475 we only spent $2,075 well at face value this look favorable because we did not spend as much as we should have given the number of lawns we serviced however we could have also deferred the equipment maintenance we did not do any maintenance which is bad because this is going to increase the repair next month but we're not sure but we need to know why we did more work and the maintenance cost is lower because usually the maintenance cost the more work you do the more you have to maintain those equipments office and shop utilities we budgeted $1,000 and we only incur actual resorts with $950 based on $825 this is favorable but we need to know why it's a small amount office rent office and shop rent was the same depreciation was the same insurance was unfavorable $200 our insurance went up by 10% $200 just an increase in the premium next month we start to budget $2,200 but for this month it's unfavorable now we compute we take all the cost and it was total expenses $625 unfavorable and the revenue variance was unfavorable so the spending and the revenue was unfavorable the total unfavorable is $2,150 but this unfavorable is based on now comparing apples to apples $825 $825 unit versus $825 unit so this is revenue this is how we compute the revenue and the spending variance to compute them you have to have the same number of unit when you compute the activity variance well the activity variance is different you have to have them different because based on the activity sales value you're not done yet the best ways to put them together side by side this is the actual results these are the planning results this is what we did in the planning this is the budget this is the budget this is what we did first then we got the results too then we prepared a flexible budget the difference between the flexible budget and the planning budget notice $825 versus $750 is what we called activity or sales volume and notice it was favorable it should be favorable because we did more work but it wasn't as favorable as we thought but it was it was favorable we did more work from the activity variance perspective when you look from the when we compare actual results the flexible budget when we compare those two which is $825 and $825 it was unfavorable $2125 now obviously you can net them out and I believe the difference is what you saw earlier $750 I will go back and show you the difference $2850 minus $2125 and the difference is actually $725 let's do it again $2850 minus $2125 it's $725 the difference is favorable of $725 now we know it's favorable overall but from an activity variance just because we did more work we would not do a good job controlling cost and generating revenue and where did we see the $725 again let me go back and show you the first comparison we did you remember $725 but now we understand why it was $725 I would not be very happy with this result if I'm in charge of this company if this is my company I'm not happy with the results I did more work but I did not make the profit that I should have made I only made additional profit of $725 and I did more work okay so notice here I mean another way to look at it is basically sales went up by 10% sales went up we went from it should have went up by 10% we should go from 60 to 66000 well the profit did not go up by that much so I'm not happy with these results nevertheless I learned again it could be because we it could be because we took those additional jobs just to kind of gain their maybe we give them a discount the first month if that's the case that's fine but this is what budgeting is all about tell me what's going to happen what should you do now go to far hat lectures and work MCQs true false invest in yourself you need to learn this good luck study hard and of course stay safe


It's going on, everyone. Sam here with late in sports cards, ripping 22, 23, Panini, Crown Royal, Asia, Team All Basketball, 20 bucks, full case break, number three tiered, random team style. So look, kind of here, random results. As always, you can find those on the website under the Results tab, as well as the link that's in chat. It's good luck, guys.  Then we've got some Blaster case of Prism Basketball, I believe. Then we've got the brand new upper deck FLIR Metal Skybox 2022. Sort of looking for PMGs, of course, out of that. And then, and autos. Some cool autos that have come out of there in the past. And then we've got 2019 plates and patches. And then we got to fill up our last few breaks of the night here, everybody, as well. Come on, we'll see some of the big men. See some of the big. Got a Crown Royal, Team All. See a big gold auto. Gold Palo to eight. Auto would be nuts, dude. That's going to be a Johnny Davis, three of eight. Nice one there for the Wizards. Congrats, Washington. Picking up the first one. Asia Exclusive Darius Garland. Got Fred Van Vleet, Johnny Davis, LeBron, and Bradley Beale. It's one of those things, like, the more you think about it, the kind of funnier you get. Oh, I get so. You start processing a little bit more of this. Oh, my gosh. Yannis, Asia Exclusive Snow Globe. That's true, AJ. Dallan Terry, rookie. Jabari Smith. Io Desunemou, Kevin Porter, and a Ty Ty Washington. Hope you're doing well, AJ. What up, what up, what up? I don't believe so, no, Carl. Just the Asia Exclusives to 8 and 18. That is a Shack Asia Exclusive. We've got Lamello, eight of 18. Nice one there for the Hornets on the base. Lamello. Yeah, Paul George, Cole Anthony, and Andrew Wiggins. Yeah, that would be wonderful, Donnie. Okay. That is going to be a Jake LaRavia, 7 of 18 for the Grizz. Nice one there on the Crown Royal Exclusive. Walker Kessler, Asia Red Exclusive, rookie. Terry Eason, Zach Levine, Kyrie Irving, and Josh Giddy. Do we ever get an answer on that if there's Kabooma Timo? I don't think there is. I don't think so. I know it was questioned, but we never confirmed. Yeah. Blake Wesley, 4 of 8. Rookie Otto on the gold. Nice one there for the Spurs. Congrats, San Antonio. We've got a red Jake LaRavia. That is going to be Tatum, Damian Lillard, Sari Saliburton, and Shet Holmgren. I've been in talks with whoever did win the poo, Ryan. I'll see what happens. Thank you, Jody taking a spot in each of the team halls. Craig taking a couple of national break spots as well. Very nice. Thank you there, Craig. So we're down to now 11 and 14, everybody. 11 and 14 on our football breaks. Those will be breaking a little bit later on tonight still. I went ahead and moved them for you guys. Steph Curry. There's Bradley Beale, Red Asia, Kelden Johnson, Malcolm Brogdon, Terry Rosier, and Buddy Hield. So we can continue on just breaking. I gotta send to my audition table for the sequel. See if I can become a big movie star voice. 4 of 18, Musa Diabate. Nice one there for the Clippers on the Red Asia Exclusive Auto. That is a Johnny Davis, Red Asia, Clay Thompson, Yanis, Jimmy Butler, and Devin Booker. On to the next. See what we've got. That is a Usman Zhang, Rookie Red. We've got Rudy Gaubert, 1 of 18. Nice one there for the Timberwolves, Jankler Avia, Rookie, Anthony Simons, Steph Curry, and Jalen Silks. I'd prefer the drive, Ryan, but yeah. Yeah, I don't think you'd want to walk all the way to Orlando. One is far, two you probably don't want to go through some of the places to get there on foot. I don't want to deal with that. There's Shade On Sharp for the Blazers. That is going to be a Darius Garland, 14 of 18 for the Cabs. Nice one there, Cleveland. Rats on that one. Got Donnie with me, Yogi. There's Ty Ty Washington, Blake Wesley, Clay Thompson, and Yanis. Nah, Donnie's off to the show on Dicecrack. Donnie's a steamer. They threw me out. They sent me home. Ooh, one of eight, Snow Glow, Palo Bancaro. Going to Tyler W. Congrats, man. That's what we're looking for. Hell to the yeah. One of eight. Hello. Here we go. That's your Chase and T-Mall. Something like that right there. Congrats to the Magic. Tyler, there you go, buddy. Patrick Baldwin, Kyrie Irving, Josh Giddy, Kat, and Christian Brown. That's actually pretty nasty. Those Snow Globes are cool. I was playing too much Fortnite. They sent me home. I wasn't really surprised. I was calling people box. I didn't like that. There's two of 18 Jop, Snow Globe for the Grizzlies. We've got a red Asia exclusive, Steppen Curry, a Ty Ty Washington, Blake Wesley, Clay, and Yanis. I look he wouldn't be surprised if that was the case. They wouldn't let me bring my Xbox. Down to 10 to go on Asia team all guys. 10 to go. Let's fill that on up. That is a full 20 box case, random team style. We've also got seven to go on Flawless Collegiate Divisional. Down V. And 14 to go on Optic Team All. Nice one there. That is a Chris, Kevin Porter Jr. to 18. True, Brett. Got a Kyrie, Josh Giddy, Carl Anthony Towns, Christian Brown. That is a Timmy D, Tim Duncan. Nice one there. Chet Holmgren, two of eight. Asia exclusive going to Sean P in the Thunder. Do this case that Team All is smoking right now, dude.  Two of eight. Chet Holmgren on the gold. Let's go, man. Hell yeah. That's awesome. Potential rookie of the year. Jock, Shade-On-Sharp, Devon Macel, and Tyrese Maxim. We're not even done. We haven't hit all of our autos yet, either. We've only hit two autos so far. How could he use the one? Chet Hurt like it was clear. Yeah, but if you don't play X amount of games, then you're considered a rookie for the following year. That's why it's like Ben Simmons missed all of 2016 and he won the rookie of the year in 2017. Oh, so he could win rookie of the year next year. Yes, yes. That's what I was confused about. Yes, yeah. You can't do that football, can you? I don't think you can. I don't know, to be honest. Kid Cunningham, that is a Jaylin Durin, 14 of 18 for the Mavs. I mean, for the Pistons. I just won their Detroit. How are you, Durin? Jaylin Ivy rookie. Smart, Sexton, and Baldwin. I don't think you can because I don't remember if like ATN was considered a rookie last year. Yeah. He missed all of like... But he also played it a few games ago. Oh yeah, you're right. He played like first like four or five years ago. Yeah, no, you're right. You're right on that one. So he had missed the whole season. Oh, bench is clearing brawl. Oh, go, fight. Uh, test of time, James Harden. That is a Devon Macel, six of eight. That is going to the Spurs. Nice one there, San Antonio. Brown, what? It's just Wendelmore Jr. Jaylin Brown and Kid Cunningham. Someone was talking about that. I forgot who it was was mentioning that. Yeah, someone said that in chat earlier. There's a Jeremy Sohan. We've got a Tyrese Maxi, seven of eight. Going to the 76ers. Congrats, Philly. There's Marchon Bo Champ rookie, Jaden Hardy rookie, Chris Middleton, and Darius Garland. Yes, he did. Oh yeah, the Flash Zone. The Donbong, as they call it. There's two 18, Ty Ty Washington. I don't know if I'm allowed to say that. I just went there for the Rockets. Kawhi Leonard. That's what they call it to be fair. That's what it's called. No, yeah. Dallin Terry, Laurie Markinen, Oshaig Bajing, and Treyum. Yeah, it was Detroit. Detroit did. That's what I could call, Ryan. There's Jason Tatum, seven of 18. Snow Globe. LeBron James, nice one there. Got to hit you one here, Dallas. Deontay Murray, AJ Griffin rookie, Bama DeBio, Chris Opsport, let's see a Keegan Murray out of here. We've all said something we're not supposed to do one time or another. That is a Walker Kessler, nice one there. Red Asia Exclusive. Gold, Nikola Jokic, eight of eight. Going to Denver. There we go, Nuggets. Congrats on that. Very nice. Eight of eight, the Joker. Walker Kessler rookie, Fred Van Vleets, Johnny Davis, and LeBron. Come on, let's see a King. See a King here for Dallas. Come on, B. That is a Kareem Abdul-Jabbar, five of eight, Pillars of the Game, Gold. A lot of Gold coming out of this. Fred Van Vleet, Red for the Raptors, Rudy Gaubert, Ant-Man, Jalen Green, and Paul George. Do a quick recap here, guys. A solid case, my God. We had a Kareem Abdul-Jabbar to eight, Jokic to eight, that is Tatum to 18, Ty Ty Washington to 18, Tyree Smaxy to eight, Vacelle to eight, Jalen Durand to 18, Porter to 18, Ja to 18, Darius Garland to 18, Gaubert to 18, Lamello to 18, Autos, we had Musa Diabatte and Blake Wesley. We had a Pellow, one of eight, Snow Globe, Gold Asia Exclusive, and that number one of eight, and then two of eight, Chet Holmgren, Gold Asia Exclusive rookie. That'll do it for the break, guys. Thanks again for the fill. Coming up next is Blastercase.


tricks on Xen, which is the basics for all the major cloud operators in the world, like Amazon or Rackspace. And after that, I work a few years in OCaml Pro, which is a consulting company for OCaml, where I developed Opam, which is a package manager for OCaml. So if you have any question related to OCaml or Opam, let me know. I know that quite well. And then I started like one year ago, I joined the University of Cambridge, where I started to work on Mirage, which is an operating system fully written in OCaml. But I will try to describe to you now. So first of all, I think creating distributed systems is still an independent problem. We don't really know how to do that properly. There's a lot of possibilities, and none of them are very satisfactory, I guess. So just a quote from Principal Engineer on Twitter saying that, well, we know how to make modules to create components and compose them together in a synchronized way. But when you start putting them together in a distributed system, that doesn't work at all. Everything is broken, concurrency issues everywhere. And so the question is, why is this case? And how we can solve that? So I think one of the causes of that is because we started to create systems thinking of only one processor, only one user. And so the environment is very simple at the beginning, which is only one thing. And then we try to apply some ideas to a lot of different things, the cloud, programming the phones, using JavaScript to make a synchronized web client with callbacks and such. Then we want to put things inside the objects everywhere. We want to put processing data, processing power in the lamps, or in the bulbs, or everywhere in the fridge. And then we have kernels, where we have a very critical piece of software which works inside the operating systems. And we try to apply the same kind of techniques for all of this stuff. But we cannot do that, because every component is different, every architecture is very specific. So we develop every time a new set of tools to work on that. And so we do every time the same thing. And so we repeat every time some mistakes. We have the bugs everywhere. We scrape everywhere. So that's not a good way to go. So what I want to explain first is, yeah, I think one of the main problems is the complexity. So we are trying to build big systems without really thinking about how to do it. Just trying to pile things together and hope it will work, and that will not work usually. So everything is very mixed, and there is no clear separation of concerns between the different components. Moreover, when you discuss about operating systems, the problem is that we want to offer to users a lot of different things. Like you want to dynamic libraries. You want to be able to load code dynamically. You want to be able to support multiple users on your computer. And your phone is not really necessary, but you still have the same design ideas which are here at the beginning. And you want to run multiple applications. I think the first iPhone was not able to do that. And so people were starting to complain. So they added a pretty free application after that. Usually, on top of that, you have to choose which software you will install, which version you will have to understand, or they will interact together. And then you will have to configure every application separately, putting some configuration files somewhere on your system, which will be different depending on the application or the version. And then depending on where you want to deploy your application, you will need to configure your firewalls, your all the different parts of the system. So what we said is, OK, this is not acceptable. Or we cannot do anything with that. So we want to start from scratch. Why not? And we want to design new stuff in very nice languages, or functional programming languages, for instance. But the idea is very weird to say that, OK, we have an application. We will write it into SQL, or Clojure, or OCaml, or whatever. And then we will just put it into an operating system, like Linux or Windows. And it will run there. So the nice language that we build with a nice abstraction, they will be surrounded by a lot of unsafe C codes, like 50 million off-lines. And we've bugged everywhere. And so it's not much better. So the only way is to start from scratch, even below the application level, so at the OS level. So what we do with Omirage is we rewrite everything. And an example here is, so here I've got a small QB board, which is like the Raspberry Pi, where everything is compiled, where everything is written into OCaml inside that. And actually, the presentation is connected from my browser, which if you can look at the top here, I'm connecting directly to inside the QB board. And so the QB board is serving my entire presentation here. Everything is done in OCaml from the application to the network stack, and the OS as well. So everything is there. So we are using that as a compilation target. And the whole application, so the network stack, the website, the data, so the images and everything, is around one megabyte in size. So you can just take it and move it everywhere. It will work as well. It will work. So that's just a source file describing the application logic, some configuration to say that you want to use DHCP, for instance, or which storage backend you want to use. It works very well on ARM. And the idea is the binary is small enough to be kept into Git, so you can version control the binary as well. So usually, you are a developer, and you have a good process in your company. You are using a version control to version control your source code. And the idea here, you do the same thing, and you version control the binaries as well. So when you deploy your application in the cloud or anywhere, you can say, oh, this version, this application, this binary, is version number x, which comes from the source number x, et cetera. And so you can have a full story of the binaries as well. And so what we want to do with Mirage is to focus on portability, so target the different platforms. But using modularity to say that, actually, you just write the application once, the source code of your application, and then you switch underneath the different components, and it will be transparent to the user. And the thing is, it's safe, and it's performant as well. And I will try to show you that in the talk. So yeah, that's not the same Raspberry Pi, but it's good. So yeah, so just to summarize, so complexity is in me, and we want to be simple and efficient. Be simple and small, so that if it is small, it can boot quickly. If it is small, there is less attack surfaces for attackers to try to get access to the system.  We use already Docker. With Docker, we can create images and send it to other people, and they can use it. So what's the difference with Docker? Just quickly, well, if you look on the left, you have the usual system stack with different layers and layers, which has been added years after years by different researchers and people in the industry. And what you do in Docker, you take the full stack, you create just one container, and you put it on top of something which is an hypervisor like Zen, or KVM, or something. But the idea is you still have the full stack, so it doesn't really help for making things simpler. So the idea is you break everything into modular parts. Then you only take for your application the parts that you need. For instance, if you do an application that doesn't use the network, if it is not a network application, you don't care about the TCP IP stack, and you can just remove it. And so you can just do dead-code elimination to remove all the necessary code, and have a very, very small application. So the idea is you take your configuration files, your source files, the components that you want, and then you link them together, linking as a compiler link. So you just create a small binary which contains everything, configuration source code, and the system libraries, and that is a self-contained and small image. And so, yeah, that's the idea here. You put everything, and you compress that into a very small image. And then you can decide where you want to run it. So you can run it inside Unix. So you can keep the normal TCP IP stack of Unix, which is tested from here, so you think it works well. Or you can say, OK, actually, well, so this is just the language runtime here. But you can, as well, integrate everything. So you can say, I want to write the TCP IP stack in OKML, as well, and use it in my application. I want to have a FAT or NTFS NFS storage. And I want to link that together into my application. So you speak the component you want. You link it together, and you get one single self-contained application that you can run on top of Unix or Xen, which is powered by Amazon. So having the full control of the stack, you can do whatever you want on the runtime, as well. You control the runtime. So you can simplify everything. You can say, well, actually, the memory of my application is very simple. There is a specific zone, which is the stack of my application, something which is only a result for the network. But I know that only incoming packets will go here. And so everything which comes from the outside is from that zone in memory, so that cannot really contaminate the rest of the application. And allocating and just moving a pointer on the stack, so everything is very efficient. And some example of the size of the binary. So we wrote a DNS server in a camel from the application logic to the network stack. And at the end, it's like a compressed version is 100 kilobytes. So you have 100 kilobytes, you have the full application and network stack and OS things which are needed for the DNS. Then we just some example of performance measure to show you that it's efficient. So here the example is we want to start application of virtual machines on demand. So here we want to do a DNS request to get an HTTP page. And we start a Docker image just to serve the HTTP page. And usually it's around 1.4 seconds. We try to hack it a little bit to make it faster, but everything is crashed. So sometimes it's faster, but usually it's just crashing. And then we do the same thing for Mirage. And for Mirage, as we control the world stack, it's very easy to add optimization. So here we have just a small optimization where we have an application which is always on and which listened to incoming TCP connection. And when you get a scene, it just opens the connection and passes the connection to the other application, which is, at the same time, wake up. And so the wake up is very fast. It can happen in 300 milliseconds. So that's in that when you send a DNS packet, it can just wake up a virtual machine and reply directly with the first TCP connection, like in 300 milliseconds. It's very, very efficient to boot. Yeah, the summary. So if you start to boot a VM just to serve an HTTP page, if you take Linux, you need to boot the whole virtual machine. So it takes more than 5 seconds, or really 10 seconds. If you try to boot a Docker container, it's more than 1 second. And if you try to boot a Mirage unique channel, which is called J2 here, it's a very specialized instance of it. It's less than 1 second. So you can use it just to serve traffic in real time and create application in real time. So it's very, very, well, with that kind of thing, you can think of a lot of different applications. We are just starting to discover what you can do. It's very, very fun, maybe. If you have ideas, I'm very keen to listen to them. Right, so it was a very fast introduction. So now I will try to dive a little bit into details. So first I will present OCaml, because I'm not sure. First, do you know OCaml? So who already tried to use OCaml in their life? Well, good, good. It's much more than I was expecting, but good. Then I will just show a little bit the workflow to develop application. Heremin, which is a new storage system of Mirage that I can describe a little bit in detail. And OCaml TLS, which is a representation from scratch of the TLS stack, which is something that we can do for fun, because it's fun, but I will try to explain. So OCaml. So if you go to OCaml.org, I will tell you that OCaml is an industrial-strength programming language which supports functional, imperative, and object-oriented styles. So it's a, well, I mean, that's very general. So what it is actually is, well, it's very pragmatic. So if you like programming with objects, you can use objects in OCaml. Usually people don't, but very few libraries are written like that, and when it's useful, you can use it. If you want to use mutability because you like mutable states, you can use it as well. It's fine. People kind of use it, actually, but very localized inside the function. When you want to do a for loop, you can just do a for loop. But then you try to avoid having global state because it's very bad for concurrency issues. And then if you want to have functional programming with functions and priority, you can do it. And the main difference, I guess, with Askel is everything is strict, as in Askel, everything is pure, which I think that's the main difference between the two languages. I study statically typed. So I think there are two good things for statically typed languages that I'm not sure people are really aware of, really. So when you are statically typed, that means that you can have good performance. Why? Because that's a compiler, a node in advance, which are the types of the different things. So we can optimize a code to generate it. So if you have a plus, and you have two things on left and on the right, if you are using JavaScript, you don't know that the plus is the concatenation or the addition or if it is, well, you don't really know. So in a candidate, for instance, plus is always written in an integer. So it will be optimized as only one assembly instruction, so it will be very, very efficient. And then types are very good as well to structure your code to ensure global end variants. So you can say, I know this kind of data, follow that patterns, and so I will describe it with a special type language, saying that, I don't know, it is a case analysis between different cases, or it is a record. And then you can apply that on the compiler with l u, oh, here you use it in the wrong way, and you try to correct you. So it's really a tool to help you improve your program. And it's like a game where you try to press enter, and you will complain saying, oh, this is not good, so you think a little bit, you correct it. And it's very interactive, and you have to treat the compiler as a tool, not as an enemy. A lot of people are saying, oh, types will just complain, and it doesn't want me to correct my program. It actually tries to help you, so you have to be kind with your problem. A bit of history, so I think it's a direct descendant of ML from Nielner in the 70s. His close browser, F Sharp, which started as a fork of ML for the .NET environment. And then now it's a bit different language, but the roots are very similar. And interestingly, Dunsim, which is the main F Sharp developer, is in Cambridge as well, and this was last week we saw a talk of him, and he was saying, yeah, the main language I prefer is OCaml, but I was forced to use .NET, so I had to write F Sharp. But so he really likes OCaml, apparently, so you should like it as well. And then Askel is a close browser as well, but it's lazy, and the type language is a bit more expressive, so you have to put more type annotation to be sure that it's compiled. It's created by some French people, Xavier Leroy from India, almost 20 years ago, and it's teaching a lot of different universities in Europe and US. In Africa and India, I'm not sure people learn it or teach it in university. One, where? OK, so if you can drop me a line to tell me which one is it, I will be very interested to know, because I think we need to spread it a little bit more to be useful. So yeah, there are very strong roots in academia, but there are as well a lot of industrial, well, lots, but there are important industrial users, major industrial users. The main one is Gen Street, which is a hedge fund company in Wall Street. I think they do 2% to 5% of all the transactions in Wall Street, and all the code is written in the camel, everything from the administrative tools to the trader's tools, so everything is written in the camel. There are a few people doing that for system-related reasons, so Citrix and Red Hat. Citrix is doing it for Xanserber, so the management of the intact tools of Xan is completely written in the camel. Then you have Facebook, which I don't know if you heard about, but it really is the hack language a few months ago, and hack is written in the camel. And so we know very well the people who did it at Facebook, and we hope to have a more complete, well, more integrated relationship there, because they got very nice tools from ID2 that we want to use for our camel as well. And then you've got a lot of security, like CI is the main nuclear power builder in France, and so they want to be sure that the software doesn't have any bugs. Dassault and TLS are doing planes. We'll see the French security agency, which does a lot of tools in our camel as well. So yeah, so if you look at that, well, it's different kind of companies, but the main point is you are worried about bugs in your programs. So when you are trading on Wall Street, if you ask to trade for $100, and then you get a minus, which can just at the beginning of your number, and then you iterate that in a loop for one billion times a second, you can be a big trouble in your company. So you really want to be sure that what you do is correct. And I think it's working quite well for these kind of users. And then a few years ago, so two years ago, there was a camel labs, which have been created in Cambridge, where I'm not working, and I'm working here now. And I think there was around 10 to 30 people working on stuff related to a camel there. And so we tried to improve the different toolings around the language and to make it more usable in academia. So if you are in a university and you want to teach it, feel free to keep in touch, and it can help you to give you materials there, and so on. So then another thing is that we are creating a library US, so we want a lot of components which are in OCaml, and we want to be able to pick the right components when we need it. So for that, we want a good package manager as well, because if you have a lot of different parts that you assemble together, if you have to do that manually, it's very painful. So two years ago, I started to write OCaml, which is a package manager for OCaml, which is a mix of Cabal, which is the one for Haskell, and Homebrew, where everything is based on Git. You have the Git workflow. You can put requests to add a package. You can have multiple repositories, which is distributed. And we use the same constraint solver as Debian, which is UDF, because we have a strong ties with the people there. So I think it's a very nice one, and it's not very specific to OCaml, so if you are using a language and you are looking for a good package manager, maybe you can try your plan and tell us your experience. So we have more and more contributors, more and more packages. And at the end, the experience with OCaml is the goal is we started with a quite large bit of C code, and we tried to remove a lot of it. And it's getting smaller and smaller, and we are very happy with that. I think the main thing is we started like four years ago, five years ago, this project, and we had to write three times the whole OS. And maybe we write it four times soon, I don't know. But the thing is it's not very hard. It's just a bit painful, because you have to understand everything, and it's very interesting to look into the details. But then it's not very hard. You are using a high-level language. You put things together. You put the application logic is very clear. You don't need to worry too much about the low-level things. So you can really take any kind of protocols that you want to know, and just trying to implement it. It's a very good way to understand it. And then when you try to implement it again, you will try to ask questions about why people did that like that. It's not the best way to do it. And then you say, oh, maybe I can try to do another way. And usually it's a very good part to do research or even to create new products which are very innovative. And we have a very strong support for that with Citrix, for instance. We started to use Mirage a lot for all the tools internally. And so it's very useful to have quality control coming from the industry, as well. Right. And at the end, I think that's all for our Camel. Do you have any question regarding our Camel? Yeah. So we have a student in Cambridge who's working on that, Defender Lenn, who showed the first results last month. And he gets a very nicely working prototype, which is still a prototype. And then we are discussing with the Inria people to try to upstream the patches. And they're happy about that. So I think in a few, yeah, one to two years, maybe, we'll have to take our Camel for a question. OK, so now just an example of, oh, yeah, sorry. So there are very few things which are specific to our Camel, which are, so there are a few variables which are what is a compiler version. And then the full thing is, you have to track the dependency very closely. And when you change something in the chain of dependency, you have to recompile everything on the chain. So it's very, very strong dependency there. So it fits very well with compile languages. So in Python, it doesn't really make any sense to have that for Python. But if you have a compile language, I think it's fairly easy to, we made it work for C for instance. So we don't use object-oriented code in Mirage. Most of the time it's functional code, very functional. But then when you have packets and you need to read bytes into the packets or to write bytes, you have immutable memory, so you use mutability here a little. Yeah, so we don't have the projects API because, so we had to make a choice of what we want to support. So we don't have threads in Mirage, for instance. So we have lightweight threading, which is very, which is threaded under by the runtime itself, but there is no support for really concurrent threading. It's everything is, it's cooperative. So every thread has to yield and another one has to take the thing, and when you are blocking, you can just start another thread as well. So it is one limitation. But the thing is, you don't really need that because you can just spawn two virtual machines doing two, like two processes, and you're using a message, external messages or memory, or sharp memory, to return what you're doing. But then what we, I can, I would explain it a bit later, but we have a type for what is an OS, not less, so when you need time, you need a notion of randomness, maybe, or entropy, and the thing is you can pick it if you need it or not, and depending on the backends, you will implement it differently. I'm not sure, I'm not very clear, but I will try to explain it later. Yeah. Yeah, so in Mirage there is no projects API, so yeah. Yeah, current yes, but then what you can do is you can have your very, so when you write something in Mirage, you hope that it is a thing which is very important to you, so it should be very safe and very efficient. But then you can use the GSE application inside separate VMs, and then we have libraries to communicate efficiently between the Mirage and the GSE application. So we have shared pages, for instance we can set it between the two VMs, and you have a very efficient channel there. So the idea is you don't really care about the POSIX or IBI compatibility, but you care about the high level API, so if it is REST or if it is the protocol API, not the POSIX one, but yeah, for now if you want to really use all of the Mirage stuff, you need to use the Camel, because it's everything based on that. Now because for instance if you have a small keyboard like that, and you want to save power, you will just turn off all the applications, and it will just consume no electricity at all, or very few electricity, and then when something comes on, you just start the VM and it will just serve the traffic. Yeah, small devices, yeah not for cloud, it's just a, but even if you are in a data center, you want to optimize as well the number of VMs which are running. So you want to kill the ones which are not really running and start it again. The thing is usually you kept it, well it was just an example to show that you can do that kind of stuff, because we control the whole stack, so you can just hand over the connection to the VMs. Anyway, I'll try to continue. We'll just try to explain how we write an application in Mirage now. So the first we start by just writing your code in the Camel, so you have to learn the Camel first, but if you come on Saturday morning, I will try to show you it's not so hard to learn. And then for instance, you have your application, which is here, the code for your application, and you are using a code for an HTTP server here, which uses the normal TCP IP stack on Unix. So here you just, the Camel code is just here and here, which is the application on top of HTTP and the HTTP server itself. And then you just do Mirage Configure and Mirage Build, and it will give you an application that you can run inside Unix. So you run the application, and then you can use the usual debugging tools inside Unix to develop your application. Okay, so now you want to be a little bit more fancy, and so you start to say, okay, no, I don't really trust the TCP IP stack of Unix, because it's full of C code and I don't really know how the portability issues have been done recently. And so I want to have a full stack in OCamel as well. So what you do is you just change the dependency to that stack, which is TCP and then IP, and then you use a turn tap inside OSX, for instance, or inside Unix, to just get the normal packets, and then the packet is handled directly to the stack and all the IP and TCP processing are done in OCamel. And the thing to do that, you just need to configure again. Well, you have to set up saying that you have an environment variable saying that you want to use the direct stack, and then you compile again, and that works. And everything works, you don't have to change any line of code to use the new stack. So now you say, okay, I don't really trust Unix because it's full, it's 15 million of offline of C code, and who knows what security holds there. So I want to write everything in OCamel, even the OS. So what you do is after the IP level, you just use the Xen, you have the Xen device driver, which are written in OCamel as well. Everything, even the boot loader is in OCamel, everything is in OCamel, and then you just have to trust the Xen implementation, which is still in C, but smaller than the whole Unix stack. And to do that, you just have to, again, to change, well, you configure with a different option, do dash dash Xen, and that will work automatically. You don't have to change any line of your application to do that. I will fix the example because they are wrong, but, so the idea is you write your application, your I level application once, and then you configure it multiple times. And everything happens via the OCamel module systems, and we build a tool which is called Mirage, which hides almost all of the complexity to the user. Right, that's just an example of that. So then last thing, well, next thing. So as I said at the beginning, one good thing about having very small OCamel images is that you can keep OCamel images or binaries, that you can keep the binaries inside version control as well. So you can use Git to version control your binaries, and then you can use the normal Git tools, the normal Git workflow, to deploy your application as well. So here what we do, so the main open mirage.org website is built automatically every time we commit some source code into mirage. Into mirage slash mirage-mirage.eu on GitHub. Then we have Travis CI integration services which builds the binary of the OCamel, and then we push using Git, the Git push of the binary to the mirage.eu.eu.eu-department. And then from that, we take the latest binary and we put it online. So the thing is you can just, and inside the binary, you have the shaguan of corresponding to it. So if you want to, let's say you develop your application, you want to tag a specific version, you just use the Git tag to tag the binary as the one which is currently in development. You can Git log to see the full story of all the events in the history of the development of your application. You can pull or push to update different websites with the same version of the whole thing. And you can revert to the later version using the usual workflow. Before I continue, just a quick question. Do you, well, do you know Git? Would, would, do you know, well, does nobody Git here? Do you know Git? Yeah, no. Yeah, who knows, sorry, who knows Git? Right, okay, so I, I would, so, yeah. So if we, and so if you use Git or GitHub, which is the main, well, which is the main central repository of Git projects and on the web, you can use it as a, as a getaway for all your binary deployment. And so it's a good, good, you can think of some workflows where when you start a service, it will try to pull automatically from upstream.  And then all the VM which are started using that version of the binary would just pull the new binary and apply the patch automatically. So it's very, well, it's similar to what you do when you have a DBL and you do a pretty good update. But the thing is using already the same tools as you do for the source code. So it's less burdened than to, less, well, it's very integrated workflow, which is very useful in practice. Yeah, everything, yeah, yeah, you need to rebuild everything, yeah. But the compiler is quite fast, so it's not, well, it depends, if you compile on the QB board, it's a bit slow. Yeah, it takes me like maybe a minute to build the whole website here. But usually it's very, very fast if you're on X86. Well, you, so when you push the binary in the, in the repository, you have the, what is interesting is the history itself. So it has a commit message. The thing that the binary is the one after this one. And then you can, in the commit message, you can say that this is generated from the source code at that address of this version. Yes, there are. But then if you want to deploy the application, you can just do git pull. Git pull and you get the binary itself. As it is very small, it's very quick. But then you don't, yeah, there is no diff, so you don't really, the diff is not very useful for the question. So yeah, so just, so as I said, you need to, every time you have a new version of the library, you need to recompile the whole unique channel and then take the unique channel and put it and deploy it again. But the idea, but what is interesting is as you get all the library, you can use a world program optimization to optimize it, to remove that code to do more inlining or stuff like that. Right, then with your version control, your source, your version control, your binaries, we say that, well, maybe that's not enough. We want to version control the data as well. So the idea is you have a big application with a big database, for instance, and you do some stuff and then you want to debug what happens. So currently it's a bit complicated to do it. You need to have a dump of the database, you need to manually try to reconstruct what happens there. But that would be very nice if you can just have Git as well. You can just do Git log and you see, oh, this process put something in the database and this one remove it. And then if you want to revert it, you do Git revert. So it's very, the normal, the usual workflow for Git is very well adapted for data as well. And so we build Hermine, which is a storage layer for Mirage, which is a key value store which runs both in user space and cannot space, and which is very similar to Git. So you can clone a database locally, you can modify locally, doing whatever you want, and then you can push back the results and you can create branches locally or remotely and synchronize between branches. So if you are familiar with Git, that should be very, just think about it as version controlling your data instead of the source code. And but you want to do that as a library, so you want to use that in your code and say, okay, no, I want to persist that piece of data, save it to the disk or save it somewhere, synchronize with this one and so on. I will not really enter in the detail of Hermine, but if you know, so yeah, basically, there's three different parts in the system, you have the object DAG, which is an apparently data store where you have blocks and the address of the blocks, the shower of the block, it's what is written here. So if you have your data, you can just serialize the data inside that object DAG, and we have different backends for it, it can be memory if you want to have transcend data or it can be persistent and persistent using Git directly. You might want to encrypt the data or keep it in context. And then you have another one which is a history DAG, which is just something which is put on top of the data, which you remind where you come from or you merge what is your branches and so on, which is as well apparently, so you can easily distribute it, and you can keep track of the history of your system there. So when you want to inspect what happened on your system, you just write Git log and you see, well, Git log or any other tool using that kind of stuff and you can see everything that happened on your system, which process threads added what's data at what time and why, really, so it's quite useful to do that. And then the user can define his own data structures and specify the map function between them, like if you have a log file and you want to merge them together, you just want to respect the timestamp on the log file and I leave all the lines together. So if the user has the ability to define the map function and everything will happen almost automatically. And then you have just the last one, which is immutable tags, which is the only immutable part of the system, which is you name the head of your system or less.  So that's the only immutable part of the system which is not distributed. So that's quite easy to think about concurrency in that city. So if you want to use it, you can use it as a standard tool as well as a library. So with different formats, which are, so I think the main interesting one is a Git bi-directional link. So you can use Git to modify your data and then the application will see the result as well. Or you can modify your data inside the application and Git will see it as well. And I have just a small movie, I'm not sure that it will work very well. Okay, that won't work. So it was just an example of, okay, so David Scott, which is a chief architect of ZenServer in Citrix, started to use Hermin to power a ZenStore which is a main database inside Zen. And so he used it and it was a video of the output of starting a VM and see everything what happens inside it. But okay, no connection, so that doesn't work. Right, any question related to storage, Hermin? Good. Next one is a TLS, so currently, so everything in Mirage is written in OCaml. So everything is type safe. You have memory safety, abstraction, everything is fine, modularity. And then when you try to publish something online, you have to rely on bindings to open SSH really, which is a kind of unsecure and safety code if you try to listen to what happens recently on open SSH. And so one of the motives of the people which did that is every line of C code is one line too much, one line too much, because you cannot really trust that line of C to not completely put garbage into your memory and corrupt everything. So David and Hannes, which are two very nice guys, which they were in Mir left in Morocco and they decided to, well, maybe they didn't really enjoy the bitch too much, so they decided to start hacking on a new implementation of TLS in OCaml to try to just learn about the protocol and they were saying, oh, it's maybe not so hard to make it work, but it was like six months ago or maybe a bit more. So they started to write the protocol logic in pluripfunctional style, which is a high level protocol, or it works, what is a renegotiation between key and so on, and then try to isolate as much as possible the side effects inside the front end, so when you read the packets or when you put the packets back. And so they tried to follow a very concise, useful and very well-designed IPI. So if you are not aware, so who knows TLS or SSL? Nobody knows TLS? So TLS, that's when you go to a new website and you put S at the end of HTTP, let's use encrypted, well the negotiation between the client or server is encrypted or is there a negotiation between the client and the server to set up a secure channel between the two and once the negotiation is finished, everything which you send on the channel is encrypted and no one can get the contents and intersect it and so on. And so if you heard about the health blood bug, which happened two months ago or three months ago, which is a very major vulnerability in SSH, which allow anyone to use HTTPS and requests to get a state of the memory inside of the server. And if you use it, you can read a lot of things on the server as credit card or whatever, so it's very bad. So you really want to be sure that that protocol is implemented correctly and there is no bug in it. And you don't really care about efficiency here because what you really want is something which is safe. So TLS, so that's something, at the beginning TLS is, well, it's written like, it's very old protocol, so 15 years old, more or less, and everyone is using it on the internet. And the only implementation that they use is OpenSSH, which is in C and which is very, very, very unsafe. There's a lot of attacks. If you Google for any of these attacks, you will see a lot of things. And so by writing it in the camel, we can avoid the go-to file because there is no go-to in the camel. Have bad because there is no, all the memory management is done by the garbage collector, so there is no, well, the memory is not unmanaged, so there is no what kind of attacks. So this is more like a logic kind of attack, so yeah. Yeah, yeah, yeah, so I will just leave it later. So yeah, so there's different kind of possible attacks. If you specify the different kind of attacks, most of the attacks come from memory issues, more or less, before the flow, or something like that, which are, well, OKML doesn't suffer from this kind of current because the compiler will ensure automatically these kind of things are not possible. So yeah, so if you don't have to manage a memory manually, it's easier. So there is no, so you can write TLS in a different, well, you can write that in different languages, and then you have to identify the invariant of the program using types and the types they show up, what is it, and the compiler will help you to ensure that it's safe. I won't say that, well, I will not say that there is no bugs in the TLS implementation, but there are bugs for, not known yet, but I'm sure there are bugs, but everything which is related to memory and to language construct, let's go to, I'm sure there are no bugs related to that. So the change cyphers suite is a more high-level logical attack, which are covered by the, by just carefully designed the kind of types you can use, which we hope to be secure against that kind of attacks, and then the timing attacks are very hard to, yeah, so in OKML and every garbage collecting language, you cannot be sure about that, and in CE and everything, so yeah, you'll never know about that, it's very hard to, so just some statistics, so just number of latin of codes doesn't mean a lot of things, but it's just a metrics, good metrics, well, maybe not a good, but it's metrics. If you look at what OpenSSL is using, it's, yeah, it's 17 million of code, 17 million of line of code, mostly C, which is a bit scary if you already done some C code in your life. I mean, usually you have between, yeah, it's one, every 10 lines of code, you have a bug, so that's very old code base, so I'm sure most of them have been fixed, but I'm sure there are still plenty of them in there. For OKML TLS, we have 125,000 line of code, which is quite big as well, because we still have 75K of C code, which is my needs of OKML runtime, which is maybe, well, which has, so there has been some effort to try to formalize it and to automatically, but yeah, we are, hopefully, there's no many bugs there. And then the results is, so yeah, but if I can go there, if I don't have any meta access, it will be difficult. So we have a live implementation of that, which is tls.sopenvillage.org, and I really want to show you that, okay. So if you connect to it, you will see that you will have a, I think I have, yeah, okay, so if you connect to that site, you will see that you have the full explanation of what happens between the client and the server in real time, and you have the, so you have the client send some messages and the server reply some of the messages, and a lot of things happen, and then you have some encrypted data. So everything is written in OKML, you can test it, and it has been, so now it is part of Citrix, more or less software, they are used by them, so they are monitored as the people which discover the health played bug to try to test it, to test it, and so they tested it for one week, and they didn't find any kind of security issue in there. So that doesn't mean there is no security issues, but it seems to work quite well, and all the development is done in a bit, it's open source, everything is open, and people can complain or just try to do some stuff. So it's survived, it's even survived some archive news, the font page for two or three days, and people are clicking and trying to access it, and it doesn't die, so I guess it's a good sign that it works. And it's still in progress to have a proper release. Currently, we don't really expect people to use it in production, because it's still like kind of prototype, but I think in one year it will be very, well, in a few months it will improve. So you can use it directly, what is very nice, I think is, so there are two main, or the two developers of that stuff, and they did it in six months, so I think that's a good proof that you can take any kind of protocol in the internet or any kind of application and do everything from scratch using the right tools and the right people maybe, but the right tools is the most important thing. Right, conclusion. So we released Mirage in July, Mirage 2.0, with a lot of different improvements. We are now part of the Linux Foundation and directly through the Xen project, so we got resources from there. If you want to contribute to our welcome, it's BSD code, mainly, so if you want to ask questions or to propose new stuff, we are very welcome to do it. If you want to use unique analysis, but with a different language, I'm sure a lot of people want to do that, you can try, other people try to do some kind of things like HALVM, which is a high-scale implementation. We are trying to share most of the C code, we are trying to share it at most as possible between the two projects because they are using as well Mirage OS for specific tasks and they are using HALVM for over once, but they are a bit complementary and we try to, so we are good friends, we are doing the same thing, but we are good friends, and we try to compare the performance and the abstraction cost. And if you like, I'm not sure, I never use Ling or OSV, I don't really know the status, I think they are still quite prototype and not very stable yet, so you can try it, but I'm not totally sure you can use it in the production yet. And if you have any ideas of small application that you want to use, feel free to keep in touch. If you think, yeah, just last slide and as I said, you are free to go. So while we do that, what we want is people to be able to write their own application and deploy it very easily on their own infrastructure. We really want people to claim back the digital life, what we say, we don't want the data to belong to Facebook or to Google, we really want everyone to be able to deploy a mail server on his home or whatever, that should not be too difficult. And currently it's very, very hard because you have to be an expert in mixed administration to do it, but if you have the right tools, it should not be like that. So we see Mirage as a basis for that. We want to have something which is easy to use for people and easy to deploy and we can rely on it easily. And yeah, that's it. Thanks for your attention. If you have any question, sorry. I was very, so. I think that's half of Linux already. The direct Mirage route, which you had spoken about, so who are the people, I mean, where can I get a host for that? So you need the Xen provider, so you can go to Amazon, Rackspace, any cloud provider, basically providing Xen, it's like 80% of the public cloud, so it should be okay. If it is VMware, it doesn't work yet, but it's not very, we need to find people to write the basics stuff, but it will not be very difficult. Okay, VM as well, it's really simple. So how many containers we can have on one host? So when you boot, one kernel is like, you need, okay, this VM needs 256 megabytes of memory, but you can squeeze it to 16, maybe eight, it doesn't need very much. So you can have thousands of them. It's very similar to processes, actually. So what we think is unicannons are the same thing as process, but for the cloud. Hi. Would you be having a shell or a file system? What all things will you be missing in this? So you don't really miss shell, because you can link with a custom ripple, and so you can connect to it, and then you have a full ripple inside the VM, and you can do your own, you can just use your normal language as a ripple, but inside the VM and do whatever you want. A file system, we have different implementation of a file system, we have FAT and FS, so you choose the one you want, and you link it directly, and that will work. Or you can just squeeze everything in memory and have no file system at all, it's AirMain as well, which is Git, so you really have to choose what you want.  So we have, at the low-level bits, we have a, so when you look at the protocol, large bit of it is how to serialize data, so read data from the packets, from the network, or write data to the network, or to the disk, and this is very, well, you have four loops, but you have to mutate the state there. So we have some syntax that can show you, what it can show you. Okay, so this is the TCP IP stack, for instance, if you want to see the wire. So we have some extension to describe, so we have some syntax to describe the thing similar to C, so you can say that this is a C struct, which are this field and so on. I just, what is the wire struct? So here, for instance, you design that, okay, so you have a type, you have a structure, which is Ethernet, we've got some fields to the side, so this is very just declarative way to say the thing, and then when you want to access or to read the field, you just call some function here, so for every field you have a set or a get, so this is very, very state folder. You have to read the data from the packet, and then once you build some I-level, so when you extract the data from the network, you build some I-level types, the data structure, and then you can use purely functional stuff on top of that, like, I'm not sure if this is very nice, but so here it's very, so that you have a monad, so you can have very I-level expression here. So concurrently, we use a concurrently monad as in our scale, where everything is inside, every I-O is in a monad there, here every thread is about monad and we compose thread together, so you have a bind and return, but that's I-level, and then all the logic is very, is more pure, so you just have to call function. Yeah, so we tackle, so the initial focus was to, on the network stack, so it was a network, and then we have storage back-end, so we have few implementation of some storage stuff, but then we don't really, we don't have any use cases for that intensive stuff yet. If you have ideas, I'll have it. Well, if you have no other question, I can, well, feel free to ask me the question later, and we'll sleep here, and I will have a tutorial, if you want to learn OCaml, I'm doing a tutorial on Saturday morning on OCaml, I think there are still seats there, I need to check, but so Saturday morning, morning, OCaml. Thank you.


Okay, very good morning to you. It is Wednesday 22nd of December and it is the final briefing of the year So I think first things first. I just want to say a huge. Thank you to everyone who who listens Who's liked a video who's left a comment? I super appreciate all the engagement And you guys following every day. So if you're new here welcome if you've been a long time Member of the community then once again, thank you very much And you know since we've launched amplify me back in September We've made some, you know, incredible headway on the new mission, which I'm sure you're all aware of now with some of the rebranding that we've done online and We've managed to start the market maker podcast and newsletter We've now got a community there into nearly 40,000 people and that's only over the last three months We've managed to help over 15,000 students take the finance accelerator Simulation from all over the world and we've managed to fast-track some of those candidates as well with some of our Institutional clients. So it's been an amazing couple of months. I'm sure there's going to be much more in store for 2022 We've got some exciting announcements already. We've been working on which has a set I'm quite excited to bring to you guys at the beginning of the year, but first and foremost Take care over the holiday period. Obviously, it's been a challenging year once again with the pandemic So I hope everyone's been safe and well and and hope you have a nice time with your loved ones and nearest and dearest over The coming week or so, but I'll be back and first week of January as per normal I'll still be tweeting over the holiday break. So While there won't be any YouTube videos pass say I will try my best I am going to be actually abroad for part of it But if I can and something really big does happen I will endeavor to jump on but I'll be tweeting nonetheless wherever I am So feel free to follow me on Twitter But look, let's get on with it and let's talk about let's talk about Bitcoin first and Yeah, I've got the chart up. Well, I've got the headline here Bitcoin snaps Slide with biggest one-day gain since November and actually you can see it here So this is looking at the 30-minute candlestick on the Bitcoin future And you can see here quite a big uptick that we had in yesterday's Overnight APAC session and we kind of held those gains They've just bumped a little higher to retest up towards the highs that we saw on the 15th of this month I'm just shy of the $50,000 level. So 49 500 at the moment Why exactly is this happening? Well, not a great deal really of of catalysts I mean one of the things is if you look at the downward move that we had seen This is looking more now on a daily Chart for Bitcoin. We actually peaked up around the 10th of November So it's only around six weeks ago or so and we've had a pretty substantial decline in Bitcoin as we have done in the whole Crypto space as we came off those kind of record pushes that we saw in October And we've declined around 34 and a half percent to that low So finding a bit of a flaw and as you can see here from a kind of technical perspective This trend line going back to the low we printed at the beginning of August to then support through The latter point of September kind of playing out so far as we move back to the 50k margin One of the things though I just wanted to flash up was kind of the year in review really for Bitcoin Because it's been a it's been a very much a big year for the crypto space seeing more broader adoption both in the Kind of I guess conscious of the public with people like Mark Zuckerberg bringing metaverse and web3 and the potential That that brings for the decentralized space and crypto currencies But also adoption in an institutional sense We've seen obviously the ETFs come out from pro shares and Valkyrie and so on that definitely contributed to a lot of the push-up in price to the Then resulting record high that we saw in Q4 of this year I've we saw that really big push-up from around 40k up to close to 70k through that September October period But you know going back to begin the year if you can believe it coin base It seems like it's been around forever But that listing was only actually towards the back end of Q1 of this year We then had Musk's comments on Bitcoin greenness and the concerns that he was suggesting So this came irrespective of the fact that he talked about the adoption of using that for payment terms Then you had lots of the PBOC Chinese government lockdown trying to Make sure that things like Mining and other just general things that the Chinese have been doing their government to restrict other types of measures Across broader sectors really weighed on the crypto space We actually kind of saw a flaw of around 30k in the summer And as I said got up to around the 70k mark and now we're residing at around 50 Question to you guys though, and I don't want to see your answers in a comment below on this video And that is where do you think Bitcoin is going to trade this time? 2022 12 months from now or she'll call on Bitcoin. So I'll drop my call on the video as well I'll try not to be too anchored to the guesses that you guys put down So I'll endeavour to put my of my Forecast first, but yeah, hit me up. Let me know what it is that you think where Bitcoin is going to be this time next year All right. Well look back to the broader charts on the kind of global macro perspective You can see here. We had a pretty decent rally on Wall Street yesterday really Little dip at the open and then a drive thereafter and post the European exit markets Just continue to move to the upside. So actually we had a pretty solid finish on Wall Street The technology heavy Nasdaq outperformed it was actually up about 2.4 percent gains around 1.8 the S&P 1.6 and the Dow Some of the bigger movers Micron tech they were up around nearly 11 percent on an upbeat forecast Nike I'm sure you read quite a bit about they were up over 6 percent rallied as revenue in North America increased Offsetting a bit of a drop that they've seen in China other notable news elements that you might be aware of Were some of these which were President Joe Biden said he still has a chance to strike a deal with Democratic Senator Joe Manchin to get his near two trillion dollar economic plan through Congress again the delayment of that was was one of the contributing factors that led to some of the weakness a few sessions ago and The dust kind of settling a little bit on Nervousness around the Omicron situation We also saw yesterday Pfizer and Merck closed off their session lows as Bloomberg reported at US FDA set to authorize the pills To treat coronavirus as soon as as this week as well On the COVID side AstraZeneca said yesterday They're also working with Oxford University to produce a vaccine for the Omicron coronavirus variants are just becoming the latest Vaccine maker to join the rest looking to develop variant specific viruses going or vaccines going forward Otherwise the other major news that you might have seen yesterday. It's been a lot of speculation about what might happen to the UK in regards to lockdown and The Prime Minister came out yesterday and basically said that no new restrictions will be brought into England before Christmas But Boris Johnson did say that ministers cannot rule out further measures after the 25th of December with Omicron spreading at a speed Never seen before Add in the government will continue to closely monitor the data I would not hesitate to act after Christmas if needed my view on this from the situation of strategy from government Is that I do think that even though numbers seemingly from a case perspective are starting to plateau a little bit around that kind of 90k mark on a daily basis I do think that He doesn't really have a the political power to enact any type of measures before Christmas He doesn't have the time to do that as well given the procedural way that this needs to be voted for through Parliament And the result of him doing that now given The pushback that he's had was already the the likes of the passport vaccine passport rules and so forth it would be politically Almost suicide for him at this point in time So do I think he's going to enact more stricter and go to that kind of step-to-approach from the previous format of Restrictions that we had which increases things like mixing and social distancing and things like that. Yes I think that will come on the 27th So people will have their Christmas But then thereafter because generally that mixing then is probably going to see then the aftermath a bit of a pick up Again of of renewed cases like we've seen in the past And so probably those measures will be adopted But it will allow people to have Christmas is is reasonable estimate I would say terms of the impact that would have on sterling I don't actually think it's probably a great deal to be honest because a lot of this I think is is to be expected so really it's about tracking the coronavirus and Ensuring then that it doesn't get more materially worse than what we're already kind of forecasting at the moment As you would have read a lot of the scientific advisors Whether from Imperial College whether from sage so forth. They're all pretty bearish at the moment anyway So we're already pretty positioned for a fairly Negative outcome and at this point the kind of incremental step-downs in or step-ups I should say in restrictions that would come if it were necessary I think allows the market to kind of acclimatize in a fairly graduated fashion So I don't think actually a move to step two would come as a great Did a shock and I wouldn't really look for a massive move in sterling on the back of that in that between Christmas and New Year period if that was to materialize it really depends if they were to see Very aggressive measures, which I don't think Johnson can do anyway politically Then it might be to the contrary and it might be more aggressive move to the downside for sterling All right a few other things it is generally quite quiet I'd say markets over on a cross-asset class basis of Fairly reflexive of the time of year and given the calendar is pretty quiet today And for this week really we've got core PCE tomorrow from the US It's just probably the only final highlight, but again volumes decreasing Markets have seen some decent action last couple of days, but as far as this morning's openness concerns It's pretty slow going the other story just to bring to you is about Russia And the reason for that is in the geopolitical front Putin I said that Russia has no room to retreat in a standoff for the US over the Ukraine situation And would be forced into tough response unless the West dropped its aggressive line And of course Russia rejecting Ukrainian US accusations. It's preparing for an invasion of Ukraine As early as next month in the new year now What's quite interesting here on the back of this the kind of hook is that? European gas prices are seeing some volatility again. You remember a few months ago This is when we saw that really sharp Acceleration in prices when we had that whole fuel crisis particularly evident here in the UK that you saw and One of the things here is that European gas prices are surging back to record high levels as flows from a key Russian Pipeline stopped and that spook buyers This was yesterday that been scrambling to secure supplies during a deepening energy crunch that we've been seeing on going for a couple of months The latest price rally comes after flows from the YAML Europe pipeline one of the three routes Russia's state-owned gas prom uses to supply natural gas To Northwestern Europe. It stopped as temperatures plunged in Moscow and gas prom decided not to book export capacity Context more than a third of EU's gas supplies come from Russia But the year in flows have fallen and of course this has led to many politicians in Europe and industry experts Accusing Russia of withholding supply to press EU leaders to approve the controversial fourth pipeline That being the Nord Stream 2 so there's a lot of layers to this energy onion and Yeah, just interested to see how how this goes because this then does trickle down the effect to the consumer and us and our energy bills as well at a point where We're at at the moment, which is already pretty pretty tight on the kind of the average consumer Given the inflationary conditions. We've been seeing throughout this year All right in terms of the actual calendar It's pretty slow going as I said you've had UK GDP numbers But these are kind of Q3 prints and they're very very dated a bit stale now The quarter on quarter print came in at 1.1 against expected 1.3 percent year on year 6.8 against the expected 6.6 No real much movement in sterling to be quite honest although cable is touching up and around its APAC highs at the moment Otherwise as far as the session is concerned We get the final Q3 reading as well from the US expected print at 2.1 again It's pretty same case is what I described there for the UK But then you get US consumer confidence existing home sales coming out at 3 You've got your DOE energy oil inventories at 3 30, but that is it. So once again, thank you for watching If you have done for the first time all throughout the year super appreciate it and yeah, take care Stay safe. Have a merry Christmas and a happy new year. Thanks guys