It's always tricky to review a game like Super Mario Bros. Wonder, in some aspects it feels kinda useless, because, I mean, it's Mario.  But when it comes to Mario Wonder specifically, it's getting comparisons to Super Mario World and it's already considered one of the best games of the year, if not the best of 2023. So I figure my job is to help manage expectations with videos like this. It's always kinda weird to go into a game you haven't played before, and you're expecting the absolute best of the best. So I'm here to tell you, does Mario Wonder live up to those insanely high expectations?  I'll start by saying from making this video, this has gotta be the easiest game in the world to get footage for. Every level in this game is completely unique and packed with tons upon tons of crazy ideas implemented in the most unexpected ways, to the point that Mario Wonder is one of the hardest games to put down, because you're always thinking, just one more level, I gotta see what's in it. I gotta see what badge I'm gonna get next, I gotta see how hard this level is. You take that kind of hook and add it to a game as well made as Mario Wonder, then yeah it's easy to see why this game is so much fun. Mario Wonder borrows the structure from Super Mario World, where you've got eight worlds set up in an overworld that features all sorts of secrets you can unlock, including a special world level, which is very similar to the Star World and Super Mario World. The goal of each level is to find the Wonder Seeds, you get those by either completing the level and by finding the Wonder Flower, which opens up an entirely different level within the level. It can be tricky to find these at times, since there's a few secret exits, false flag poles and hidden areas, but man, that's the allure of this game, just finding out what kind of crazy stuff is gonna happen when you find it. Right away in the second level of the game, you got Singing Piranha Plants, what is this, the small world ride at Disney World? You get the seed and everything goes back to normal, or no, wait a second, what's up here?  Again this is just the second level of the game, we're barely scratching the surface at the sheer depth of creativity here.  Okay, I guess I'm a pincher bug that can jump really high, sure that works. Every single level is like this, it's just endlessly entertaining. There's lots of other kinds of levels too, like Wiggler races, puzzles where you need to find five flower coins, badge challenges that give you optional new abilities, and of course there's other self-imposed challenges like getting to the top of the flag pole or collecting all three purple coins, and there's also levels where you're transformed into a goomba and you have to sneak past these things trying to eat you, it's such a good time.  The game does a great job utilizing these by gradually escalating the difficulty, allowing you to get comfortable with using them before throwing the kitchen sink at you. And yeah, I gotta talk about the difficulty, it is so freaking refreshing to finally play a 2D Mario game that's really challenging but not cheap as hell like we're all used to dealing with in Mario Maker levels. The special world levels are just plain hard, and I mean that in the best possible way, but what I really love is how the game scales its difficulty, if you happen to get stuck somewhere you have a bunch of options available to you. One is to use badges, which you earn with badge challenges, or just by buying them at the store, and there's 24 of these, they can either help you out like allowing you to float using your hat, but there's some that make the game a lot harder, like the badge that makes you sprint forward. Trying to complete a special world level with this badge is insanely hard, but you always feel like it's still doable somehow. Sometimes with games like this it's easy to get caught up in getting every enemy instead of just getting by. Think of games like Contra or Ghouls and Ghosts, in Mario Wonder it's a similar deal where you just have to learn from your mistakes and be better the next time you try, and the controls and level design are so tight that it always feels rewarding. Come on, let's go! Let's go! Let's go! Oh god! Seriously? I missed the last jump? Come on! Another option available to you is to turn on the online multiplayer mode where you can see up to three other players, and you can just watch what they do to figure things out, kinda sorta like Elden Ring, it's pretty cool. These aren't just ghost images either, these are people playing in real time right alongside you. While I normally keep stuff like this turned off in games like this, it is really cool to work with other players to figure out certain levels, and if you die in this mode, you turn into a ghost with five seconds to either find another player to revive you, or to find one of these signposts that other players put down. This mode turns Mario Wonder into an entirely different kind of experience and it's really well done. The way the difficulty is scaled overall reminds me of, again, Super Mario World, where you can kinda control your own difficulty by only unlocking one or two switch palaces or even none at all. This game builds on that, and of course, it's about a thousand times more nuanced. And if that's not enough for you, you can also play as a Yoshi and they don't take damage, so all skill levels are welcomed here. My only nitpick with Mario Wonder is that I think it's too much of a leap from four-star difficulty to five-stars. Call me crazy, but I was able to breeze past most levels that were four-stars and under. But five-stars gets pretty ridiculous. Again, I mean that in a good way, this is coming from a guy who regularly tortures himself going back to the Star World and Super Mario World, or seeking out new crazy Kaizo Mario levels to play. I just wish the three and four-star levels were more on the difficult side. And that's a total nitpick, though, because I can always just apply a badge and try and complete a level while jumping around like this, or by zipping around shooting vines like this is just cause three or something. So yeah, I'm not gonna lie. When I first saw Super Mario Bros. Wonder with a $60 price tag, my reaction was, eh, I don't know. I wasn't much of a fan of the new Super Mario Bros. series because they kinda felt like empty collect-a-thons. But Mario Wonder is a quantum leap better than those games. It's great that Nintendo realized that we're at the point where the kids that grew up playing the new Super Mario Bros. games are now old enough to enjoy the challenge in Mario Wonder, and they do that while still making the game accessible to kids, which is just crazy.  The best compliment I can give this game is that I've gone back to complete certain levels a whole bunch of times, not just to get to the top of the flagpole or to collect the purple coins or whatever, just because it's so freaking fun. So yeah, I was skeptical at first, but as it turns out, Super Mario Bros. Wonder is the best game I've played in 2023, and you should be playing it too. Alright, I wanna thank you for watching, and I hope you have a great rest of your day.


Ooh, that's a hot mug, guys. Hey guys, this is my review for Love Lies Bleeding. This was a film that, initially upon seeing the trailer, I was interested in it. I liked the casting of Kirsten Stewart, and I liked Katie O'Brien.  She went full in. Look at photos of her with the red carpet for, I think it was Season 3 of Mandel 3?  Give her credit. She did the work to get into shape as her character who is a bodybuilder in this film. Love Lies Bleeding is a film that really fits into that A24 categorization. It is set in kind of the 80s, 90s. It has two characters who have very dark and estranged pasts that are somewhat mitigated for their own passion and love for each other.  Definitely Katie and Kirsten did good jobs with their roles. The film is a bit messy at first, like it's trying to figure out what it wants to do with the plot.  Ed Harris is an incredibly barbaric haircut. And the relationship that's going on between the two leads is popsily a bit on voyeuristic, but like I said, I was just kind of waiting for when the plot was really going to get the start. And when he did, the film got going. But while the beginning was a bit messy, I will say that the style of this film was nailed immediately. The editing of this movie was also nailed immediately. Rose Glass, the director and writer of this film, got what she was going for. This is her second major film. She did St. Maude, which I have not seen, but the performances in that is what got the lady in it. Her role is glad real. That's a whole different subject aside. We're not going to talk about that. We're going to talk about this movie. And I did start to like it.  I thought Ed did a great job.  And I liked his involvement and his building into this film more and more as the movie went on. I also like what happens with Katie's character. This indulgence into performance enhancing drug steroids. And it kind of almost gives this monster like mentality to the point where you're kind of curious of what you're seeing is actually happening or if it's more so an overcharacterization, like over dramatization. But then there are bits that happen.  But the thing that the film did respectfully for the most part was that it kept it subtle. Yes, it did dip into it like there were certain flashes of extreme WTF, but it kept it in line until the ending, until the last goddamn 10 minutes. I swear, A24 took that note from Ari Aster that, hey, let's make a really good movie or let's make a really fucked up movie.  Stupid.   This movie, while maybe not stupid, I see what they were trying to do.   However, I still liked how it ended, even if it is a little bit weird. With all the compliments I've said about this movie, it does have a bit of a messy kind of delivery. The beginning of the movie really kind of doesn't know exactly what it wants to be. It's still trying to figure out its meaning, its delivery, its personality. But once it got there, which about a third of the way in, it figured it out and knew what it wanted to do. But then it kind of lost itself towards the ending. And I know there's going to be a bunch of people in the comments. Oh, you're just getting good at it. It's like, no, I got what they were trying to do. I'm just saying it wasn't done well. Ambitious, absolutely. Perhaps maybe too ambitious. There are certain moments in the story where it feels like they were doing these cuts and these transitions because they thought they were really great, but maybe didn't fully realize that the structure is kind of starting to crumble while they're doing so. Overall, I think Love Lies Bleeding is definitely a A24 film. If for those of you who like watching A24 films, you'll enjoy this. This is like old school A24 in terms of its kind of there. A24 has started to really branch out the last little while, so to try and use that generalization is maybe a little bit too narrow-minded. But when they really were starting to get big, those trailers that would give you what you think is happening, but really wouldn't, that's kind of what's happening in this movie. You might go in and absolutely detest it. You might go in and really, really like it. I think it's definitely going to be a movie where people will either really, really like it, don't like it at all, or just kind of be in the middle and think, I mean, I guess. And that's me. That's me. Also, for those who wonder where the title derives from, I actually only noticed this after I had done my review. It actually derives from a plant that's native to South America, I believe, Central and South America. And as the wiki goes, they believe that the Kit Wacha had the power to give strength to people that ate it. This food was not only used for royalty diet, but also for religious rituals. And definitely that plays into this movie. So in the end, I'm going to give Love Lies Bleeding a 3 out of 7. I really like some of the aspects of it. I thought that some of the ideas they did were good. I just don't think it was executed as well as it could have been. And like I said, the ending is just, I know what they were trying to do, but I feel like the movie lost a bit of its credibility for the ending. But that is just me. That was my opinion. I'm very curious to see what you guys have to say about this movie, because I imagine this has a bit of a discourse about it, just because of just what it is, what it did. Either way, they're going to definitely give props to Katie, Kirsten, Ed, Rose for making something pretty cool, if maybe a bit messy. Otherwise though, that's all from me, guys. I hope you enjoyed this review. If you did, leave a like. And if you're interested in more, subscribe. Until then, see you guys next time.


Good morning, everyone. Welcome to the Green Mountain Care Board meeting. This is a follow up and an adjournment from last week's meeting for the purpose of hearing from Northwest Medical Center on a request for a mid-year rate adjustment. Before we get started, couple announcements, first of all, there will not be a board meeting on Wednesday. We will have the discussion on hospital budget guidance the following Wednesday, May 13. Since a journey last week's meeting, we did receive follow up information that was received from Northwest and we received two public comments, one from Ham Davis and one from Julia Shaw at the office of the health care advocate. Patrick, does the staff have something to add to keep this off? Yes, I will make a brief announcement that following last week's presentation by us, it was brought to our attention that we didn't factor in the compounding nature of this rate request. So we originally had the combined increase as I think 20.8% and you can see here on slide number two, the appropriate map which brings the increase to 21.7% and we verified this with the folks at Northwestern Medical Center. So that's the change to this presentation and for the court report of this is Patrick Rooney of the Green Mountain Care Board. Thank you. So at this time, I'm going to take an attendance so that we have an accurate record of who was at this meeting and the numbers that I do not see names for, I'm just going to call off the last four and if you could tell us who you are. So the first number is 5001. Julia Shaw with the HPA. Thank you, Julia. 6959. Is that you're going to be from the Moscone Hospital? Thank you. 0476. Lisa, if you're on from Blue Cross to Vermont. Thank you, Lisa. 2505. Good morning, Jennifer Callis, Museum Medical Center. Thank you. 7438. Ann Davis. I am. 5835. Lisa, Abigail Connelly. Okay. 8975. Marbeni Green, Northwestern Medical Center. Thank you. 9314. This is the court reporter. Thank you. And 9806. Mike Fisher, healthcare advocate. Good morning, Mike. Abigail, do you have everyone else's name listed? Yes, but if you could call anyone who didn't, you know, you didn't say their name out loud. Besides Becky Lewandowski, I think we got everyone. Okay. Is there anyone? This is Robin Alves. I'd also like to say that I have Devin Bachelder and Stephanie Grove with me. Thank you, Robin. Is there anyone else? Hearing none, Robin will give you the opportunity to add anything that you would like to add. Thank you, Kevin. Robin Alves, CFO of Northwestern Medical Center. A couple of points that I would like to make and just to remind for the board. One, as you can see from the slide that Patrick has, obviously the percentage rate is very high. But if you look at the dollar impact to the system, what we're asking for is still $4 million, more than $4 million less than what our approved revenue would have been. I think that's important to note also while we feel that we have done our appropriate due diligence with our payers, this rate increase even at the full amount would not increase the net dollars that they would have paid out for claims. If we were on track with our revenue budget that was approved back in August. Thank you, Robin. Patrick, you have any questions for Robin and her team? I do not know. Okay. With that, we'll open it up to the board to begin discussing this case. Would anybody have any questions or comments? For this morning, I can start. So the request, you know, for a 14.9% commercial rate increase as presented was driven by two pastors, a $7 million loss due to slow revenue to the end to the EMR implementation, which is worth about 11.5%. And a $2 million increase due to the cost of travelers, which is 3.3 million. The full year increase recoups 9 million or 100% of the lost income. Primarily result as a result of the above factors. NMC will lose approximately $10 million in that income this year after suffering losses in the past several years. Looking at the drivers of the request, a rate increase to me is not the solution. If the $7 million loss is due to the EMR implementation, it should come back. If it is primarily gone, then changes need to be made to restructure to offset a revenue decline. Clearly the best solution is to bring the productivity back to the pre-EMR state. The balance of the request was to offset the increase in travelers from a historical run rate of $400,000 in 2018, $690,000 in 2019, and then $2.3 million in 2020. This expense should have an offset in salaries at approximately 50%, so approximately $1 million. Typically we said travelers run at about $20 of what would be staff's cost. There will always be variances in the budget, and it just seems a mid-year rate increase at this point to recover $1 million, which is half of the nursing staff travelers increase, does not seem warranted and should wait until the 2021 budget cycle. The hospital has stated they have been doing cost cutting and cost optimization to offset shortfalls, and they don't feel they have more to offset. But in order to be financially stable and sustainable, the hospital needs to put together a plan that supports lower revenues if they're not going to get the revenues back from the EMR, and not have such a reliance on making up the shortfall with commercial rain increases. So with that, I will kick that off to everybody. I'm happy to jump in here. Somebody else wants to speak? Go ahead. Okay. So I actually, you know, have a lot of agreement with what Maureen just said. I'm sympathetic. All of our hospitals are financially vulnerable right now, and when we immersion this, we're going to have a ton of work to do to ensure that our system is strong. We're going to probably set a span of delay plans from everybody, is what I think. But Northwest is coming to us now with a one off mid-year emergency adjustment. And if you actually dig into it, it's really a 19.5% increase applied to hospital services with 0% applied to the ambulatory care. So when you annualize that, when you consider we had a 5.9 already last October, and you add that to the 19.5, we're talking about an annualized increase of over 25% for hospital services at Northwest. And in my time at the board, I cannot remember ever allowing such a substantial rate increase, especially not mid-year, and frankly, with so little documentation. We're in unprecedented times, but we have to remember this is a pre-COVID request, and I'm still unclear as to what's happening at Northwest. If it's lost volume due to EHR transition, that should come back. If this is the new normal for Northwest, then where did all that volume go and why? In their written submission, they talked about losing physician FPEs, but then at the hearing, they said that didn't sound right, but we never got a correction in subsequent correspondence. So I don't really know what's happening with staffing, what's driving this lower volume, whether it's the new normal or not. If it's temporary, it should return without a need for a permanent rate increase. If this is the new normal, then I feel like we need far more information about how they're going to adjust to this new lower capacity, how they're going to meet community needs before we could possibly, in my mind, approve a rate increase of this magnitude. So I can't support it at this time. I would really need to see that they've left no stone unturned before approving that. And particularly the time when businesses are facing closures, job losses, furloughs, uncertain financial futures, this rate request seems a little out of touch with the reality that they're facing for monitors right now. So my suggestion is instead of a 25% roughly annualized rate increase on acute hospital side charges, I'd love to see them look a little bit closer at expenses. If these are really new lower volumes, then there should be a substantial adjustment downward in expenses. Service lines need to be reviewed even more vigorously. I want to understand the ICU. A large proportion of the $2 million traveler's cost came from the ICU. It seems like, I don't know, I don't have an actual real sense of what percentage, but it seemed as though that was one of the drivers of that traveler's cost. Is a six-bed ICU necessary with an academic medical center 30 miles down the road? What is the average daily census there? How much would Northwest save if its critical care unit closed? Could Northwest patients be absorbed? I don't have the answers for this, but I feel as though since that was one of the major cost drivers, we would need to know those answers before we could support a rate increase of this magnitude. I really want to see a sustainability plan that reflects local community needs, a full analysis of their contribution margins by service line and the recognition of what's available down the road. I'd like to know where other revenue sources are. They hadn't reached out to Diva, had local donors we solicited. What's happening with federal money? There's a big new ask of the government now for hospitals to have another round of funding. So before we do a permanent and massive commercial rate increase, I'd want to know what was happening with with other potential revenue offsets. I'd go back to the point I made last week. I think that, you know, I'd rather see Northwest use the 15 days cash on hand necessary to cover the current shortfall. They would still be above the Vermont median in terms of days cash on hand and it seems to be a better solution than an unprecedented rate request that's forever baked into commercial charges and ultimately into consumer insurance premiums, co-pays and deductibles. Now I want to say this is this is a hard position to take because I sympathize. I really do with where Northwest is. I know the pain is real and the timing of these shops could not have been worse given COVID. And I what I would like to see is that we revisit all of this again in July when the budgets are submitted, July, August, whenever those might be, when we're better able to assess how all hospitals are fairing, not behind fairing, how much financial support has been provided from the federal government? How much, what happens to utilization now at Northwest post EHR implementation and post COVID? So I'd rather look at the system holistically and so I can't support this right now with the data that I've been given. Thank you, Jess. Robin or Tom? This is Tom. This is a little bit difficult because there are some areas that quite frankly don't have much to do with this request that I am sympathetic, that make me somewhat sympathetic and that is the five-year charge trend of seven-tenths of one percent which is very low, well below any system-wide average. And you know I wasn't around for a lot of that but I would think it will have been a wind in the face of the hospital for these past five years. Also the payer mix, again something not directly related to this request but you know Northwestern does not have a you know a great payer mix at 49.2 percent commercial versus 17 17.6 percent Medicaid well as compared to the system at 54.1 percent commercial and 11.4 percent Medicaid but that said you know I'm looking at the annualized amount of this increase if it were granted and it's you know on a 2020 annualized basis and it comes exactly to the sum of these two moving parts with one being the EMR and the other temporary staff at nine million dollars a little over nine million dollars and so if these are granted and rolled into the face as we head into the 2021 period you know that's a that's a pretty substantial rollout. So my you know while I'm sympathetic there are so many moving parts here that aren't being addressed in terms of the FPP snafu which is a five point eight million dollars the investment and gains and losses the integration with the emergency department request. I'm looking at Medicaid in this proposal where Medicaid would be dropping from their budgeted amount of 20 million five hundred thousand down to 17,600 so all of this burden is being shifted onto the commercial payers which just does not seem you know it's kind of a fair allocation so like the other two board members I you know I I'm looking for a healthy discussion of all of these including how this all integrates with the northwestern participation in the ACO which you know by every everyone's view is has been quite spectacular in terms of leading the charge as a hospital so but it's just hard to get my arms around this and the rollout of it into 2021 without going to a more thorough and comprehensive budget process that puts all of these issues on the table and that we all together can find a path forward that works as best as possible. Thank you Tom Robin. This is a tough request because while it is pre-covid there's so much financial change swirling around related to COVID that I think it is difficult this particular year to grant a pre a rate increase without understanding the full picture and understanding the picture on a statewide basis I do think of the commercial ask as a kind of a statewide analysis that we need to be thinking about because we do know they have a direct impact on commercial premiums and I think we're going to see as we move into the regular budget process quite a bit of pressure on the rate side now with that said if we were thinking about this as a global budget we would be looking for traded trade-offs between price and volume and so I hear what North West is saying that overall an increase in price to the decrease in volume would even out but I think again it's too hard to do it as a one-off given our current situation so I think I'm on board and consistently what everybody else has said. I would just say that I think we're going to have to I'm kind of glad we pushed the hospital budget discussion by a week because I do think we have to for that discussion think about how we're going to approach rate increases and volume declines in a create more creative way than we have been able to in the past. Thank you Robin. Councilbarber question for you since we took public comment on last Wednesday and we also had the open public comment period do we need to throw it back out there again right now yes okay thank you so with that I'm going to open it up for public comment would anyone wish to make a comment hearing none is there a board member who would like to make a motion I can do it if nobody else wants to but I'm happy to have somebody else do this one. Go for it Robin. I move that we deny Northwestern rate increase request. Is there a second? Second. Is there further discussion? Hearing none Councilbarber if you could call the roll. Member Holmes? Member Pelham? Yes. Member Eustaford? Yes. Member Lunge? Yes. Mr. Chair? Yes. With that is there any full business to come before the board? Is there any new business to come before the board? Hearing none is there a motion to adjourn? Second. Second. It's been moved and seconded to adjourn all those in favor signify by saying aye. Aye. Aye. Any opposed? Thank you everyone have a good rest of the morning.


Live on the floor in San Francisco for AWS Summit. I'm John Furrier, host of theCUBE, here for the next two days back in person, bringing all the action. So let's talk about what's going on now as you look at the landscape today. I like to think of our program as a catalyst for enterprise scale. And through that we provide visibility, credibility, and growth opportunities. The number one way things are made more easy is to make it more consumable by making it as a service, right? So it's designed specifically for Kubernetes. And the reality is the faster you move with anything cloud based, the better you are. And so there's this assumption that we got to get it right the first time. In the cloud, if you start down your journey in one way and you realize midway that it's not the right place to go, it's not like buying a piece of iron that you put in the closet and now you own it. In the cloud you can turn those services on and off. It gives you a much higher density for making decisions and failing forward. Like if you have enough data you can answer any question and if I can understand my data better than my competitor then I've got an advantage. And so the question is how, what technologies and what skills do I need in my organization to allow me to do that? Give the data, share the data because without the data algorithms are useless. I can come up with the best algorithm but I got to train them, modify them, tweak them. Make them better. Make them better. And I think their whole data exchange is the industry has not thought through something you and me talk many times. I think the whole, that area is very important. Like this convergence of societal trends with technology trends and how that manifests in our world around the way in which your product is built. And I think people really realize in that their differentiation is not so much their application, it's their understanding of the data. Can I understand who my best customers are? What I sell today, if people came to my website and didn't buy then why not? Where did they drop off? All of that they want to analyze and the answers are all in the data. The question is, can you understand it? There's a lot that you can do with AWS but focus is truly the key word there because they're going to be able to find their little piece of real estate and absolutely deliver incredible outcomes for our customers and then they can start their growth curve there.


you plan to use the wiki for a project or assignment. You should know that the wiki is collaborative community space for writing and editing for anyone with a UBC CWL, and it is publicly available for viewing by anyone on the internet. UBC wiki is a great space for learning how to edit a wiki using basic wiki markup. Wiki markup is the same format used on Wikipedia. In this video, we will focus on a few basics to get you started. First step, login. Second step, create a profile. Third step, upload an image, which is an optional step. Fourth step, familiarize yourself with wiki environment. And fifth step, create a new sandbox page. So let's get started with the first step. You will need to log in to the wiki with your UBC campus wide login if you want to create or edit wiki pages. So click on the CWL login button and log in. So you are now logged in to the wiki. A great way to dive in and get started editing a simple page is by creating your profile page. We'll do that now. So why do we need a profile page? A profile will help other users know who you are. The user profile is flexible so you can add the profile picture, projects that you are involved, and so on. It is almost like your own webpage. So let me show you an example of the user profile page. So this is my user profile page. There's my picture, the projects I'm involved, and a link to the GitHub page and my Twitter. This helps site visitors know who am I and what I do. So let's get started with creating your profile page. To edit the user page, click on the username located at the top bar. So this is a user profile page. As you can see you have not created user page yet so it's not showing up anything. So to get started click on create. As I have mentioned wiki uses the same format as Wikipedia. You can use the basic wiki markup but also you can even use the tools that can help you with editing. So let me go and type my content. And I will highlight on projects that I have been involved in. Click on the advance and you will see that you have more options available. And click on the second level heading. And it will automatically create a heading. I will also make my projects into bullet points. So to do that I just need to highlight on each project and click on the bullet list icon. And do the same with my another project. And if I want to make each project into a link I just highlight on it and click on the link mark. And this is an external link. And I do the same with another project. And I made these projects into a link so when users click on the link they can see the details of the projects that I'm involved in. Then press save. And there's my headings here. And I can also see the bullet points. Now you can see the user page has become library. If someone visit my profile page they will have better understanding of who am I and what I do. You can add many more things to your profile page like images which I will explain in the next optional step. Videos and tables. You can learn more by going to help page which is wiki.ubc.ca.help.contents. And this is where I can get help if I'm stuck with something. So if I go to the general help you can see that the instruction on how to create a page or how to edit an existing page and organizing the wiki. And there's also all the help articles related. So for example if I want to learn how to embed a video I'll click on the video and then they will show you an instruction on how to embed a video. And there's more helps on links and how to add the google form or how to add the twitter or how to add youtube and how to categorize things and there are more things that you can get help from. So let's get to the next step. I'll go back to my page. So the next step is to upload an image. This is an optional step so if you are not planning to upload an image you can skip this step. I'm going to upload profile pictures so that people can recognize my face. So what do I do? If you want to upload an image you need to upload an image outside of the editor by going to the gray sidebar here and under twos click on upload file. So upload and images. So click on select media files to share and press continue. If this file is your own work click on this file is my own work. And what this means is you will have to agree so that your photos will be under creative comments license. And if you click on use a different license you can choose which license you want. You can make it into public domain or you can make it to share like or you can make it into attribution. If you want no more details about creative comments you can go to the creative commons website to learn more about the license. And if this picture is not your own work the first thing to do is to make sure that the image is creative commons license or public domain. Then type in the source and also the work and select the reason why you are sure that you have the right to publish the work. In my case this is my own photo and I have the copyright and I don't mind if my photo is creative commons license so I will click on next. So type in the title of the work and type in what is the description of the photo. And you can also add a category so that the image is findable. So I type in photos maybe photograph and you can add another category profile picture and then go next. So you can get the embed code here. So click on the embed code go back to the user page that you have just created by clicking on your username and click on edit and I'm just going to paste the embed code here. Now you can see my picture on the wiki. If you want to learn more about how to format the image you can go back to the help page that we had gone through last time. So under help go to images and pictures and you can learn how to size the images and how to line the images. And now so now you have completed the third step. So the next step is to familiarize yourself with the wiki environment. So let's go back to the main ubc wiki homepage. The wiki is divided into four sections or in the other word name space main which is a space to create a page related to ubc. So for example what is ubc documentation which is a space to create a page that is related to support guides all technical menus for example how to use wiki course is a space to create a page that is related to course for example mess one or one sandbox is an experimental pages you can use to create draft pages or experimental pages pages that are created through sandbox are not searchable but still visible by other users as long as they know the url of the sandbox that you have created. When you create a page in wiki make sure to create the page in an appropriate namespace so for example if your page is an acorn course do not put in main space put it in course space creating a page in the correct name space will help to maintain the wiki architecture clean but also it will make your page easily findable. So I'm going to explore what's there so let's go to more on documentation and I can see what's there in documentation so I found a documentation that's related to microphone suggestion so this is a wiki page that is created by another people you can view the content you can edit and contribute to the content and if you click on history you can check who added the content previously and you can add pages to the watch list. Adding pages to watch list allows you to keep track when the pages is edited or moved it is useful when you are working on a group project using wiki go to the watch list menu you can see the changes on the pages that you have watched listed so in future when this documentation has been edited then it is going to be notified to you so now we are going to final step which is to create a sandbox page so now let's contribute to the wiki go back to the wiki home page and click on create page I'm going to create a page under sandbox so I'll type in the name of the page under the sandbox and click on the create sandbox page so as you can see the edit interface is exactly the same as when we edit the user page in step one so just type in the content and click on save page so now it's published since this is a sandbox page it is not searchable but if you want to show this page to your friend you can send the url of this page and show it to your friend if your friend has campus white login they can edit and contribute to your wiki page so you are done if you need more help there are more resources available on help section at the wiki which is this page thanks for watching this tutorial see you next time


Hi everyone, I am Mega. I'm a quantitative researcher at the American Institutes for Research. Today I'm doing a tutorial on my wild meta package written with James Busevsky and Pierce Cappelli. The package implements claustrophobic strapping to handle dependent effect sizes in meta-analysis.  However, dependent effect sizes are very common in meta-analysis. Primary analysis can yield more than one effect size or effect sizes can be nested in some way, creating dependence. For example, there's this meta-analytic data in James' club sandwich package that contains effects of SAT coaching on student achievement. The data has 47 studies and 67 effect sizes with some primary studies yielding more than one effect size. There are effects from the same study for math and verbal sections of the test. So here's the example data and we have the study, the effect size, the variance of the effect size, the type of test and the number of hours study. And we see some studies, that's the same study with two effect sizes, one for verbal and one for the math sections of the test. So one way to handle dependence is to ignore dependence. But if we ignore dependence, we get incorrect standard errors and therefore incorrect inferences from hypothesis tests. The standard method to handle dependence is to use robust variance estimation with small sample corrections. But in our paper in Joshi Posayevsky-Bretva's 2022, we showed that such corrections can lead to low power, especially for multiple contrast hypothesis tests. An example of multiple contrast hypothesis tests is to what extent to do effects of SAT coaching vary across math and verbal sections of the test. So in our paper, we examine an alternative method called cluster wild bootstrapping. Regular bootstrapping involves estimating unknown quantities by resampling from the original data many times. Cluster wild bootstrapping in particular involves resampling residuals by multiplying them by random cluster level weights. In our paper, we showed that cluster wild bootstrapping maintains type one error rates adequately and has more power than RVE with small sample corrections. So this is the algorithm for cluster wild bootstrapping. First, we fit a known model, which excludes the variable that you want to test in a full model, which includes the whole meta regression model on the original data. We then obtain residuals from the known model. Then we generate an auxiliary random variable that has a mean of zero and variance of one and multiply the residuals by the random variable set to be constant within clusters. We then obtain new outcome scores by adding the transform residuals to the predicted values from the known model fit on the original data. We then reestimate the full model with the new calculated outcome scores and obtain the test statistics. And then we repeat steps three to five R times and R is the number of bootstrap replicates. And then we calculate the p-value as the number of bootstrapped F statistics that are greater than the original F statistics. This is a lot, but you don't have to program this yourself because Wild Meta does this for you. And here's our wild hex sticker designed by my friend Riz. So I'm going to go over Wild Meta now. And the main function in the package is called Wild Test CWB. And it works with meta regression model fit using the Ruby Meta and Meta4 packages. And for Meta4, it works with both RMA-MV and RMA-UNI models. The function takes in a full model, a meta regression model fit using Ruby Meta or Meta4, constraints, number of bootstraps, and some other information. And most users won't have to mess with these this information. And then we also have the seed argument for reproducibility. And now I'm going to demonstrate how to use the function with this example data set that I went over before, the SAT coaching data set with data set with dependent back sizes and for math and verbal sections of SAT tests. So first I fit a meta regression model using the Ruby Meta package. Here I fit a meta regression model with zero intercept and with the test and ours as moderators. And then I specify the study of the variance of the back size and the data. And here are the results from the Ruby Meta model. The estimates for math and verbal are the average effect for each test type because we fit a zero intercept model. And we want to test whether these two effects differ from each other. Now here I use the wall test CWB function from Wild Meta. I specify the full model as a Ruby model. I use the constraint equal function from a cop sandwich package to set up a constraint matrix. I set the number of bootstraps to 999 and I set the seed for reproducibility. And the results indicate that the effects likely don't differ between math and verbal sections of the SAT test. Here I fit a model using the RMA-MV function for Meta for package, similar model and I input the RMA model in the Walt CWB function and I get similar results for the Meta for model. So the new version of Wild Meta supports parallel processing to make bitstrapping a bit faster. We use the future package to support parallel processing. And all you have to do is run this code to get cluster set up on your computer network and then run Walt test CWB. And here I'm running the function with 1,999 bootstraps and it took approximately 40 seconds to run and here the results which is similar story from earlier results. So I used different number of bootstraps 999 and 1999. So how many should you use in application? Generally the higher the number of bootstraps the better precision and power. But also if the number of bootstraps are higher it's going to be computationally intensive and it'll take more time. Generally 1,999 or higher number of bootstraps is recommended. But please see this paper Davidson and McKinnon 2000 for guidance on the number of bootstraps to use. Thank you so much for listening. Here are some links. The first one is for the Wild Meta package documentation and vignette and all kinds of examples. And the second one is for my website where you can find my contact information. Thank you so much. Thank you.


You got any funds valid here? Did you come down here? No, I was in there. Yeah, Eddie. Let's go. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. Ernie. He's still in the remissioners' office, yeah. I'd almost forgotten. No. Oh, there. That would have been in about 34 and 35, 36. Oh, yes. Mrs. Grimm just sent me a little dish with a picture of Charlie and me at Scottsdale years later. And in the ceramic dish, she's still doing well. You must have been at that breakfast that the general mills gave all of us. And then some of us decided to be fun to order something besides Wheaties. Yeah, and you didn't get a hat. Everybody else got a new hat. So was you, right? Some guys said I had Kello. Oh, that went up a big deal. That Wheaties guy, he was there. He said, well, we're selling a 10-cent item. Yeah, when you hear a whole round back, there goes a Kate of Wheaties. Kate of Wheaties, yeah. You can see whose chair you're sitting in. It should be the attorney general sits here. Secretary's date sits on the president's right. Secretary of defense on his left. Secretary of defense on his left. Secretary of defense on his right. Attorney general on all that. It's all done by him. Mr. President, Mr. Vice President, honored guests. On occasion of the 50th anniversary of the sporting news in 1936, we conducted a contest among our readership to determine the best baseball broadcasters of the day. There was one young fellow in Des Moines, Iowa, who got such a heavy return of ballots early on in the last issue before the polls closed, contained a write-up and a picture of this young fellow broadcasting for WHO out in Des Moines. Now on the occasion of our 100th birthday this year, it's with a good deal of pleasure that the sporting news presents to Ronald Dutch Reagan, that young sports writer who's now become a national broadcaster and an international broadcaster and a great copy of the original issues of the sporting news. Mr. President, I'd like to present to you and to the Vice President of the State of Sporting News couplings. Well, thank you very much. And for that, thank you. Pretty good writing, Mr. President. Change the part in my hair. That's great. Thank you very much. You're welcome. See you in the car in a while. Well, I am greatly honored and very pleased, and it's a genuine pleasure to have you all here today. Take a pause and some of us here and talk about baseball now instead of some other things. 1986, as you've just pointed out, was the 100th anniversary of the sporting news, the baseball paper of the world. It just seems as if it was yesterday I was reading that first edition. We've got winners with us here today of the Taylor Spinks and the Ford Frick Awards, sports writers and broadcasters and my dear friends and colleagues. We're also privileged to be joined by a former college baseball great. The legend has it passed on a promising career with the pros to go and dig for oil in West Texas. And as you know, it's been a while since I worked in the booth. A little reminder on the other side of the table. It wasn't since the Colorado Rose Bowl Parade with Mel Allen and Betty White. Every now and then I wish I remained in the business if I had. If I had, I wouldn't be living in public housing now. But it's also a real pleasure to be able to play with kids my own age. Russians are getting younger. Before we start the legend, I'm going to make you earn your keep. My advisors are divided on who's going to win the World Series. Apparently some have been paying too much attention to affairs of state. Pat Buchanan has said it's the Orioles. I'll just call on all of you for your counsel now that I'm not a Betty man, but just in case the question comes up and you're feeling anyone like to sound off on who it's going to be. What do you think about the D.H., Mr. Plays? The D.H., it's designated here. Oh, God, you know, I haven't thought about it much. I have a feeling that I'm a little like that as I am about football with a defense and an offense. When I played, you played both ways. I think football was a better game. Maybe baseball was a better game, too. It's getting so broken down on the departments and sports anymore. I don't know how it would feel to be a football player coming running on and off the field that late.   And I've always been very proud of my senior year.


Hey guys, it's Julia and welcome back to my channel and for today's video I'm going to be doing my Stephen King bookshelf tour Which you guys have been asking for this for so long or you guys just ask for bookshelf tools all the time Even though I did one on these shelves, but you ain't please are you? We're gonna do a Stephen King bookshelf tour because I know it's one of my most requested videos especially recently So we're gonna do that Let's jump right into it Starting with the goodies on this shelf, I have the penny-wise Walmart exclusive edition Have the max market paperbacks of the mr. Mercedes trilogy or the Bill Hodge trilogy starting with mr. Mercedes Binder's Keepers and end of watch the TV series edition The Tommy knockers at cemetery the stand Gerald's game Salem's lot shining Dining great dead zone The girl who loved Tom Corden who Joe and Carrie next up is this shelf Which is mostly the hardback version, so I'll go through the Funko pops quickly So we have one another one of the Walmart Exclusive penny-wise is this one's out of its box Step is the penny-wise holding the boat and lastly we have Carrie again We have another set of the Bill Hodge trilogy if you couldn't tell it's one of my favorites mr. Mercedes finders keepers and end of walk. Next up is dreamcatcher insomnia Irregulators and desperation do my key everything's eventual nightmares and dreamscapes Dollar East Clairborn not exactly shut up announce it, but I tried from a Buick 8 Next up here. We have this shelf. So for the goodies on this shelf. I have the shining Funko pops. So I have Jack Danny and Wendy Torrance for some goodies. These are from the nocturnal readers January box. So first up is This po I do have some postive on here as well So this is it's mostly King but there is some other thrillers at the bottom and Another horror and stuff, but this is a po pin. Great. This is a little keychain from Otos Pet Resort They're probably one of my favorite of the steaming King editions I have these are the gallery books editions and then at the top top is the Scribner editions the Tommy knockers Our calf the dead zone Harold's game Christine insomnia the long walk and misery thing over a little bit I have another set of the the hottest trilogy They have the same covers. It's just the spines different. So yes, the box just has blood drops on and stuff pretty cool I like it next we'll start with these the girl who loved Tom Gordon on writing and full dark No star getting into these bigger hard covers starting with bizarre bad dreams sleeping beauties also by Owen King It's an Atlantis revival and Rose matter going down another shelf But this is gonna be difficult because it's pretty low We have this shelf. This is this shelf the second last shelf. So again Funko's the man in black the gunslinger and Pennywise I also have this little It's balloon then I also have the it DVD and getting into the books I know I have some random ones that aren't king on this shelf But don't mind that the gunslinger the drawing of three which these are the first two books in the dark tower series Dr. Sleep, which this is the sequel to the shining You've guessed it another copy of mr. Mercedes Gwendi's button box also by Richard Chesmar Everything's eventual and the shining get these two out of the way. So these are my two copies of it so this edition and then And then I also have the movie tie-in edition different seasons for past midnight I have a copy of a war cross on this shelf. Don't mind that I should probably move this the murders in the room Org and other tales by Edgar Allan Poe I'm gonna just leave my copy of war cross here because I want to also have the enchanted by Renee Denfeldt and Blaze going down to the very bottom shelf. This one's going to be very hard to get you So that's the best I'm gonna get So we're gonna do it like this the stuff on the shelf I have this random pot of the succulents, which I like a lot So I also have these socks from Rosemary's baby, which again is from the nocturnal readers box into these I have a lot of politicians and other stuff down here. So I have this edition I have this edition then I have a Keepsake journal Well, I have a copy of Hannibal by Thomas Harris my cat's tail Sorry, whatever. He's cute. Hopefully he brightens your spirits.  Is this edition of the Raven and other tales by a girl in Poe? No Rudy go away I also have Nosferatu by Joe Hill going into these editions I have great tales of terror by a girl in Poe and then there were none by Agatha Christie silence of the lambs and Hannibal by Thomas Harris two copies of Hartzick by Chelsea Kane complete poetry of a girl in Poe I have poems by Poe of course, and it has a nice spine So I decided to put the one by Sylvia Plath with it just so it looks nicer together I'll tell Hart Last but not least the murders in the room work and the Dublin stories by a girl in Poe So thank you guys so much for watching that. I really hope you guys enjoyed it and yeah Let me know your thoughts down below and thank you so much for watching. I'll see you super soon. Bye


Everybody forced here rip in a box of twenty one twenty two Donna's optic basketball choice for Tony why here we go Tony? Let's see a nebula Yeah, I call specter high-end It's like below impeccable and I Mac of course though. Alrighty. Here's our silver or hollow. It's a Gary Tran, Jr. You get the dust off of this one. Yeah Rookie optographs red choice Isaiah Jackson non-numbered red and green rated rookie non-numbered bones Highland nice bones Do everybody likes bones highland everybody does Red choice 83 of 88 Bradley Beal and almost makes me sad that he wants to stay in Washington He's so good. Go somewhere else with a good team Nice Beal and rated Rookie's red choice. Does he be non-numbered JT Thor and Alprin Shengun nice Shengun He's gonna be good man. You guys watch he's probably gonna have a biggest jump from year one to year two of that rookie class Christian wood gone and that's gonna do it. Hey, thank you, Tony solid box there for you. We'll get it right out to you


I'm Shraddha Bansore. I'm from India and I'm currently doing my master's degree in Fine Arts at Prague College. My project, it started with just focusing on the everyday plastic as a problem. Growing up in India and in Pune, I saw a lot of cows on the streets and I would just like ride past them. They were part of the traffic. You just maneuver yourself around them. But I never gave it a second thought and when I was going to this NGO close to my home with this puppy I'd rescued and over there they had some cases of cows that were eating plastic and I mean I had seen them rummage through the trash cans but I never looked at it.  It was blocking everything inside and it was very painful for them and it was just weird to see how less people care about this animal so that's what drove me to start this project and I wanted to focus more on the relation between the animal and the material. It started with just with an instinct to just take a bag and start tearing it. We also eat with our hands and so there's a lot of that motion so I just instinctively started tearing the plastic and I was doing some experiments at that point with the oven and I just thought to iron it out and to see and it it gave a very leathery texture which I really like because it kind of brought me closer to the animal and it kind of formed a connection with both of them so yes that's what I do I tear them up and then I iron them and then I create them into this big textile which I stitch to my skeleton. These texts are my memories growing up in India and I found this was this work to capture like my culture my childhood and also to understand like where we stand with the cows and our religion and politics so like I thought this gives a better understanding to the environment. Many times I would lose sight of what my project was and like had to keep pulling myself back to this event and back to the animal because I kept deviating from it a lot so I think that was one of my big challenges to keep the animal present and yeah that's what I've been trying to do with these sculptures and even the sound that I'm creating to kind of give an experience of what it's like inside their stomach with all the process and the plastic so it's kind of like something I imagined it would sound like yeah and then it's just first time I'm working with sculptures like I come from a background of design of a bit of architecture and but I've never actually exhibited anything or created a sculpture like this so I think like having that in a big space and knowing how to put it up so yeah that was challenge. Yeah it'd be really great if you guys could come see our exhibition reshape on the 25th of June


Welcome to the weather forecast for the week beginning Wednesday August 23rd 2023. That's kind of fun This is chief meteorologist John is worth for a long month public media Tomorrow Thursday the 24th will be the first quarter moon looking beautiful in the evening sky as moisture Returns to the state Sun is still quite active with a Large number of mainly northern hemisphere sunspots facing earth Draw conditions are slightly worsened in the southwest Hopefully this moisture coming in will help that Looking nationally. We have a relief of the drought in the Midwest and a little worsening of the drought in Texas It's not really hot. So I'm get a lot of evaporation that way Smoke-wise we have fires Obviously ongoing in Canada. They really need a pattern change for that Bring in the rains So there's some smoke just about everywhere nationwide and you've seen the haze out there And we've had air quality alerts and like that. We're not even in the close to the worst of it for the precipitation of the last week Still mainly eastern plains northeastern corner and that was wandering thunderstorms So some people got a lot and places like Walnut got almost nothing looking at the animation quotes of severe weather climatology We've obviously passed the peak back in June Going through July You see the chances really drop and here we are in the fourth week of August and we have the lowest category of Sphere weather chances and looking at the actual forecast for Wednesday Chance of convection, but the severe stuff is far away Still far away on Thursday and just chance of thunderstorms nothing really severe on Friday Look at the National Weather Service forecast map for Wednesday. We do have a chance of storms precipitation heavy flooding rains far south in New Mexico Then the chance of flooding level rains from thunderstorms actually hits our little drought area somewhat on Thursday And then moves into the northeast and central part of The state for Friday, so we really should get quite wet Take a look at the ensemble. Look how fast the normals are dropping it from 86 to 83 57 to 53 in just those 10 days at the beginning of September fall is getting ready to happen The ensembles have very high chances of precipitation here on Friday Saturday and even Sunday Monday here and our first blob here is a I don't know what you call it It was it was a topical system and it moved across and moved into South Texas and the little swirl from that low is now On the New Mexico, Arizona border drawing in tropical moisture starting to moisten up the state And there's a cold front coming down that's gonna interact with that so Thursday morning the ridge that's been sitting over the Southwest moves out to Arkansas Oklahoma area that little low ripples coming through and that's gonna help kick off these enhanced showers You can see the precipitation on Thursday morning associated with that low Sunday is starting to Sunday midnight There's the tea sorry it changes when I put on broadcast mode The ridge is back here, but we have this front interacting with the moisture that's around and lots of precipitation expected Let's put this emotion. Here's the high center out here in just a big southerly flow in the West Going into Saturday and Sunday is a ripple there over Colorado Then the high kind of reforms to our West with Northwest flow Northwest flow will should keep us a little cooler and You can also get those ripples in the flow that kick off random thunderstorms when the heating is right The highs back here on the Colorado River around Las Vegas Then by the first to kind of drift into Southeast Colorado but still Northwest flow is the Overall pattern over Colorado so taking a look at temperatures. We have rain-cooled air here without low and the cloudiness associated with that here comes the cold front Cooling mainly on the Connell divide in eastward heat in the west still Thunderstorms cooling things off by Sunday Monday, and then another little shot of cold air coming down the plains that just backs up To the mountains again for a midweek So interesting we're starting to see that's a pretty good cold front hitting the eastern part of the nation Looking at precipitable water. We are above average in the West and that's gonna allow these storms to Get what they need to be storms. There's a tropical system down here. We'll talk about that in just a little bit So yeah, I'm going through Sunday Monday, August 28th And then to the beginning we don't dry out until around Wednesday, August 30th surface two points are very healthy and Continue to hover in the upper 40s and lower 50s and we go on the Friday Saturday those 60 dew points here. So lots of moisture lots lots of precipitation is possible Going into Monday next week 28th We got dry air on the West a little bit 40s dew points There's 30s in the mountain in the western slopes by the 30th And so things do time to dry out there's 30s and lower 40 dew points by Friday September 1st, so all the real good precipitation is going to happen this weekend at the beginning of next week So let's watch that precipitation come on up into Friday morning Kind of continues much of the day on Friday into Saturday And then reforms again for sorry afternoon There's Sunday afternoon more storms and precipitation and Monday more in the mountains and then shifting south of us Big hurricane off the coast here, but staying out to sea right now by the end of next week We do see drier conditions So over the next five days some mountains could get inch and a half to even three inches around Colorado Springs and up in the hills We're about half inch to three quarters of an inch long i-25 here four columns down to Denver Not quite three quarters of an inch At the next 10 days and the mountains get a little bit more nothing else seems to really change on the map So we end our 90s for now as we finish Thursday And Friday's quite cool 71 with rain Very likely Saturday still cool tries to warm up on Sunday and then cools back down on Monday And it's we're just about normal seasonal temperatures for Tuesday Let's quickly take a look at what's happening out in the ocean the Atlantic did turn on as far as hurricanes Are here's tropical strong Franklin Forming you know the Dominican Republic drifting up here expected to become a hurricane scare people in the Bermudas. Oh, you know not the Bahamas Bermuda but uh right now far from us mainland further out is cyclone Emily dying and then we have post tropical cyclone Gert just wandering around and dying there right now So nothing too exciting just some activity I'll take a look at Longmont leader and Broomfield leader for local news This has been chief meteorologist John Insworth. Keep looking out


I think we're gonna get started. So everybody smile. So because I'm a millennial and therefore I feed off of avocado toast and Facebook likes, feel free to like that on Twitter. It'll be up later. Hi, my name's Kevin Dice. This is what I go by on the internet. It's Katie Dice. If you can't remember, my last name is in alphabetical order. I only recently discovered that. 27 years later. I work at a company called Culture HQ. We build better workplace communities. If your workplace could use a better community, come and talk to me. We have a lot of fun and yeah. So we're gonna talk about Ruby. We're gonna talk about what happens when Ruby sees this program. And so if math is right, that's gonna put out 10. We go to our command line, we get 10, looks like I can do math. So we're gonna talk about everything that happens between the time when you type RubyExample.rb and that 10 gets printed out. So what we're talking about is the Ruby execution process. There's a lot of different parts of this and it starts with code getting required. After code gets required, the source is read. It's then tokenized. You build an abstract syntax tree. You interpret the abstract syntax tree. That was the case with Ruby 1.8. That's actually a little old. We're still gonna talk about that. Nowadays we build instruction sequences and we go and execute those instruction sequences. And so this is the flow that your code goes through when Ruby gets executed. So let's talk about tokenizing. So tokenization is a topic that's talked about a lot in computer science. It's pretty well discussed, pretty well documented and you can go see it online. But this is called a lexical analysis. And what it's gonna do is it's gonna run through your program and it's gonna find all of the various tokens within your program. And as it goes, it's gonna build a nice little list and so you have all your tokens. And you notice something interesting about this. Puts is an ident, A is an ident. Now we know from Ruby that those are two different semantic things. One is a variable, one is a method call. But in lexical analysis we don't have that meaning. We don't have that semantic meaning yet. So we have our list and that's tokenization. So from there we're gonna go build an abstract syntax tree. So we're gonna look at this list again and we're gonna go build a tree from it. So we're gonna start from the beginning and we're gonna build a root node. And what this is gonna do is it's gonna match the first pattern that it finds, the longest pattern that it finds. And so it sees, okay, I understand ident op equals integer new line. I understand that pattern. That pattern is a local variable assignment. So, okay, I have my local variable assignment. I see the next pattern. I see an expression that is a method call and then I see a sub-expression that is an addition. And so we can add that. So now we have our abstract syntax tree. And what we've done is injected semantic meaning into our previously just tokens, our list of tokens. Okay. So we have our instruction sequences. And so in Ruby 1.8 and before, this was immediately interpreted. So when you have a list of abstract syntax tree, when you have your nodes and you're gonna interpret it, you need two things. You need one, which is a state and apparently a truck. Okay. You need a state, which is a global state that is going to run around with your program as it's being interpreted. And you have a stack. This is a stack-based virtual machine. You're interpreting it as a stack. There are other kinds of virtual machines. This one is not. And so we type RubyExample.rb and we run down our tree and we say, okay, this could be a better tree. It's, anyway, that would be the leftmost node. So we see our integer and we push the integer onto the stack. We see our local variable assignment. We push a set A onto the stack. And so then because it's a local variable assignment, we just pop that off and that goes into the local table. Then go down to the bottom of the next pattern and we see integer five. Okay, we put that onto the stack. We see local variable A. We're going to pull that out of the local table and replace it with a five. We're going to send plus to five, right? So addition in Ruby is sending the plus operator to whatever object is being called plus on. So then we get 10, that gets pushed onto the stack. We get puts, we put the receiver, which is the implicit receiver self. We get that, we get 10, and now we've successfully interpreted our abstract syntax tree. So this was Ruby 1.8. Ruby 1.9 introduced YARV. I believe it stands for yet another Ruby virtual machine. YARV is a virtual machine. It is a way of taking, instead of taking an abstract syntax tree and immediately interpreting it, it's taking an abstract syntax tree, building instruction sequences, much the same you would build assembly from C, right? This is a compilation process. And it goes and executes those. So let's look at building instruction sequences from an abstract syntax tree. It's much the same interpretation process that it was previously. We go trace, by the way, just hooks into a trace point, not important for this. But we can see put object. That would have previously put an object onto the stack. Now we just have an instruction that says put object and an argument to that. We have a local variable assignment, which is set local, the argument three. We're gonna send puts, we're gonna local variable pull, and so on and so forth. Now we have our list of instruction sequences. So from there, we can execute them. And we can execute them in a more intelligent way. We can do all kinds of optimizations. We can do what's called a threaded VM approach where the previous instructions point to the next instructions and it goes much more quickly. And you can run through this process in the same way that we were previously interpreting it. It looks very similar, this whole process. But you'll notice it's just running straight down. And it turns out this is much more efficient. This can be done much more quickly. There's all kinds of great optimizations. I don't pretend to be an expert on virtual machines, but I know when I see a huge speed improvement that something went right. So thank you Ruby Core team for making that happen. So in Ruby 2.3, we got to go even further with this. We got the ability to take those instruction sequences that we compiled. And before we execute them, we can write those out to a file and we can read them back in. So. Kuiti introduced this by a year and a half ago. If you scroll down on the Ruby bug report, you see this. It's pretty excellent. This is what the rest of this talk is based on. Kuiti was in the room when I presented this at RubyKaigi. That was really entertaining. And not at all nerve-wracking. Anyway, the funny part about this also is that MGA is coming, but we're gonna talk about that later. So let's talk about this. Let's look at this example. We can take this file and in Ruby 2.3 we got this new API called compile file on Ruby VM instruction sequence. And this compile file function will return an instruction sequence instance. You can call two binary on it. That returns a big thing that you can't read. We can write that out to a file. And then you can see that file and you might notice that it's quite a bit larger than the other file. It contains all the information that is necessary, all the semantic information that is implied by the source code that is needed to execute that in another place. Now, there are a couple caveats to this. You need, this is machine-specific, right? This is architecture-specific. It also has information inside of it like underscore underscore file underscore underscore is gonna be different on different machines. So you can't take this file and go throw it somewhere else and run it. Actually you might be able to, but you know, probably not. And on the other side of that, you can go and read that file in. You can load that file from binary and you can evaluate it and you get your same 10. That works, that's Ruby 2.3. So one thing that we can do is we can take this and we can programmatically load those instruction sequences. And this came in Ruby 2.3, we can programmatically load them. What that means is we're gonna take this tree that we had and we're gonna split it into two paths. So there's still the normal path. There's still the normal require, read, tokenize, build, build instruction sequences. Except instead of immediately executing instruction sequences, we can instead write the instruction sequences out to a file and then execute them. And that means the next time we go to require that file, we can follow the right path, read those instruction sequences out of the written binary file and execute them. So this is internal to Ruby. Doesn't matter if you don't know C. You can see that as a call, RBISEC loadISEC. Basically, if RBISEC loadISEC returns a value for a given file name, then it's going to skip all the rest of that code. It's not gonna build a new review parser. It's not going to go and build everything. It's just going to take that and evaluate it. And this is the internals of that. That is checking whether or not a function exists. That's checking whether or not loadISEC exists on the RBVM instruction sequence Singleton class. And then if it does, it's just going to return that. So here's an example. We're gonna walk through this code real quick. This is an example of adding that loadISEC function. So this loadISEC function is going to take, is going to get every single file that is required. Every single time a file is required, it's gonna run through this class. And so source path is going to be the path to the file that you are trying to compile. And this happens, right?  And so you define this method, and the first thing we're gonna do is we're gonna, you can pretty much squint at that and just say, okay, that's just building a path to a dumped binary file that we're gonna use. And we're gonna say basically, whether or not this file is fresh, if this file has been, if the ISEC file has been updated more recently than the source code has been updated, that means that we have already compiled this file, this file is the most recent version, and we can just use that. And we're gonna return the instruction sequence load from binary, that this is the right path, the right side path of that tree. If it's not, then we're gonna compile and go through the normal process. You can rescue syntax error and runtime error and return nil, this is a nice thing because if this method returns nil, it goes to the normal process, we don't have to worry about it. So there are a couple examples out there in the wild. This one is from BootSnap. BootSnap is a gem that came out of Shopify, it's pretty great, it does a whole mess of stuff, but one of the things that it does is it compiles, your ISEC files, if you tell it to, compiles your files down to instruction sequences and loads them appropriately, and this class gets included into RBVM instruction sequence. The other one is Yomikomu, this came out, this is also a gem, it also ships with your Ruby install if you look inside of it. It's in the Ruby source and it is an example loader and you can go and check that out as well. So now for the fun part. So I saw this, all this stuff happening, and for reasons that we will get into after I show you the good parts, I really wanted to mess around with this and see what we could do and stretch the limits of this compilation process. So let's go back and look at loadISEC, and we see a couple things here. ISEC equals RBVM instruction, is this gonna work? What, nice. So this little part right here, the instruction sequence compile part. We're gonna split that out. So now we've got the content and we're gonna load it in the next line. And we're gonna split this up. This is the fun part. This right here, right here, we have a variable called content. Content has the Ruby source in a string. The next line, Ruby instruction sequence compile goes and loads that, but we can do a whole mess of stuff in here, like arbitrarily G-subbing and eval-ing. Because who doesn't love to do that? For the, you know, like five people in this room that can't read regex off the top of their head, that should be everyone. You can take this, you can take this source, and you can do this. Why would you ever do this? Why? Well, here's the reason Ruby is incredibly flexible. You can override the multiplication operator in Ruby. Why? I don't know, you shouldn't do that. Don't do that. Why do people do things? But you can, it gives you that flexibility.  It can't do it. It can do it, there are proposals, there's like optimistic, decomp... There's a whole bunch of stuff, but in general, it can't do it. And the reason it can't do it is because 24 is an integer. Inager times could have been overwritten at this point. You don't know. So what this actually looks like in the instruction sequence, the list of instruction sequences is integer, it's put object, and then it's, you know, opt times, and then put object, and then opt times, and then put object, and you've got all these different instruction sequences that are creating bloat in memory, in time, and all this stuff. Any other language, well, I shouldn't say. A lot of other languages would be able to go through a process called instruction elimination. They would see this code, and they would replace it with just the value that is returned by that multiplication, such that when the code goes to execute, it would only be multiplying days times that value. Now you may say, Kevin, why don't you just replace it with the value of the multiplication? And that's true, you could, you absolutely could. But I like this. I don't remember how many seconds are in a day, ever. I do know that there are 60 seconds in a minute, that there are 60 minutes in an hour, and there are 24 hours in a day. So I want that visibility. I want to see that in my code, but I don't wanna pay for it. So I'm gonna replace it with this gsub. And it turns out that this works. You can just replace this. And what I've done with this gsub is allowed myself to inject more semantic meaning into your code without sacrificing anything in terms of performance. So you can do it again. We can do more weird things. Say you have some date literal in your code. You have some date literal, and date.parse is notoriously slow because date.parse can handle pretty much anything you throw at it. What you should be using is date.strp time. Date.strp time takes a format, expects a certain format for a date, and then when you hand it a date, it will parse it out much more quickly. But I don't want to deal with strp format. I can never, ever remember what strf time format takes. Is it a percent y? Is it a percent m? I never know. So what I wanna do is I want to do this with tilde d, and what this is going to do is during the compilation process, it's going to parse that date and replace it with that date.strp time. Now this is a date literal. Obviously this can be pulled out into a separate variable. You could do this in many other ways that are probably just as efficient, but I like this. I like being able to see this in my code. I like the simplicity of it. If you're seeing a pattern with the tilde as I completely stole that from Elixir, so you might look at Sigil's in Elixir. So this works. You can do this. I wrote a gem. It's called Vernacular. You can check it out. And you can write your own arbitrary g-subs. It will hook into the compilation process. You can run it in production if you like, if you're feeling feisty. It looks like this. You basically define a regex modifier. And it does stuff for you. So what it does is we've extended this tree. We've extended this flow chart. We've added a step. We modify the source after we read it, and then we tokenize it. But let's go further. I wanna do more weird things to your code. I want to not just be able to do lexical analysis. What we were doing with g-subbing is lexical analysis. We didn't really have enough semantic information to really understand what the code was doing. All we could do was arbitrarily g-sub stuff. That's effectively compiler macros, right? Any other language, that's just compiler macros. We're literally replacing source with other source. But I wanna do more things. So there's a gem called parser. The parser gem has an interesting part of it that does rewriting automatically. That's the fun part. And if you look at this, you can see I'm blatantly abusing the parser gem. I love this. Just send, because what is method privacy? So I'm abusing this gem, but there are certain things that you can do. You can arbitrarily build rewriters in this gem. And so I can take this code, I can inject this into the compilation process, and I can do really weird things. Like take this, and we have this add method. Now I don't know why you would ever write this method, but you could, it's possible. And I want type checks on this. Ruby doesn't have type checks. A lot of people want to add type checks. I don't really wanna add type checks to Ruby. But you could do this, and I wanted to look like that, because I like to pretend I know Scala. And I want this. What I'm really representing is this. That's verbose. I don't want that. I want just this. I just want a succinct way of saying, hey, throw an error if that's not an integer. And you can do this. You can do this by building your own version of the AST with the parser gem, rewriting the code, putting it back in, letting Ruby compile it with a valid Ruby source, and it goes on and executes. Here's another example. I want to check the output of this. I want that to equal an integer. And so we're gonna wrap the execution of this function in a begin and end. We're gonna throw an error if it's not the type we expect. And all I wanna do is write this. I only wanna represent it with this. So it works. You check it out in the gem. It's called an AST modifier. This does horrible things to the parser gem. You also need to have pretty intimate knowledge of the way that the parser gem is parsing your stuff. You have to extend the source code. So what it does is it goes in. It sees your stuff. It extends the parser.y, it rebuilds the parser, and then injects it into the parser gem. It does bad things. But it does work. And so we've taken this already horrendously large flowchart and added another step. And that is to build the AST, modify the AST, go back, read the source, tokenize, build the AST, and go through the whole process. But I wanna go even further. I wanna do really weird stuff. So really weird stuff looks like this. Let's go and look back at when we compiled that file to binary. And let's hex-stump it. What even is that? I had a moment of panic when I saw that for the first time. I'm not a low-level programmer. I like Ruby to handle this stuff for me. But it turns out you can go into the C source. That's what open source is all about. You can find out exactly what is in that code. I love the comment, by the way, at the top of this struct that is YARB. I was like, what the hell is that? What does that mean? And then I looked. It's the first four characters of every dump. It's amazing. You also notice in here, you go through, you find, hey, that's my platform. And so I started playing around with this and I realized, hey, we can get all kinds of information out of here. I just have to learn C. Small barrier to enter. So you can find the header, you can find the Ruby version, you can find the offset within that binary dump of each of the compiled instruction sequences. You can find the list of IDs, which are symbols and other things. You can find the objects. You can go and find all of the information in here that you actually need. You can fork Ruby. You can throw debugging information into it. You can get all this stuff. So what does this mean? This means load isek allows us to provide our own bytecode. We can inject debugging information into Ruby to learn the binary structure of a YARF bytecode dump. We already showed that we can take that source and hand it to instruction sequence and return it. So we can write our own code that compiles down to YARF bytecode. What this has done, load isek, what load isek has opened is a window into the Ruby version machine as a compilation target. It is not a well-supported compilation target. It is not a desired compilation target. But it is a compilation target nonetheless. So what we can do is go back into this code and we can add a little conditional.  It's a project. Stands for tiny Ruby. It does nothing. But it does show something interesting. It shows that what load isek is really doing is establishing a contract between something that takes a string and then something that respond, takes a string and it's an object and responds to two binary. And what two binary should do is return a string that represents your bytecode and then RubyVM instruction sequence compile, that is what that does. It returns an instance of the instruction sequence. It responds to two binary, returns you with a string. 2b.compile returns a compiled 2b instruction sequence responds to two binary. You can put it out to a string. We've added even more to this obnoxious flowchart that is now haunting me. And we've added this step where we go require, we read source, we split now on the end of the file name, we go all the way down to read 2b, we write the instruction sequences. Because we're writing our bytecode, we maintain interoperability with Ruby. This is kind of key, this is an interesting point. We're just writing code that compiles to the Ruby bytecode. Therefore, we're effectively writing something, we're not writing a new version of Ruby. We're not writing an alternate implementation of the Ruby spec, right? This is not J-Ruby, this is not Truffle Ruby, this is not any of the other ones. We're still writing your bytecode, so we still can call back and forth. We can get the benefits of a compiler, instruction elimination, anything else you wanna implement on the compiler side without having to write a native extension. I don't like writing native extensions. C and Rust are great, I like C and Rust. I don't like writing native extensions. They're a pain. I don't like worrying about memory. I just don't. I choose Ruby because it makes me happy, not because everything is a segfault. So what this looks like is this little thing. I actually do like Rust, but this is a function. And we can look at this code and you don't have to understand the individual semantic way of writing stuff in this little language, but something you can see is this little four over three times 3.1415, right? We already talked about how this couldn't be eliminated in Ruby because of the flexibility of Ruby. To be is not flexible, it does nothing, as I said. And so it can eliminate that because it only handles mathematical functions. And you can call into that from Ruby and get the value. So it doesn't really work. It does, it does, it works sometimes. No, really don't use it. But you can check it out on GitHub. I'm making progress slowly, but surely. Now caveat, if MJIT becomes a thing, as Chad said yesterday, I will euthanize this very gently. It will become a read-only repo on GitHub. And you might look at this flowchart and just say why? Why would you do this? Why would you ever do this? Because in the end, this is what I care about. This is it, this is all of that flowchart that I actually care about. I want to require my code, I want to read the compiled code and I want to execute the compiled code. This is what you get with a compiled language. And you might complain about a compiled language. You might say, oh, that's such a pain. I have to go through this whole process of compilation, but look at this flowchart. There's nothing in it. And the benefits of this are pretty huge when you don't have to worry about, I don't know, things breaking, I guess. But you can do all kinds of weird stuff and still end up with this flowchart. So this is the obvious question. Why would you ever do this? I get this question a lot when people ask me why I spend hours and hours on this thing. And there's a couple of thoughts that I want to leave you with. The first is that programming is using human language to represent computer lexicon. And that goes along with code gets read many more times that it gets written. Thank you, Sandy, for that. And finally, you need to optimize her reading code. So let's take a second and just think about this. The very first thing I said to this room when I got up to the stage was how y'all doing. If you go to an English grammar book, you will not find how y'all doing. And yet every single person in this room understood what I said. That's slang, that is what slang is. Language only matters, slang only matters for being incorrect if you cannot extract semantic meaning from what I'm saying to you. If I use slang and you understand that communication, then what does it matter? It's not important that I use slang. It's important that you got the meaning that I was trying to express. In much the same way, it does not matter which way you use this in code. The contract is that the computer can understand what you are trying to say. That is the only contract. Code is therefore not better if it conforms to one particular style. It is not better code. You might think that it is more effective for translating that code to multiple teams. If you enforce a style guide, maybe more developers can use that code and it's better for refactoring and all kinds of benefits. I definitely see the value of using a linter. But what I'm saying is that as long as you get the message across, it's still effective. So you can use this vernacular gem. You can inject a certain tribal knowledge into your application of what tilde n means. You can get the performance benefits and you can use it in production. So what's next? There's a couple things. The vernacular gem will work provided compiling to instruction sequences always works. If MJIT becomes a thing, if literally anything changes about the binary format of Ruby's dumps, which is not guaranteed in any way, then again, I will euthanize to be in a very gracious way. But there's a lot of different things that can be done with this kind of compilation process. And for those of you who saw Justin Cyril's talk yesterday, he was talking about the inherent value of doing something, even if the code itself is not valuable. I think this project has value, no matter what. I think that the thought that you can take Ruby and inject some process into the compilation process, I think thinking about these kinds of things can push the Ruby virtual machine forward. You know, we talk about people like to rag on Java a lot. But the JVM, in my estimation, is still one of the greatest programming achievements we've ever had. It does a lot of things and it's a lot of ways it's a standard. And you look at all the different languages that compile to the JVM and it's amazing. I mean, it's a whole world of different programming tools and toolkits and everything. So I want that for the Ruby virtual machine. I want that a lot because I want more Ruby jobs. I want more people to be employed by Ruby. I want more people to be programming Ruby. I really like Ruby and I want it to keep going. So I want us to think about this as a community. Okay, that's all I got. Thank you. So we have a little bit of time for Q&A. I'm going to preempt two questions. One, yes, I'm using this in production. Get over it. The second one, I guess I already did cover, which is if MJIT comes in, yeah, 2B dies. It dies, it's sad, but anyway. Any other questions? Oh yeah, because I have no time. But yeah, no, I mean, it doesn't necessarily die. I have to. I'm sorry, yes. The question is why would 2B die if the opcode format changes? And he's right, if people want to help me, it doesn't die. Yeah, I just bought a house. It's pretty exciting. I have no time. Yeah, good questions. What's the most compelling use of vernacular in production is the question. I love it for test macros. I have one that is pretty great. It's all caps debug. And it's require IRB, binding.irb. Because you can do that by putting it into a separate method and then calling, but then you have to go up one binding level and it's weird, but you can do all kinds of weird things with test macros, right? There's a certain approach to testing that is much more functional and less object oriented. And when you think about it that way and you just, you can, I don't know, I love it. So testing. I have the tilde n and the tilde d. I don't use it a lot, but I love tilde n because I really like having anything that has a lot of different, if it's any kind of formula, I really like having it all expressed out as opposed to just writing the optimization. Yes, yes it will. The reason I rescue that is because, sure yes, in the code it rescues syntax errors and runtime errors in the compilation process and then returns nil. And the question is, isn't that gonna fail if you have any of these extra like sigils or anything in the source code? And yes it will fail. The reason I'm rescuing that is in case you have a syntax error in your normal Ruby code. It still needs to fall back and I don't actually know how Ruby handles all that. It throws a syntax error somewhere, but I'm just letting it handle it entirely. Yeah, so there's a, the question was when you, when I require parser, it's gonna like recursively require stuff because it's gonna have to parse the parser gem and do a whole bunch of weird stuff. Yeah, that took me like a couple days. I realized it halfway through what I was doing. I was like, oh my god, this is dying. And so what I did was I have a big if statement that says if it's from the parser gem, just ignore it. Just like, don't compile it. Conditionals are great. The question is have I tried hacking up the C interpreter so that it just loads the binary compiled files? No, I have not. Just bought a house. Any other questions? Great, well if you have any more, feel free to come talk to me. As I said, I live off of Avocado Toast and Twitter Likes so check out my Twitter profile. Thanks for coming.