We just got massive Yu-Gi-Oh news and we're going to be talking about it right now. What's up guys we're back with another news video and this is a video that I did not expect to be making because we've got new releases coming out. I was expecting all the battles of legend monsters revenge opening stuff like that. By the way we do have a video up today. This is a double upload today. I know it doesn't happen very often but go check out that opening video if you missed it. It's a fun one and uh it's a great set. And one of the reasons it's a great set is because it has awesome 25th anniversary rarities. So how about we get even more awesome rarities in the TCG coming up for 25th anniversary celebration. Now this might not come as a huge shock that we're getting this because 25th anniversary we gotta celebrate but to me I'm honestly still pretty shocked because we never get cool products like this. And what product am I talking about? I'm talking about 25th anniversary rarity collection. If you've never heard of rarity collection the OCG has had this for a while. They've had three or four different rarity collections. I think it's three. We've opened a few of them on the channel and they are some of the most fun sets to open because they have collector rarities, ultimate rarities, you know ghost rarities, all this crazy stuff in them that you could pull all from the same set and almost every card in the set has one of those rarities. And yes we just got one so here as you can see on the screen now we have an update. So we're gonna go through this together and figure out what exactly we're getting. I haven't completely read this but I do know that ultimate rarities are involved which is gonna be pretty insane. Let's see what else we get in terms of new rarities. Maybe we'll get some updated rarities or something like that. So in November you can finally get your hands on two new card technologies that have only been available overseas until now. Two new card technologies that's awesome. Okay what are they? November. I thought it was September but I guess November that works out well as well. The 25th anniversary rarity collection is a spectacular all foil set so I think it's usually five cards you get like four ultras and then you know with some rarity. With 79 of the games most popular cards that is what I want to hear. Each available in seven different rarities. Every 79 cards in seven different rarities. You guys understand what this means. Every card in the set could be seven different rarities. You know how exciting that is? That's why I love rarity collection. You can literally like get one as an ultra or one time and then you're like oh wait now I can get that in any rarity. I really like this card. I'm super excited to try and pull in an ultimate rare or whatever other rarities there are. And then there's two brand new which I can't wait to see. Here are the rarities. Super rare. Okay not that crazy so I guess it's not all ultra rarities. I don't know. I guess it's supers minimum. Ultra rarities. Okay not that crazy secret rarities. Yeah I wonder if they're prismatic secrets. I hope they are. That'd be really cool but they might not want to take away from the you know the megatons so they're probably regular secrets if I had to guess. Then we have more secrets. The quarter century secret rare sell them in the 25th anniversary. Okay that's cool. We've gotten a few of those. A lot of people like those. I think they're pretty cool looking. Platinum secret rarities. Oh Platinum it's back. We haven't seen these since the megatons. These are very controversial rarities. A lot of people don't really like them. I've always thought they look really really cool. I'm going to pop up on one up on the screen right now so you guys can remember what I'm talking about but they're like very shiny. They're kind of like pre starlight rares but they're in platinum effect. Okay I'm actually super hyped about that so there's going to be 79 new platinum rares.  Let's see what else. So here's the new ones. New prismatic style collector rares made with extra sparkle. This is the same as the Japanese collector rare technology previously available only in Asia. We are getting collector rares like in the OCG. If you guys have not seen my OCG openings it seems some of the collector rares that we've gotten out of there. They are absolutely absurd. Go check out my Japan video where you open up a rarity collection and there's some really nice collector rares in there. I think these might be the newer version though which you'll have to check out a newer OCG opening. That's exciting because the collector rares here are you know they're all right. They're kind of cool. The ones in Japan are absolutely beautiful and guess what they're not just Japan exclusive anymore. We're getting I'm super excited. What's the last rarity the new one new prismatic style ultra rares prismatic ultra rares raised 3D varnished effect same as the Japan ultimate rare technology previously available only in Asia. Wait so these are the ultimate rares so they call them prismatic ultras. I think these are like the really shiny looking ultimate rare so like the updated version. I am a huge fan of these.  Here's a picture of it. It's a very very beautiful card and it's not like old ultimate rares at all but it is really cool and unique. So I don't know how you guys feel about that. Let me know down below what you think about these rarities that we have coming. Are you disappointed it's not the old ultimate rare. It's not like the middle ultimate rare with like the sparkles on the edge or anything like that or are you super excited for the OCG. I know it's a controversial rarity because when I posted my blue eyes jet dragon said it was awesome.  I want the old ultimate rare so let me know what you guys think. I want to see the consensus about these new ultimate rares. Personally I'm hyped about them because I wouldn't be opposed to having the old ultimate rares back either because I think they're really awesome but the new ones I'm a huge fan of as well so I'm super excited for this and the coolest part about this guys is that 79 cards are getting these rarities. This is gonna make searching for specific cards for me so hard. It's gonna be insane. I think you get one like usually get like at least one every box so like I guess 79 box maybe we'll do 100 box opening. That's gonna be crazy. November is gonna be awesome guys. Hopefully these are like wow that's gonna be like a $10,000 opening. Wow that is expensive. Okay wow we are gonna be hurting on the wallet so if you're excited for that make sure to hit the like button subscribe to the channel because that's coming up in November. I cannot wait to do that opening. That might be the most fun opening we've ever done on the channel. That includes like old school openings and everything too. I can't wait to see what's in here. Let's just keep moving on. I'm taking too long. Watch as your cards sparkle shine and gleam and rarity so luxurious that you will be the envy of every duelist. Oh yeah I can't wait to be the envy of every duelist. Go into your next tournament. Well prepared for the competitive main stage. I can go into any deck like Ash Blossom and Joy Springs. That's gonna be crazy. Ash Blossom. Okay no go-sharing here notably. Still no ghost. Ash Blossom or Starlight. Very interesting. Nibiru the primal being. Okay effective at infinite so that's like all the hand traps are getting this. That totally makes sense that those are getting like those nice reprints. That's cool to see. What else can we get? Unlock the full potential of extra deck with Baron the Floor. Wow I literally sold my collector rare right before this. Oh my gosh that is crazy. Borrelode Savage Dragon. I mean it's gonna be a different collector rare so it's like kind of a different card. Borrelode Savage Dragon. It's so really cool though. Fans of the anime will get a chance at attaining the Egyptian God Slime. Okay that finally gets a reprint. So the Egyptian God Slime is like a $50 ultra rare so it's about time that thing got a reprint. Where are the old school cards? I'm looking for some old school cards and you can add some of the best spell cards in the game. Cards you won't remit like Pot of Prosperity. There's the Pot of Prosperity reprint, Triple Tack, and Forbidden Jaropla. Those are all really nice stable cards. This is usually more of a staple set but I'm expecting there's some like crazy old school card in here as well. And in a special twist the structure of these packs is like nothing you've ever seen before as each pack says a chance to get one, two, sometimes three of the new luxury rare technologies. Oh so it's I might not have to open a hundred bucks. I probably still will but I might not have to. Two super heirs. Once you grow a oneth with a one and four chance of being a wait one and four chance of it being either a platinum or a quarter century in every pack. Wait these are actually going to be like not that crazy to pull but there's 79 of them so it makes it crazy to get the specific one but in terms of like getting a crazy rarity it's one and four packs. I'm guessing this will be a 15 pack box if we do it like OCG but maybe we do a 24 pack like we do. I don't know we'll have to find out if we do TCG 24 pack OCG 15 pack. I don't know this is going to be crazy either way. And with a one and four chance that'd be like if it was 15 packs it'd be like four of them would be a platinum or a quarter century. That's crazy. Then there's two ultra rares each of which has a one and six chance to be prismatic style collector rare or prismatic style ultra rare. So if it's 15 one and six I'm guessing it's 24 based on these numbers because one and four goes in six times into a box so we probably get six of those platinum secretaries or quarter centuries and then one and six would go in four times so we get four of either total the collector rare and the ultra rare ultimate rare thing. They're calling it ultra rare here. I guess they don't want to offend people by calling it ultimate rare but they kind of did call it ultimate rare it's like basically the same thing. They have at least in the OCG so interesting to see that. And with every card available in every rarity you can collect matching copies or mix and match the rarities of your favorite card. Oh my gosh this is huge news guys this is going to be so crazy. This is one of the most exciting updates we've had in a very long time and we've had some crazy updates this year like this has been a really fun year in terms of the 25th anniversary but I can say without a doubt this is easily the best thing they've done for the 25th anniversary so far that includes booster boxes of legacy things that includes 25th anniversary legendary collection that includes boughs of legend with 20 different 25th anniversaries this has 79 new cards with high rarity guys 79 okay I think I've harped on this enough I'm super super excited make sure to let me know down below are you hyped about this what do you like what do you dislike I mean if you dislike something here I'm not going to judge you but like come on guys this is so exciting just let me know your opinions I want to see them and don't forget we already posted a video today if you have not seen it yet I don't want this to kill my other video probably will but I'm so excited about this we got to post it go check out the battles of legend monsters revenge opening we had a good pull by the way I'm just going to say that so go check it out it will be in the end screen and thank you guys for watching this it's been awesome I'll see you guys for more epic content tomorrow shout out to Tom foe show Daxer JT show puffins of doom Ernesto D and I'm the cycle America doidster supreme stage 21 and under tide show Ian Musa junior barding and mimic echo thank you guys for supporting the channel and I'll see you guys in the next one peace


and if I go into the reports, I don't think they have any budget reports at this time. So if I was to search for a budget, there's nothing there because they haven't set one up. So let's go through the process of just setting up the budget and then look at the reports that would be in place. Now note, when setting up the budget, it's not something that you're typically gonna wanna do just solely in QuickBooks, usually. What you're gonna wanna do is export the data from QuickBooks, possibly from the prior year, I would say to Excel, and then calculate your budget and make changes about what you think's gonna happen in the future, and then I would go back in and import the budget that you have created back into QuickBooks. Why? Because QuickBooks has those reports, especially the budget versus actual comparative type reports, and that's what QuickBooks is gonna be quite useful for. So for example, we have our two forms up top, a balance sheet and an income statement. Normally when we're first thinking about a budget, we're thinking about the performance statement, that's gonna be the income statement. So when I'm thinking about what's gonna happen into the future, we're trying to think about performance oftentimes, it's kind of like if you were trying to see how far you can drive your car in a day, you could say, okay, this is how far I drove my car in the prior period, in this case, the last year, meaning the income accounts are going up over that timeframe, and then you're gonna reset the odometer and say, okay, what's gonna happen next time if I set the odometer back to zero and I drive it for another day or another year, how far am I going to get? Your first thought would be, well, you're gonna get about the same distance unless you change stuff. In this case, you're gonna change stuff possibly like the budgeting, possibly the economic environment is different and so on and so forth. So your starting point will typically be the prior year's profit and loss. So your starting point might be to export this profit and loss, and we'll talk about this a lot more in a budgeting section or course in the future, but just to get a general idea, you might export, say, this profit and loss to Excel, or you might break it out on a month by month basis, and I can run it this way and then break out your information on a month by month basis to Excel to get a little bit more detailed or else you can just take the totals and basically divide them by 12 as kind of like your starting point and then adjust, make your changes from there in Excel and then take that information from Excel and populate it back into the QuickBooks system so that QuickBooks can then run reports as actual time passes to compare what actually happened to what happened in the budget. Okay, so that said, let's go to the tab to the right. Now also note, you could do a budget for the balance sheet as well, but QuickBooks doesn't have as much capacity to do the budget for the balance sheet. The balance sheet would be where you're going to stand at the end of another year, for example. So if this was where we stood as of this point in time, December 31st, 2022, and then we decided that we used this information to budget what we're gonna do in 2023, then I can think about where my balance sheet would be, where would we stand at the end of 2023? And we can also think about that on a monthly basis. To make those projections is a little bit more complex on the balance sheet side of things to actually fill out the balance sheet. There's multiple ways that you can think about doing that, but we won't dive into that in detail. We're typically thinking about our performance statement, the income statement in here when we're doing our QuickBooks budgets.


All right. Thank you everyone for joining us for today's live webinar with CNCF, AKS, and Spin Integration. I'm Lydia Schultz and I'll be moderating today's live webinar. I'm going to read our code of conduct and then hand over to Ralph Squillis, Principal Product Manager Azure Core upstream at Microsoft. A few housekeeping items before we get started. During the webinar, you're not able to speak, but there is a chat box. Please go ahead and pop your questions in there as we go Ralph is ready to get to your questions. This is an official webinar of the CNCF and is such a subject to the CNCF code of conduct. Please do not add anything to the chat or questions that would be in violation of that code of conduct and please be respectful of all your fellow participants and presenters. Please also note the recording and slides will be posted later today to the CNCF online programs page at community.cncf.io under online programs. They're also available via your registration link you use today and the recording will be on our online programs YouTube playlist. With that, I will hand things over to Ralph to kick it off. All right, can everybody hear me? Okay, somebody give me a thumbs up or the equivalent of a thumbs up in the chat just to make sure we're doing okay. All right, we've got one. That means we're doing okay. Thank you very much Libby and I'm really, really pleased to be here. The high order bit is talking about web assembly and seeing how easy it is to get started and make things work. But we also want to talk about the areas where web assembly is difficult so that you're aware of them, don't get frustrated when you bump into them and so forth. And we can also talk about the future of these areas, like when will they improve, when will this be super ready to use, where you won't even think about anything and so forth. We'll just cover the whole gamut and we'll also talk generally about web assembly itself and the component model. These are the questions like why we do these things and so forth are very, very important as engineers and as people in the business of software, depending where you are in the entire ecosystem of the world. Sometimes the business questions are more important than the engineering questions and sometimes the engineering questions are more important. Business questions and those are very different things. So we can talk about those kinds of things as well. And I am going to walk you through a good portion of the spin Fermion workshop that we did collaboratively with the Fermion team at KubeCon in Chicago just to give you an idea of how easy this is. So I did drop a link into the chat but I'll reiterate it and I'll see the links when we get to the demo part of the session. And so you can actually install this and follow along. It's really easy to do. It takes about maybe five, ten minutes to set up your machine depending on whether you have Docker, desktop installed, depending on whether you need to install spin, 2.0.1. And also things like let's see what else. The language that you intend to use. And so we'll go through those various areas. We'll build a couple of languages and we'll also show you the difference in performance which is really, really critical between native spin modules with different languages because different languages have different performance characteristics. We'll show you that. And also the comparison between WebAssembly, standalone and things like containerized WebAssembly, like in Kubernetes. Very, very different experience. And there are little bits of overhead there that are important to be aware of. All of these are just normal engineering differences. They're not a result of anything going wrong. They're a result of very different choices at the engineering level, at the technical level. So let's get started. To do that, I've got a little bit of an introduction on WebAssembly. I want to make sure that we're all in the same boat, more or less. And let's see, I got that started. So let's go back to the webinar page and I'm going to share my screen. And then first you're going to get Inception. And then we'll jump over to the actual screen. So we're going to do the entire screen here. In theory, that should be okay. I'm going to hide my screen. We now have Inception. So I'm going to go over here. And so in theory, everybody can see AKS and Spin, 101 to Zoom. So we're going to go from the very beginnings all the way up to burning a whole bunch of cores really fast. My name is Ross Vellacci. As Libby said, I'm on the Azure Core upstream team. I'm also the Microsoft board member for the Bite Code Alliance Foundation. That foundation provides the legal and engineering resources to ensure that more than, I believe now, more than 2,000 developers are in the ecosystem that we know of messaging, communicating, and committing. It's quite a substantial group of people, all of whom are committing to one of the repositories, things like runtimes like WebAssembly, MicroRuntime, or WAMR, and WasmTime, in addition to all the tooling necessary for the WebAssembly component model. All of that work ends up, if it's a specification, ends up in the W3C, or is a tool that is generally available for anybody to use. We'd love to have you do it. So here's the abstract. This was on the front page of the site for the webinar. But first, we're going to talk about WebAssembly itself. And then we're going to talk about how you make these things into Kubernetes. And then we're going to actually do it. And we're going to use Spin because it's really one of the more fantastic serverless platforms to run WebAssembly. And we're going to show you the differences. So first, let's talk about why we do this WebAssembly thing. The problem space that we're in doesn't initially seem like a problem space unless you've been really working on containers for a while. And it also doesn't seem like a problem space if you've been doing native code. Like, especially in particular, there's a lot of artisanal native code still on the edge, like not in hyperscale cloud native, not in Kubernetes, for example. And both crowds might think this isn't really a, they don't really have a problem. There's so many things that they have yet to improve on. And that's probably true. But for a lot of people, we've been working on containers for 10 plus years now and Kubernetes for quite a while. And what you realize is that you want to do things with containers that are really, you just can't do. And a lot of them revolve around the fact that containers are essentially too much VM-ish, right? And we'll get to what that means. So before we get to that, though, we want to talk about the core feature set of WebAssembly. And the first one is that it is actually essentially a cloud native binary. If we think of containers as sort of a cloud native application, that's the way we sort of thought about it for a while. But it's really a cloud native operating system with an application on it. WebAssembly is extremely small. It's essentially a binary format for an abstract virtual machine. And as a result, you compile it to a binary. Like, you compile to a WebAssembly module. It's very, very different than the Docker container experience that we're used to with containers, for example. And it also makes things very small. And I'll give you an example. So, and you're thinking about containers, some of the containers are very, very large. That's not really the important thing. Those do get smaller. But let's take a very small container, like a Go language container that we have. We were compiling one of our Go language operators, which is only about 12 megabytes. And we compiled that down to WebAssembly and we got that down to 176 kV. And that's a substantial reduction. If you have a big language with a big runtime and things like that, the reduction might not be so much. But at the same time, something like .NET, for example, which is a substantial runtime, can be contained at about 50s, 50 or 60 megabytes for a very optimized container. But compiling down to WebAssembly, we immediately dropped within the realm of 10 megabytes. And we believe we can get it down below 5. And so there really are scales of difference between size here. The second bit is that we have a by default deny security stance. And we had to have this because WebAssembly was born in the browser. Was it born in order to enable complex languages, advanced languages, C and Rust and other languages like that, to compile and be able to host in a JavaScript engine? And it turns out it works really, really well. But to do that, the browser has to have complete control over what the module is able to do. And that means the browser, the host of WebAssembly, is able to opt in to behaviors that the module may wish to perform. Unlike containers where you have direct access to the kernel, the container essentially can be prevented from doing things in the kernel. But otherwise, the container believes and by default has access to the kernel, which is an extremely large surface to attack. And so that becomes a very, very difficult thing to secure, even though the industry has made tons of changes. The other one it has to do with portability. WebAssembly's language agnostic, as in abstract virtual specification, right? Any language could, in theory, compile to it. And many, if not most, do in some way, shape or form for better or for worse, depending on the languages. And I'm expecting some questions about that kind of thing. I'll be happy to discuss it. But it's also OS agnostic. Think about running inside a browser. You'd have to be able to run on Windows and on Mac and on Linux and things like this. And so the operating system can't be relevant at all. So it isn't. And that allows one module to move from one operating system to the other. And finally, it's CPU architecture agnostic. Think about, again, browsers. They have to be able to run on ARM. They have to be able to run on AMD. But more importantly, they often run on very strange chips indeed. And so as a result, so does WebAssembly. And that language OS and CPU agnosticism, if you will, can bring it to almost any location because it's very small. And so it's location agnostic. You can run it almost anywhere. So these are the key feature sets. But what do we mean really? What is WebAssembly, right? And why? I've stolen this keynote slide from Luke Wagner at Fastly, a distinguished engineer there, and a key designer and contributor to the component model of WebAssembly. And the link, you'll get this deck. And the link is the YouTube keynote from WasmCon, which was in September. And Luke laid it out like this. WebAssembly is a binary instruction format for a stack-based virtual machine. And that's abstract, stack-based virtual machine. In other words, there is no physical machine that's designed this way. You need a runtime to present this machine to your WebAssembly and execute. And Wasm, then, is designed as a portable compilation target. So you shouldn't think of it so much as a virtual machine in the sense of hypervisor, right? It is a generalized virtual machine. But the specification for executing one is not a hypervisor. It's, in fact, a WebAssembly runtime. And from the language point of view, you should be able to compile your native code directly to WebAssembly to get the advantages of WebAssembly, portability, OS, language, and runtime agnosticity, and so forth. So how does that look like? So if we think about regular languages that we use in developer, right, Go, R, JavaScript, C, C-Sharp, PHP, Java, all of these things, right? Normally, they would be compiled out to a specific operating system or a specific architecture like you see here. And some languages that do interpretation, like Python or JavaScript, will have, actually, the compilation target will take place inside the JavaScript runtime. It'll be parsed and interpreted or ahead of time compiled for the specific operating system and architecture, right? So the glory of WebAssembly is that because almost all languages can target it, you could compile directly to WebAssembly. And if you did that, a browser or a Wasm Engine or a Wasm Engine on a phone or a browser on a phone or a device can, in fact, automatically handle the translation between architectures and operating systems for you, which means your language can be compiled once and can run in all of those places. Now, that's a very interesting experience, right? And Luke had said the wins are portability, determinism, and control flow integrity. And those two determinism and control flow integrity, those have to do with the fact that the specification for WebAssembly does not allow arbitrary creation of memory. And so things like go-tos and infinite loops and so forth don't really exist. That's actually a good thing because it means you can programmatically examine a module or even test a runtime for conformance to ensure that the sandbox is not broken out of or that you're not leaking memory anywhere or violating somebody else's memory. And that's really cool. And that, along with the specification for a sandbox, which was required for browser hosting, as you can imagine, gives us the ability to start and protect any module from the memory of any other module or the host. And do it lightning speed. This is really fantastic. So my modification, this is my modified version, is the wins are portability, security, size, and speed. By default, nobody can do anything with your module. And to get an idea of what this really means, if you think about last year's log for J issue with malicious code that basically assumed it had operating system-wide access. But if you didn't notice that it was compiled as a dependency for your application, it would go ahead and use the operating system to exfiltrate data and credentials. That can't happen in WebAssembly by default. You can only opt into that ability. And that's something that you can control. But in a container environment, it's very, very hard to do that, a priori for all the containers you wish to run and all the dependencies therein. Okay? So when we get concrete, what you want is a list like this. This comes from a presentation I saw that was actually pretty good. And you can see that for several aspects, WebAssembly might be several megabytes. In reality, we target for well under a megabyte if we possibly can. And it depends what you're trying to run. If you're running something like a Postgres server in WebAssembly, it might be more than a several megabytes. But if you're running a serverless function, it might be as little as several hundred kb. And that's fantastic because it's really what you want to target. Container, on the other hand, extremely large and laughing at the hundreds of megabytes because they routinely see containers that are well more than a gigabyte. And still fully functional as a service because the developer doesn't have to pay for the big network and the big machines. And if they don't have to pay, they don't have to optimize. And so there's really kind of what you might call a disciplinarian operational mismatch there. Startup time for WebAssembly used to be referred to as milliseconds. That's not actually true. For a no-op WebAssembly, you can start from cold and enter a WebAssembly function in low nanoseconds. And you will see that milliseconds start up time is actually not considered very good. We're actually going to show you that. And I'm going to describe the problems with my machine that result in mere microseconds instead of nanoseconds. It's possible that you can get into the nanoseconds yourself with spin. Containers start in seconds, but the bigger they are, the more those seconds stretch out into even minutes. But they're still much better than VMs. In performance speed, WebAssembly is usually said to be kind of about 10% of native speed, but it really varies on what you're trying to do. If, in fact, you want to run at native speed, you can certain kinds of workloads, especially if you ahead of time compile. But you're not really going to get close to 10% of native speed if you're doing all kinds of heavy work that WebAssembly is not really leaning into yet. So WebAssembly also runs in the browser, cross-platform portability is extremely high, all the standards are in W3C and OCI, and also the CNCF. So we're going to show you the RunWazze project in container D. And system interactions, we use Wazze or the WebAssembly system interfaces or standard interfaces to model and underlying OS and virtualize it. And we'll show you a little bit what those mean later on. This isn't exactly, as you can see, the current way of interpreting, but it gives you some idea of the differences that we're looking at here. Now, what and why this WebAssembly thing? Let's get back to the whole VM-ish problem. So what do we really mean with that? So what we really mean is that essentially VMs were a tremendous advance on bare-metal code, code that was native, running on a bare-metal installation of an operating system. And that code was built and created, especially if you're talking about Linux and open-source code. Often the core code bases were created 20, 30, 40 years ago. And what we're doing is bringing forward all of the assumptions that that code made. And much of our security and supply chain issues that we're dealing with now in the container ecosystem really are a result of the fact that all of that code assumed it had full OS permission. Everybody loves root. If I could get my daughter to behave properly when I called out sudo, I would love that, but that's not the way humans work. And it really isn't actually the way we want code to work in the future. It is true that containers essentially sold themselves based on like containing an application, but that application was actually bundled up with an operating system in it as layers and so forth. And the only thing that was really shared was the kernel. And that meant that the assumptions of the code you brought with it were essentially the assumptions of full operating system permission. With containers, if you don't have to boot the kernel, you come up pretty fast. And that's really nice when you're comparing yourself with VMs and so forth and native code if you had to boot the OS in the beginning. But in reality, these features really impact Kubernetes. And it turns out that Kubernetes is limited in its usage scenarios, not because Kubernetes has any inherent problem, but because the features that you need are not container features. So to make Kubernetes useful in more scenarios and at less cause, what you really want are smaller, excuse me, more responsive clusters. And that cost, that will drive class down. And by smaller clusters, you'd like to be able to have fewer nodes. You'd like to have those nodes running on smaller SKUs, for example, or maybe even an ARM SKU. So that, in fact, you can pay 20% or 30% less, depending on where you're doing your cloud hosting, for example. You'd also want to run clusters in small heterogeneous spaces. Maybe you're a restaurant and you want to run one cluster with one node for each point of sale cash register that you have. Maybe you want to just have a serve HTML5 and push buttons. And a regular Kubernetes distribution doesn't really lend itself to that environment. There's very little IT support. It's hard to keep things running. And so when you do, you want something that's a lot more flexible. You also have older machines. You have different architectures. Not everything's the same and your networks are weak. So you can't use a big, huge container. So that's really important. WebAssembly helps address these situations and it brings Kubernetes to new places where otherwise you wouldn't expect it to appear, if at all. And finally, you can ignore nodes and pods and let the ops team choose SKUs. Now, the interesting thing about this is that it's hard to know what that means until you see it. And I'm going to show you in just a second. All of this stuff I'm talking about right now is purely open source. It's the best of the CNCF. Container D is the vanilla shim with Run-C inside. And there is a Run-Wazzy shim project there, which you can use. And we're going to show you how that works in a little bit. And most of the WebAssembly stuff that we're going to use is hosted or related to the BCA or the CNCF. For example, Wasm Edge is in the CNCF and Wasm Time, which we're going to use here and Whammer and other tools to run and use components are in the BCA. And we're also going to highlight, I also want to highlight K-Wazm, which is a great open source project that allows you to install the Kubernetes shims, the Run-Wazzy shims, almost anywhere, which means you can run what we're going to run tonight in AKS in Azure, Azure Kubernetes Service, or you can use Google Kubernetes Engine, or you can use EKS on Amazon or anywhere you wish, whether it's on prem or whether it's in a cloud hoster that you prefer. So we'll show you how that works. So we're going to do this with K3ds and AKS. If we have time, we may or may not have time, but we'll figure out whether we do. But before we do this, we want to show you, I want to step back a moment. Come to the chat and I want to look in, see if everybody's got any questions. I see Jeff, you seem to be helping people out, which is great. We are going to, in fact, use 2.0.1. What I want to do is show you a little demo. This is Fermion Spin right there. Let's get back here. Here's the demo I want to show you.  This is an AKS cluster. And it's a special kind of cluster. So I'm going to play this. Let's see if this works. It's a little fuzzy at first, probably because of the upload and download. There it goes. And you can see this cluster doesn't have anything, but it does have a Windows AMD node pool. It also has a Linux AMD node pool. And it also has a Linux ARM node pool. So this is a very different kind of cluster. And normally, when you deploy containers to something cluster like this, you'd have to use paints and tolerations and node selectors with labels and the whole thing to make sure that your containers got deployed to the node that supported them. And I want to demonstrate that here. This is a simple two-container app. And you can see that we get a lot of misscheduled containers. The image won't pull because the container de-shim will not load anything. If we sit there and deploy the same kind of application that is built with WebAssembly, you'll see a different effect. I'm going to show five different applications. And they're all running and they distribute. Now, look at the node pools. You can see that in fact WebAssembly, the same module, will deploy on Windows AMD or ARM. And we're going to prove that to you. We're going to go ahead and destroy one of the node pools, just delete it right out from under the cluster. And you should expect that we would see Kubernetes native understanding that in fact we need to terminate things and redeploy them. And you can see them happening here. This one happens fast. We only killed one node pool. But let's kill the other one. And in this case, the only node pool running will be the Windows node pool at the end. Now, let's watch what happens. And just for a moment, there goes terminating and creating. And you can see at this point, right, the only container running happened to be scheduled to the master node pool. And that's okay. But all the others are not working at all. And yet all the other WebAssemblies have now been rescheduled to Windows. Now, there's nothing Windows specific about this. And so what you can imagine here, what you're really looking at is the way that WebAssembly abstracts the details of the node away. There are no node pool selectors here. There are no taints and tolerations. Now your operations team, if it wants, and you're running WebAssembly, it can actually deploy to nodes that are armed and immediately see a 20 or 30% savings. So that gets really fun. So I'm gonna go ahead and stop sharing this. And I'm gonna go ahead and move here. And what we're gonna do, let's move here and then move here. I'm gonna drop through the incredible thing. What we're doing is you can see that this is the getting started. I wanna show you how this works from the setup. And I don't know if you can see okay. I hope you can. You can look at the setup and you can see what we're gonna do is we're gonna install this. This installation right here, I believe, will give you spin 1.51. I actually go ahead and just do spin 2.01, which is the latest. So that's what I'm gonna demonstrate for you. And so you should be able to follow along without too much trouble. I'm also gonna use the TypeScript one and the Go one, which requires, and the Go, excuse me, TypeScript, if you'll notice you click here, TypeScript requires NPM. So get node and NPM involved.  And so you're gonna need tiny Go, go, right? And the version you want is latest and you'll need 0.30.0, okay? Oh, you like to follow along? This is the way to do it, but you don't have to. I'm gonna actually walk you through everything. So if we're gonna do this, that's the installation steps. You can use the dev container. This does provide you with 1.51 and compatible dependencies. But as I say, we're gonna do this live on 2.01 to see whether I can get in trouble, right? So, first to get started with Spin and WebAssembly. Now what I'm gonna do is I've cloned this over here as you can see, right? And if I do this, we'll go to the code and I can go ahead and here, I can open the preview of website. In fact, it opened right away. I'm gonna get this out of the way and you can see we're here at the setup again. So instead, I'm gonna open up the preview to this. This is where we're starting. And this is a quick reference to get up and going. Now I'll walk through this, but we'll also make sure we're checking and see if we can catch any errors or documentation errors because I'd love to submit a PR if anything is mistaken. Now the easy way to do this in VS Code is just to open this up here so I'll do so. I hope that you can see that easily enough. So I'm gonna move this over here and the critical thing is we're gonna talk about SpinNew. Let's do SpinVersion just to make sure you can see that I'm using this SpinVersion 2.0.1 and it says, hey, SpinNew, let's do that. And in fact, I said I was gonna do JavaScript so I'm gonna do JavaScript. HTTP REST request handler. All of these are request handlers right now and that gives you the idea that in fact, this is a fantastic serverless platform that Thermion has here. And so we're gonna say, hey, new JS function. Description, you can just delete through those or excuse me, enter through those. And when you get done, you can actually see that we've got a new JS function. We'll go to CD to new, okay? I'll get a little bit more room. And if we do tree, tree is apparently having a great time not running. So I'm gonna clear that and just say LS. Whoops, I didn't clear that. Wow. Clear, there we go. So in fact, why we're not reading, I'm not really sure, but I'm not gonna hang up on that problem for a moment. You can see the SpinToml file is described here, right? And we're gonna actually end up building an application and that application is going to be WebAssembly and we're telling the component, they were telling Spin that the component will be called this and it will be located here. You will exclude that is not build into the module, the node stuff that will all get compiled down into WebAssembly, there's the route. And when you do a build command, you can specify custom builds commands in here. So one of the things that we do with the versioning, I'm gonna skip over the language stuff but we are gonna in fact use the TypeScript application. So you notice it's NPM run build, so we're gonna have to actually do NPM install first. We'll let that come in and in fact, there we go. Coming in relatively slowly, I'm not necessarily surprised that my network connection is waiting for a kind of fun. We've got no vulnerabilities, which is a miracle and we can now do Spin build. And you'll see that it's going ahead and building the module and optimizing by using the wiser tool and then smashing the size down using a wasm op, you don't have to do this. Spin does this for you to make it as easy as possible for you. So if you do now a Spin op, in fact you get a new service and we open a browser, sure enough, hello from JS SDK. Now let's give you an idea of what we're doing here. So notice that we've got this in VS Code, we've got this running here, okay? Local host 3000, so if we go ahead and curl, HEP, local host 3000, we get it, hello from JS. That's fantastic. But I wanna use a tool called Hey. And if you don't know about Hey, you should, it's a great load tool, very basic and very easy. And it gives us a sense of performance density, right? This is super useful. So we're gonna say I want 5,000 requests and I want them on five connections for the same endpoint. Local host 3000. Now the first one involves downloading. Look at this. So just out of the gate, that's 10th of a second, that's a hundredth of a second, that's a millisecond. And we did not even reach a millisecond. This is five microseconds for the fastest one. And you may think that that's not very good or maybe if you think that is very good, but notice that the average is eight microseconds. Now, I'm running on Windows inside WSL and I'm streaming network connection from it. If we add all the overhead and remove that extra process and then we happen to be doing, you can imagine that this is gonna drop down and is that repeatable? Actually, it is not only repeatable, but it actually gets better in many respects, right? So that's fascinating. Look at how good that is. That's really nuts. So great stuff. Now, if we go ahead and take that back, let's do something else. Let's do something like go because it gives us a clear idea of the differences that languages have. Now if we do spin new and we say, hey, we're gonna use go with Piney go, the go language component support is coming along. Sometime in the next half year, I would hope that they support preview two, which is what we're using. So this is my go and no description and so forth. And remember for this one, I have to have tiny go installed because we need a compiler for our go. It turns out to tiny go actually compiles go code. So you need go involved installed as well. But once you do that, you can just do spin build. Whoops, I gotta now go into my go directory. My apologies. And I can do spin build. You see that I'm actually building tiny go, build target wassy. Go ahead and leak GC. There's a reason for that. Eliminate debug symbols and go ahead and build main.wasm. And there we are. So now I can do spin up. And sure enough, I open that up. We got hello, fermion in go. Okay, great. But how does this stack up? So here we are. We're gonna run the same program in go. Let's let it run a couple of times so that we got all everything cached. Do it one more time. I'll look at our histogram. The fastest was in fact down to 002. Now that's actually unexpected. I actually, usually the go takes a little bit longer. So this is super thrilling to see. And remember, we've got nested virtual machines going on here and so forth. That's really interesting. So I'm glad to see it. We go back, we go back here and we go ahead and tear that down. And we're good to go. So far, so good. I'm gonna jump back in here to our webinar and see what we got. There you go. Yeah, Jeff notes that the downloads, the binary is all really unique. You need the signature file if you're gonna validate the download and make sure you do that. Documentation for spin has the cosine command to validate that. When you do do the tree, as Jeff seen you, but you actually get tree in your console. I'm not really sure why tree is hanging up in WSL right now, but we'll figure that out later. So if there's any other questions, remember to dump them in here. You're not seeing the response from the serverlet? No, I'm gonna look, yep. Okay, so let's do a couple of diagnostic things. We'll work with you here, Jeff. No obvious content. So here's what the serverlet is. If I do this, so let's see. I'm gonna clear, if I list, we got new JS function. So I'm gonna cd to new JS function and I'm gonna do spin up. So if I hit this, okay, with, are you hitting it with a browser or are you hitting it with curl? Right, so here's what it looks like with curl. Curl, HDP, local host, 3000. And so what you get is like no return. If you don't notice it, it's like there because there's no extra new line in the return. And so you can actually say, if you wanna do curl, you can do curl v and then you get the whole return and that probably will help you out. Yeah, you can add new lines too, right? So in fact, I'll do that while you're doing this, right?  Let's see here was my go to jnews function source and I'm gonna go like here, hello from JSK, but this is Ralph and we save it and we go ahead and cd new JS function and we go ahead and spin build, right? And spin up, spin up. And it says already in service. So that port, I got a kill. Yep, that's the spin trigger, auto forwarded. So stop forwarding port. Okay, there we go. Let's do that again. Terminal and up, I wonder if this is a, do I have it running over here? Yes, I do, bad man, right? So we'll spin up over here. Now we have it running. And if we do this again, we're gonna get that but you can see that this is Ralph, right? So that should be the experience up here. I'm gonna come back here. Jeff, are you having that experience? Okay, we're at 743, we're doing fine. I got other things to show but I'd like to get you running here. Ah, okay. So, but the truth is the spin build failing, you need to do npm install first. Did you do that? Because we're in JavaScript, remember. If you're in tiny go, you don't need to do that because tiny go, go doesn't need you to do that. Ah, go ahead and try it. I'm gonna move on to the container. Right, but build won't make a difference. It's gotta be npm install first. Oh, did Jeff, let's just say me talking to you about it made it magically happen. And as a developer, this has happened to us all the time. So like, fine. Yep, npm will eventually get called. But it's like spin build. If you look at spin build, right? If we go over here and look at our spin Tommel, right? It should be npm run build. But in fact, whether npm run build actually calls install first really depends on your configuration. So npm can get called there, right? If you look at the, we're using TypeScript One, what they really want you to do is make sure you install the application dependencies first and so forth.  And that's kind of interesting. Now, the thing I'm gonna show you is that I'm working in WSL. And whether you're on a Mac or WSL or on Linux, the easiest way to get this all running for yourself requires a special configuration of tooling. And the easiest place to get that is Docker desktop. And that's just because Docker has done a really great job here. I'm gonna clear this up. Docker version gets you exactly what you need. You can see that this is Docker desktop. And you'll note that the actual versions are really good. You're gonna need a container D version of 1.625 or above. You also have Docker wired up to build kit. So Docker, we're gonna do Docker build X, which requires, and if you do a version of Docker build X, you're gonna need at least, I think it's 11.6 or above, might be 11.8. But Docker desktop gives you the newest version. And it's very, very nice that way, okay? So moving to the container space, in other words, to actually be able to deploy this in Kubernetes, it gets packaged in the container. We're gonna go and do this. So let's go ahead and do this. We're gonna say running in a container. So if we go ahead and run in a container, we're gonna do this with our thing. We're gonna actually create a Docker file. And so to do that, copy, we're gonna go ahead and tear down our thing. We're gonna use our JavaScript function and we're gonna create a Docker file, okay? And we're gonna create the new Docker file. And Jeff, I can't wait. If you got this running, you should be able to follow along if you have Docker desktop installed. We're gonna go ahead and drop this into the Docker file. Now note, we actually have to modify this to make sure that the targets are correct. So the target is actually newJ function. So we gotta do newJ function, newJS function wasm. And in this case, we gotta write it again because why would we not have to write it again? NewJS function wasm, okay. So we've done that and then we can use this. Now, this is Docker build build X. When you do a Docker build build, a build build X build, you're using build kit underneath the hood, but Docker desktop takes care of that for you. So you don't really need to know about the build kit part. However, notice a couple of things in here. One, we need to tag it and it needs to be tagged with the name of our thing. So I'm actually gonna call it the same thing just to make sure it's clear. We're in newJS function. And my GitHub ID is Squalachi, my last name, which is nice. It's always good to have a great strange last name because then you get to use your last name as an alias for almost everything. It's really nice. I feel bad for the Joneses, Johnson Smiths of the world. So there's one other little bit you need to do here for sure. And that's this one, whoops. This provenance equals false step. There's a reason for that and I'll explain it, but basically this tells Docker build kit to not attach provenance information in the image, in the image manifest. And the reason for that is because Kubernetes does not yet know what that provenance image is. It gets tagged as unknown platform and Kubernetes will refuse to pull it even though the module is in a container and that's fine. You're gonna build this as a type of platform wazihwazim and you're gonna go ahead and use the build context that is right here. So we're gonna go ahead and do that. You can see that that's all done. Yay. So if I do go over here just to have more room and do Docker image list, right? You can see that I've got new JS function up here and it's packed for a GHCR. Oh, I don't want that actually.  And so I'm gonna build it again and now I should have another one which is just Docker hub. It makes it easier, but you can see that you can tag it any way. It's just a container. And I want you to point out the size of your container here. Look at that. 837 KB. It's really quite amazing how small this can be. Yeah, so you don't need to think here, Doc Garvey, yeah, you'll skip ahead and you'll just watch this. And it's possible that editing might have provoked the correct dependency sequence. It's possible, yes, absolutely. Okay, so back here to this, no, to this. So you can see the size of the container we just created. Now let's do this. If we go here to running in the container, okay, we built and now we wanna run it. And we're gonna run it as a background item and we're gonna actually use not the GHCR. We're gonna use the image we could in this particular case, right? But instead we're gonna go ahead and use the image we just built, which is, I gotta type my own name correctly, new JS function, okay? And there it is, ooh, spin binary, not re-involved, ah! Okay, here's the interesting thing. Look at this. If we go to the Tommel, excuse me. No, no, no, not to the Tommel. You see right here, we did this. Okay, this is a Docker desktop and a Docker thing. What we're doing is telling Docker, go ahead and use this shim to run this, but this is spin V1. We actually don't have V1 loaded, we have V2 loaded because we're using spin 2.0.1. And so in fact, now it's running. How do we know it's running? Well, in theory, we should be able to do this, 3000, and sure enough, it's running. Well, great, can we do that whole thing that we do over here with, hey, N5000, C5, HTTP, local host, I always forget the L3000. Now watch what happens. Do you remember how fast this ran? It ran in low single digit microseconds, right? Look at the difference. Now we're into milliseconds for the fastest, right? We can rerun it. We're still doing pretty well, but we're into milliseconds. We've dropped from 11,000 requests a second to 2,600. That's really quite amazing.  But now let's do spin up, okay? And remember, so we just did this one. We just did this one. We're gonna do the same command, boom. Do it again, incredibly lower. In this case, we ended up at 66,000 instead of whatever we were doing, 6,000, no problem. If we go back here to the container one, we're looking at 2,600. So in an environment that is not virtually looped, right? Where you don't have a bunch, that difference is really amazing at scale, right? Let me make sure we're plugged in here. That difference is really amazing at scale. So now we're at the very end of our hour. Do people have general questions or should I try and pull off a Kubernetes installation? Installation. Installation. Libby, you're provoking me just in case truels didn't jump on it. Okay, so we're gonna do it. Okay, here we're gonna do it. We got five minutes to not only build a cluster. Okay, let's do it. We're gonna build a cluster and we're going to run clear. Okay, we go over here. Now we're gonna deploy Kubernetes, right? So Kubernetes, we're gonna create and configure the cluster. Now notice, I'm gonna change some things. There's a newer thing here. For this one, you have to have K3ds on. But we, K3d, but we know that there is a newer, brand new shim. So we're gonna go ahead and create our cluster. Now watch what happens. Let me create K3ds and then we're gonna go ahead and watch it. Come on. Oh, it's almost there. Okay, now I can do cube control, get, pull, and we'll look at all of them. And in fact, I'm gonna go ahead and do a watch so that we, now what's happening now is we have to pull in inside of Kubernetes all the internal containers that make Kubernetes run. So this is going to be our big hit, our time hit here. But let's go back and map out our thing. So deploy, we're gonna create a run time. We're gonna add the shim. And once we do that, right, we can go ahead and import our image to the K3ds cluster that we can do. And once we do that, we can actually, this is the only, we can go ahead and match the image name, right? And the only difference between a container, YAML, and WebAssembly, YAML is that run time class. That's it. There's no other difference, right? So this is the one where we're pulling in brand new, brand new images. Oh, we've got it. We've got one running. Let's see if we can pull it off. We're at 757. And we're gonna do this. Okay, we've got that. Deploy the cluster. We're gonna touch the spin run time while we're doing that. We're here. Okay, and we'll touch spin run time YAML. And we'll add this to the file. And I'll spin run run time YAML. Great thing about me is I come with sound effects. I come with my own beep sounds. And we're gonna go ahead and add that to the cluster at some point, right? But we gotta wait till the cluster is up and running. We're almost running. You can see we're getting in our traffic service load balancers. That's almost there. Two minutes left. Almost, almost, okay, we got traffic running. The jobs are completing and we're waiting for the last traffic manager completed. It's done. We got running, running, running, running, running, running, running, great. Fantastic, okay. Now we can do things like this. You get over here. We're in nanom run time. And so now we want to install where this shim command already has the container dshim involved in it. And so what we need to do is tell Kubernetes that it's there and so we do K, cube control, apply, f, spin, what spin. I'm typing as fast as I can, I promise. Okay, we've got that, right? And then we do this. And this, my application was in cluster import, my application is scolacci, whoops, scolacci. I'm typing as fast as I can, new js function. Okay, and it says, okay, I'm importing that. So now we're adding like this image is now in the cluster's cache, right? And then you can touch, you can create a spin app, yaml. Okay, we did that, whoop, got the star. I've got one more minute.  Yeah, we already did the image import. So we're gonna do this, nano, spin app, yaml, boom, extend, do, okay. And then once that's ready, we go ahead and apply the spin app right here. And I'm so close, will it work? Created, watch, cube control, get, oh, and container is creating five seconds. Please do not blow up because what we did is we imported the container, error, image pull, boom. Oh, that's unfortunate. All right, we almost did it. We almost did it. What I'm gonna do is go ahead and jump to this just to show you that we can do this, no problem. If you're deploying from Kubernetes, from outside Kubernetes, let's see, we had wasm time spin. Let's see what was the ingress. Oh, I know what it was. We didn't change the application. Ah, maybe I'll pull it off. Maybe I'll pull it off, nano, spin app. Okay, let's get down here. This isn't the name of the image. It's squalogy, new JS function. Text, boom, nah, nah, nah, spin app. Okay, unchange, configured, apply, nano, watch, and it's running. Oh, thank goodness. And now if we clear and we run, let's do, we got a hay. So this one is at 8081. So now we do 8081. And in theory, in Kubernetes, one minute late, notice the lag time. I wonder if this is WSL or whether it's actually something else. Should be something else. If we get this, I get this, troll and curl, 8081. Yep, it's there. So in fact, what we're doing is getting blocked by the Kubernetes infrastructure. How many do we get? We got much lower requests per second. You can see that there's something that went on in the cluster, but I'll wrap up with, we're looking at 15 milliseconds there for the fastest request. In fact, once we get this, I'll get this figured out. You can see the fact is just chewing through them much more slowly. So we did it, but not perfectly. I'll stop sharing. Thank you very much. And I'm gonna keep working on this if you're interested. Go ahead and ping me on Twitter. I'm Ralph underscore. Hey, there you go. I'm Ralph underscore Scolacci on Twitter and Scolacci on hackaderm.io for Mastodon. And I don't know, there's blue sky and there's email and it's the whole thing. Thank you Libby very much and thanks everybody else. Thank you Ralph so much. Thank you everyone for attending. Again, thanks for bearing with us with the timing and we will see y'all next year. Have a great rest of 2023 and we will see you for CNCF live webinars in January. Everybody have a great break.


Well, the main topics were that return to work in myeloma patients is even more complex than in other malignant diseases, I think. And this is because of the disease and treatment effects and also the prolonged treatments. And especially in physical demanding jobs that is often difficult to return to work. And also even traveling may be preventing patients to go to return to work. Because traveling may also be very burdensome physically and mentally. We also discussed that myeloma is still an incurable disease and also employers and occupational physicians and even hematologists are often not expecting myeloma patients to return to work. And that means that patients lack proper guidance to return to work and because they're not expected to return to work, where in fact they need specialized guidance to be able to return to work. So that makes it double difficult. An important factor in our discussion was also that returning to work is not only about financial stability or being able to provide an income, but being able to work is also a very important factor in quality of life. So that were, I think, the main topics. Well, it's not in general to say what rights they have because that's different in every country. But you can say that employees are somewhat protected by labor laws, whereas self-employed myeloma patients or temp workers, they are even lacking those who are losing income. So employees are somewhat protected, but groups as self-employed patients and temp workers are even more at risk. And also discuss the importance of work with your doctor and not only when there's a problem with work, but in general talk about your work and the importance of work in your life. And although it's not their field of expertise to guide you and to return to work, they do have referrals to social workers or other return to work specialists that they can refer you to. So they have their network of expertise, even if they're not expert themselves. So do talk with your physician or with nurses about problems or potential problems with work and do not wait until the problems occur. And make sure that doctors, nurses, your employer, your occupational physician are all on the same page regarding your wishes and your needs to return to work. Adapting work to your specific situation as myeloma patient, that is very problematic often. Since myeloma is a specific disease with specific physical problems and also treatment causes several side effects that will make return to work difficult. So it's not always possible for employers to provide alternative tasks. But employees may allow you to work from home if possible or allow you to work in flexible hours or let you take more breaks during your working day and especially that is important in physical demanding jobs and that are facilitating return to work or to reintegrate in a flexible manner. But also not being bound to standard reintegration schedules is important and also allowing patients to plan work and hospital visits in a flexible way is important but that requires hospital cooperation in facilitating treatment planning but also, for example, discussing the decimator zone schedule which is also interfering with your work often. So these are elements that will all help facilitate return to work but for some patients it will stay difficult. Depending on legislation per country for example in the Netherlands often there are good financial arrangements for myeloma patients also when they're not able to return to work at all or especially when they're not able to return to work at all there are good arrangements but that's not the case in any country and also in the Netherlands sometimes patients suffer considerable financial loss but not only that it's also that costs out of pocket costs or costs from treatments make that patients face extra expenditures for example only the hospital visits and the parking costs so it's not only loss of job or loss of income but also additional costs that they're facing and it's not always possible to minimize that but it's the same as I told earlier it's important to address it as early on as possible especially since the prolonged treatments patients are often too late with returning to work and employers are and colleagues are expecting you to not return so it's important to start early on with communicating with employers doctors and colleagues about your wishes regarding work and your expectations about returning to work well there's not just one solution to minimize financial loss but in general it's important to emphasize the important importance of your work with your employer and with your hematologist and so they can be aware for example to treat side effects that will hinder you returning to work but they can also refer you to as I said social workers and provide proper guidance and the earlier the problems are known the sooner things can be done which may prevent unsuited reintegration trajectories or even job loss and especially as I told in self-employed patients it's important that they seek expert guidance since there is no employer to help them and these patients are especially at risk to lose at financial risk and they tend to start working too soon and too much and this may cause stress and even burnout and in some countries there are rehabilitation programs especially for cancer patients and also this may be very good for myeloma patients to attempt these rehabilitation programs it's it's not just about fiscal rehabilitation but it's also finding the right balance in your life and well there are some indications that these programs are very suited also for myeloma patients in helping them to return to work as one patient in the workshop told as an advice to all patients be sure to have a plan B for yourself so try to return to work but be sure to have a plan B because he also said it's very important to deal with job loss he lost his job and but he ensured in every step of his myeloma way that there was always a plan B and that was a very important advice that I would like to pass on to all the patients that that are watching this video