Hi, everyone. I'm Michael Lange. I'm an engineer at a HashiCorp. And today, I'm excited to talk about template first data visualization. We're going to be looking at two different tools, EmberJS, of course. That's the conference we're at, and also D3GS, which remains the sort of state-of-the-art way to visualize data on the web. But first, I want to go back in time a little bit and recognize that Ember and D3 are both over 10 years old. Both of them were released initially in 2011. And of course, the web has changed a lot over this period of time. The way we write, the way we package, the way we deliver our JavaScript code has all evolved. And also, what users expect from the web has evolved with it. Here, we've plotted all of the major versions of D3 and Ember. When it comes to D3, the most major milestone was D34, where D3 went modular, sort of recognizing that JavaScript frameworks are going to be controlling your code. And then maybe people don't want to use all of D3's. Selection join sort of semantics and would instead, rather, just use pieces of D3 rather than the whole thing at once. And for Ember, of course, Ember's changed a lot over this period of time. But as it relates to this talk, I think it's interesting to look at how templating has changed. HTML bars, Glimmer 2 and Glimmer Components, all milestones as it comes to not only templates, but also as we've progressed towards native JavaScript. Using parts of JavaScript in D3V exists in 2011. And there's a combination of both new features that are being added and also huge performance improvements that led us to realize ideas we had back in the day, creating more sophisticated compositions. And I say this all because you may be wondering why now. This isn't the first data visualization talk. It's not even the first Ember in data visualization talk. But as long as our tools change and as long as the web platform continues to change as well, these talks are always relevant. It's always useful to sort of look back and see if the best practices have changed and what we can do to data is different than yesterday. So let's just start with the bar chart. This is the quintessential D3 bar chart. I actually just took the code straight from the observable notebook that the D3 authors published. And then I replaced the data with data from Ember Reservers. So here are the average rating of popular add-ons by category, sort of descending by average rating. And if we look at this, we see bars. Of course, it's a bar chart. We also see an x-axis, a y-axis, grid lines, and this label of average rating at the top corner. And if we look at the code, first off, it's all JavaScript. Start off, we transform data. We create these utilities, this scale, and axes functions. And then we actually just create our SVG element with JavaScript right here. Const SVG equals D3 dot create SVG. That's creating an SVG. If you've been around for a while, you may have noticed that this API is inspired heavily by jQuery. In fact, at one point, D3 was even using the Sizzle library that jQuery was also built on and authored. And then notably, at the bottom here, we're binding our data by calling dot data. And then we are joining that data to DOM using the join call. And here we're doing an imperative data binding to req elements. And once that runs, we get this SVG element in the DOM. Immediately, we can notice how different this looks from the source code. But we can also see that SVG is actually like HTML if you haven't spent a lot of time looking at them. And if we squint, we can sort of see the components. Here, we're creating the SVG, and then we also have our y-axis. We notice the y-axis because they're near the bottom. We have that text element that says average rating. After that, we have a G, which stands for group. And within our group, we have all these rectangles. And of course, the rectangles are going to be the bars. Lastly, we have our other axes down here. But let's try this again with Ember. We know that this ends up looking like an SVG. So can we start with it? Maybe it'll look like an SVG. So here we go. It's a Glimmer component. Glimmer already has fantastic support for SVG. So there are no gotchas here. We just created an SVG element in our HBS file, and we combine stuff to it. Inside of this, let's just start with the bars. Of course, we're gonna create a group element, and then we're going to iterate over some sort of array. And the way we do that in Ember is using each. And then inside of that, we're gonna create req elements and then bind some data to them. Lastly, we need these axes. Axes are a little more complicated and D3 already has a solution. So let's just put this in here and hope that we can continue to use D3 for that. And now the only thing that remains is we have to define these properties somewhere. So let's do it. Let's try joining D3 and Ember. We're gonna look at scales, axes, and statistics here. Let's break down our bar chart in terms of D3 primitives. First, we have an axis left. This axis left is built on top of a scale linear, from 0 to 10. It's not logarithm or anything like that. Then we have an axis bottom down here for our x-axis and it's built on a scale ordinal. This is a discrete set of data based on category name. And then this is an average rating of popular add-ons. So we need to construct some sort of average function, in this case, the mean before we apply the scale functions to our bars. I'd be remiss to not show you the data of a data visualization. So the keen eye will recognize this as the console log output of an Ember data record or a record array. And here we have an array of categories. Each category has an array of add-ons. And then unseen inside this object is a score property on each add-on. So let's start off by just creating ourselves a glimmer component, a bunch of track properties, et cetera, and some getters. Notably in here, inside of our data getter, we are already using D3. We're going to be using D3.me, comes from the D3 array package, to be able to construct that average score from our array of elements. Summation division isn't so hard, but it's already in D3, might as well use it. Next, we're going to use the D3 scale package. Just to explain this really quickly, basically what we're doing is we're taking our pixel bounds here as range, which is just the difference between the height and our margins. And then we're going to map that to data bounds. In this case, it's a fixed bounder of zero and 10, which is the minimum and maximum rating that could be achieved using a observer. And data bounds here can also be ordinal. So as mentioned, the scale, the x-axis is ordinal. How do you map pixels to ordinal data? You provide the entire set of values to the domain function, as we can see here where we're saying return D3.scaleband.domain. And then lastly, we have our axes, which are using that D3-axis package, and they're going to create SVG elements for us. Let's look at the data first. So as mentioned, we have that the x, y, height, and width properties that were applied to our bars in our template. And it turns out we can just use a getter here and then just call our D3 scale functions. Since they're just functions that map values to pixels, that's data that operates on data that we can then use in a template, which is perfect because that's all of our data operates. Everything they number in these days is around the concept of derived data. Last thing we need to do though is get those axes in. And the issue is that they don't return data, they return actual SVG nodes. So somehow we have to take those SVG nodes and get them into our DOM. And we can use a modifier for this. So by having a did insert modifier and then calling our mount elements action, we have a handle on the SVG element itself that we can then use with D3 to hopefully get those nodes into our DOM. So here we can see that we're creating an element, const $l equals D3.select. Wrapping the selection around the element gives us the D3 API to then select child elements and then do things like dot call this.y-axis, which is going to construct the axis and then bind it into our existing SVG element. So just to recap really quickly, we use the D3 array package, which is full of statistics helpers including D3.mean. We then use the D3 scale package, which gives us mapper functions to translate from data space to pixel space. And then we use D3 axis, which is a DOM emitting function that creates the marks for axis preposition according to the scale. Then we're able to mount that into our component. At this point, I think we should just dissect D3 a little bit. As I mentioned at the top, D3 is now modular. It's a library of libraries and there are truly no exceptions to this. This is what the index.js file looks like for D3. All it's doing is exporting the exports from its sub-packages. So let's break this down. I like to think about how to categorize D3 packages using the definition of D3 to begin with. D3 stands for data-driven documents. So we have packages for fetching and parking data, for transforming data, and then lastly for drawing things to the DOM, be that HTML SVG or Canvas. So if we take that categorization and then organize all of the exports from that index.js file, we end up with a situation like this. A couple of data packages, a whole bunch of these driven packages, and then a handful of document packages. Just to further visualize this, this is kind of the flow that your data is going to take through if you're using only D3. You're going to use that data package to hit an API or maybe just that static file. And then you're going to use driven a package here to transform what may be flat data into this actual tree construct with children and parent nodes. And then lastly, the document packages are going to be the thing that takes this transformed data and turns it into a visualization. And here, if we're thinking about this with our Ember glasses on, I think we can all agree that we don't need these data packages. Odds are you have some sort of data fetching pattern in your app. Maybe it's not Ember data, but I'm pretty confident it's not going to be D3. Over here with these dominating ones, it's a little weird. Ideally we don't do this, right? But there's also a lot of value in these so we don't necessarily want to throw them away. We already use the access one and it worked just fine. So let's just sort of keep that under hat and think about it. But really the magic is going to be in these driven packages. This whole collection of transforming data into different data works perfect, not only for D3, but also for any sort of JavaScript framework. And of course this is by design from the office of D3. I'm going to look at that chart one more time because we haven't talked about CSS yet. And CSS isn't just for HTML. It also applies to SPG. So of course we have these inline styles. I'm sure you saw those already. And that's just because we copy pasted straight from our JavaScript only solution into our templates. As we go through this refactoring, we want to move things into CSS, which not only includes these inline styles, but also presentation attributes within our SPG nodes. Just as a general rule of thumb, if something is presentation in SPG, there's likely to be an equivalent in CSS. And we also had styling going on in JavaScript. Of course, originally we had everything happening in JavaScript. But now we have this issue where we have all sorts of little nuancey things happening inside of our mounted elements. And it's a bit of a shame. But there are tricks we can do in CSS to sort of eliminate all of this twiddling that we're doing here and instead doing stuff in CSS. So, well, just like that, we can move all that stuff into CSS. And this ends up being kind of familiar. At the end of the day, ta-da! We have a chart. Looks just like our other chart, which was the whole point, right? We didn't want to create a new chart. We wanted to create the existing chart with new patterns. And let's look at how the code ended up shaking out. Just D3 on the left, D3 plus number on the right. Immediately, you'll note that the Ember solution has more lines of code. Personally, I don't think lines of code is the end-all, be-all metric of whether or not code is good. I'm sure you can agree with me there. So let's just do an overlay here to do a bit of a live check. In blue we have markup. In red we have JavaScript. And in any yellow we have styles. So we've created a much clearer distribution of code across these different disciplines in our newer solution, even if it does end up with more code. And I can hear you already asking why though? If the D3 chart already worked just fine and we were able to sort of shove it into an Ember component, why go through this refactoring process? Like it's just seemed okay. And the BDF component is once it's in there, you only have to think about how it was implemented. It's quite well encapsulated. And it's a good question. There's this old proverb. If you want to go fast, do whatever you want. If you want to go far, you separate your concerns. And I'll keep in mind, sometimes going fast is the right thing to do. I do not want to stop you from going fast if that's the right thing to do. But let's just talk about the value that comes from wanting to go far and separating those concerns. So in this scenario, imagine a progress on our walks by and they see this chart. They're thinking, that's a nice chart, but the text is so small. Can the people watching the stream even see it? So they bump up the talk size, simple CSS. And then they're thinking that orange looks really bright. Is that actually using the style guide orange? And it's not. So they make it match sort of the theme orange of the conference. And the point here isn't that CSS is easier than JavaScript. These changes are one-liners in JavaScript more in CSS. But the point is CSS is familiar, which is not quite the same as easy. If you're a product designer, you're much more likely to be familiar with CSS than you are with JavaScript. For me, making a one-line change in JavaScript is easy. If somebody who isn't familiar with JavaScript tries it, the easy thing to do is end up with a syntax error. Let's just walk through another example. In this case, we have an accessibility specialist walk-in. They see SVG, SVG looks like HTML. This is all markup. It's familiar. Now making a database accessible is highly situational because charts can be read in so many different ways and they have so many different intended purposes. So there are going to be many approaches and criteria to consider. What I like to do, especially for bar charts, is ask myself, what would this look like if it was a table of data instead? And taking that logic, what we end up with is first giving a role to the SVG. Mind you, the SVG is normally graphics. So we want to make sure that any sort of assistive technology will know that this isn't just a graphic. It is meant to be interpreted as well. And then we give the SVG a title and a label, which is going to be read out. We hide our axes. This might be weird because there is text in here, but keep in mind that the ticks of an axis are not helpful at all unless you're actually using them in a visual manner. Having a screen reader announce 10, nine, eight, seven, six is not useful when you can't actually sort of visually map where the six is to the height of a bar. And then we want to give our recs a cell. This minimizes the profile's announcements rather than saying yada-yada and then rectangle. It's going to say just yada-yada. In this case, it's going to say the category name as well as the format and average score. Keep in mind here that both the X and the Y values are important. Once again, without having the axes to be able to draw a visual inference, we need to make sure this is clear in the label. And there's a lot that goes into this, as I mentioned, but the one hard and fast rule when thinking about data biz and accessibility is that doing nothing and hoping for the best is never going to cut it. Keep in mind, SPG is a graphics language. A semantic markup isn't going to be nearly as reliable in this domain. It wasn't really a design goal. HTML is going to be much better for that. In fact, there's an element in SPG called foreign object that lets you embed HTML within your SPG to be able to get better interactive and accessible markup. Okay, without other way, let's try extending. Components compose, of course. So let's explore compositional patterns with charts. All right, so here's our chart one more time. And it plots data in XY space. So maybe we could think of this in terms of a general purpose Cartesian canvas.  So then we also have our axes. Before we implemented this as axis left and axis bottom, but nice thing about components is that we can start broad and then over time refactor and do something that's more specific as new use cases arise. And in fact, I think in our first go at this, we only need the axis components. Let's just try thinking of it as just a Cartesian canvas and see if we can get away with having the axes derived from the data itself. Okay, so I pulled this component out of the oven, which takes this contextual approach. The beauty here is that we're going to compute the common scales and transformations in this parent level component. And then we're going to yield the bar component, which is partially applied using contextual components. So if you've never used contextual components or if you don't mind the refresher here, what's happening is we're yielding just like any component would. But the thing that we're yielding is an object and that object has a property bars. The value of bars is a component and that component already has the data, X scale and Y scale arguments pre-applied, which means when we go to call this component, it just looks like this. The Cartesian chart is where we set our data and our X prop and all those data related properties. And then once that's set, all we have to do is say C dot bars to say that we want that style of mark in our chart. At least constructing a chart, much less involved. And the neat thing here is that you'll find that Cartesian canvas is the base of so many chart types. This is just a smattering of 15 here, but there are so many more. And it's exciting that if you wanted to create a Gantt chart or have one of these population pyramids, these types, you already have the foundation within the Cartesian canvas. And I can hear you again. Once more, you're probably thinking, why though? Is there actually value in doing all of this or is this just sort of my fun experiment? And it's valid. Once again, database validation isn't exactly new. So there's all sorts of different approaches. I really like this article in Nightingale called navigating the world of web-based database. And in here, it's sort of plotted all the different types of chart libraries that exist. And what I'm proposing here is down here in the framework specific low level building block that happens to use compose contextual components as our language tool of choice. And you might be thinking, but why not up here? Why wouldn't I want to use one of these chart template libraries? It even says it's less effort. And you're totally right, it's less effort. And once more, if you want to go fast, do whatever you want. And sometimes going fast is the right way. If you're working out a startup, no one's going to remember your failed startup because it had beautiful chart components, right? Prioritize appropriately. But the reason why you may not want to do that is hiding under that blue arrow. And that's because chart templates themselves are less expressive. And chart templates are great all the way up to the point where you really need them to be great. And once a chart component can't do the small thing that you needed to do, it can feel like you've just locked your keys in your car. And if you could just reach through the glass and grab your keys, problems will be solved that you can't and you're not about to punch through the glass, that would be uncomfortable as well. So let's just kind of walk through how quickly this can happen with a chart template library. Without throwing any shade on chart template libraries, they do what they do and they know that there are limitations. So in this example, we're now thinking about how a chart can change over time. So imagine product designer or product manager kind of comes into the room and thinks, oh, I've been thinking about this chart. And one of the shortcomings of this chart, if you look at it, is that there's no sense of how many add-ons are in a category. Sure, data has high marks here, but maybe there are only a few data add-ons and something like library wrappers are a lot of them and that pulls the average down. So is this really a fair representation of that information? And they happen to see this chart in the economists. At this point, you're not sure if this is a real request or if just a humble brag that your product manager reads the economists, whatever. They talk to this and they show how nice it is that this is doubly encoded. So not only do we see a Y value, but we also see a width on these bars and it seems perfect for our data. Like what if the width of a bar could be based on how many add-ons are in a category? And we could think through this just fine, right? So our ordinal X axis on the bottom turns into a linear one. And then our width is based on the number of add-ons and then our placement, our X value is going to be the cumulative sum of all add-ons before it in the record array. So none of that is particularly hard, but if we're using a chart template library and it doesn't know how to create this type of chart called a Mario Mako chart, well, then you're sort of stuck, but we're not. So we can create it. Well, just like that, we have now created a component that takes a different type of access and then can encode it. And we can see that there are indeed a lot more library wrappers than there are data add-ons, but, you know, so that shows that maybe our product manager was onto something and we're now presenting more information to this chart consumer. And it didn't actually take that much work to do. We're still using that Cartesian chart as a base, has a Mario Mako specific argument now with this X size prop, so we can compute that X width or the width of bars. And then we are now using this Mario Mako yielded component. And what we had to change in Cartesian chart, we're getting more utility out of D3. So you can see in here that we are using D3.sum inside of that X domain sum, which is just going to aggregate data for us. Not a particularly difficult operation, but it's nice that D3 does it. And then we're also using D3.cumulative sum, which is going to give us the value of data aggregating from one position to the next position, which is precisely what we needed to do to get the X coordinate of bars. But I mean, at the end of the day, we created a chart, sure, but is it good? I mean, if I'm looking at this, the direct labeling is nice, but it's a little clunky, especially if you look at the X axis, some of those numbers are kind of smushed. Also the single color just kind of makes it seem bland, a little bit monolithic. But that's kind of also not really the point. What we're trying to do is set up a framework for creating a good chart. Creating a good chart is actually an interdisciplinary activity. As we already watched, there was engineering involved, design involved, product management involved, as well as accessibility. So the engineering goal here isn't to create a good chart, but it's to support the iterative process that leads the whole team down to something good. At this point, I want to mention that everything so far has been high level, even though there has been a lot of code. I don't expect you to pour over every line while I'm presenting. We're just going over concepts. There's a repo already online where you can pour over every single line of code. And if you have any questions, please reach out in Discord. Okay, now let's talk about animations. First off, in the year 2020-22, year 2022, the golden rule is to just use CSS. If you're animating something on the web, just use CSS. There are lots of benefits here. First, with just a couple lines of code, you can have a really smooth animation. Also the transition system within CSS is super durable, resilient to cancellation and updating data. And oftentimes it's going to be hardware accelerated. It depends on the prop, but since CSS is declarative and is also owned by the browser itself, you can expect much more optimized code than something that would happen in user land. It's also using the platform, which means less dollars, but we have to write or maintain or download. And CSS variables make this more powerful than ever. I have a demo to show how CSS variables can combine with CSS to make something great. So here, what we have is a simple line chart. And a common animation with line charts is to sort of animate the line coming into existence or out of existence. So we quickly look at this code. We have a class, line init, and then we have the style dash dash length that's setting our property. And then we have this D attribute, which looks super complicated, and it kind of is, there's a DSL with an SVG for basically drawing lines. But the nice thing here is that there's also a stroke dash array property, which operates on simple data, which means I can just click this and it's going to animate. And the missing piece of the length that can be computed at runtime and we've generated a chart and then apply it as a CSS variable so we can still use that in our animation, which is super nice. There are other ways that line charts are animated. So let's look at this. This is unobservable. Once more, observable is a great resource for learning D3. Lots of lovely interactive examples. So here we have a chart and we can filter into a year and watch what the x-axis does. Things are coming into existence. They're panning left and right. We're zooming in, we're zooming out. And this is all stuff that you're going to have a hard time trying to do with CSS. Because the issue here is that we now need to coordinate animations. And we need to manage elements coming into and leaving the DOM. So let's look at what we're doing here with D3. How does D3 manage to achieve this in a way that CSS cannot? D3 has a library called transitions, which mimics the D3 selection API. So for any selection, we can call dot transition, give it a duration, and then that's going to automatically start animating the data that's bound to it. We can also coordinate across selections. So you can see down here, we're creating this transition as T and then we're applying that transition to other selections, GX and path to make sure this is all coordinated. And D3 will also smoothly interpolate various types of data. So that D attribute that we saw that was complex, not a problem for D3. But for using this, who's in charge? It starts to feel a little funny because if you want to use D3 transition, that means you need to use D3 selections. And if you're going to be using D3 selections, that now means you're constructing DOM in JavaScript rather than in the template where we want to be. So let's just examine this a little further. If we remember D3 is a library of libraries. So D3 transition itself is in this document category, but it's powered by another D3 library called interpolate, which is operates on data. And D3 interpolate here, it says right in the read me that it provides a variety of interpolation methods for blending between two values. And those values may be numbers, colors, strings, arrays, or even deeply nested objects, which is fantastic. So that's our first requirement, it's really interpolating data. The next one is coordination. But the thing is, coordination is actually just a concurrency problem. So how about American currency? That's kind of our go-to solution for coordinating work that's asynchronous. So with that, we can control data over time. Ember is already handling a read-renders. So that's kind of already solved for us. And then American currency can orchestrate sequences of behaviors. I don't know, let's just try it out, right? So this is what a task would look like. We want to run this task until a timer runs out. So we have a duration of 500. We use the high performance timing API, we want to develop performance on now to figure out how long this task has been opened. From there, we can compute how long until we hit our duration inside this wild loop. If you haven't seen these tasks before, you might be a little weirded out because this is a wild loop and wilds are normally synchronous. But since this is inside of a generator and we're using yield, we can actually use this spin execution, which is great, by waiting for this request animation frame. Little bit of a gotcha, though. Requesting animation frame actually uses a callback style of asynchronous modeling. Fortunately, it's pretty straightforward now to quote-unquote cast a callback style of asynchronous behavior into a promise-based one. So with this one-liner, we now have a promise that resolves when we get our new animation frame. And then we can yield to this promise and have the results we want. So that takes care of the timing. Now we need to interpolate. So we just thread in D3 interpolate. Assuming that our data doesn't have circular references, then we can just take any old object and interpolate between one to the other. The interpolator is a function that takes a numeric argument between zero and one, which is basically the percentage through the interpolation that you want to be at, which is going to be now over the duration. Pretty straightforward. And then the last gotcha here is that even though we're setting a track property to make sure that we're updating the data, and that's going to cause a re-render, it's not going to update our axes, because remember that those are controlled by D3, which is not track property aware. But that's fine. We can just call this not an element again, and it ends up being not an issue. So let's look at this. All right, here is that Mario Mako chart. Now we have a sort button, and when I click it, it's going to smooth the enemy between two things, using request animation frame, and in reconcurrent to task. Of course it's modeled, but that's not the point. The point here is that we can create our own animation parameters from existing Ember add-ons. So if you're going to go down this road, you're pretty quickly going to run into the questions of what happens when new data points get added, and also what happens when ones are removed. There are concepts inside of D3 called entries and exits to manage this exact behavior. So in theory, you could add that to some sort of Ember concurrency like API, but I'll warn you now that if you go down that road, you're just going to end up at Ember animated, so use Ember animated. And I can't believe that Ember animated only got, what, four seconds of time in this talk, but the fact of the matter is DataViz is its own deep, rich field of study, and the intersection of framework thinking and DataViz thinking is actually pretty small. The bulk of DataViz right now comes from BI tools, where it's all sort of about creating those chart templates, and then storytelling and journalism, where we have really rich, unique visualizations, but in an environment where speeds of the essence, getting a story out on time, and then once that story is created, it's sort of locked in. So there isn't, at the chart level at least, that type of sustainability and maintenance that needs to go into application code. So thinking about this intersection and looking forward, there's a lot of stuff that I think are really exciting. Here's chartability. Chartability is sort of like right on the edge research about accessibility and how that intersects with accessibility or with DataVizualization. So where's that, what's at the intersection of accessibility, DataVizualization, and framework? Can we take these best practices and then embed them in our add-ons to make it so people get this type of behavior for free? Or what about design systems? Does your design system have design tokens? And if it has tokens, are those tokens available only in CSS or can you also get them in JavaScript where they'd be useful inside of charts? And then also does your design token handle colors as far as color ramps go, how DataVizualization think about color? And then also sort of from the architecture framework perspective, we mentioned earlier about components and contextual components. These can be kind of tricky because they hide a lot of what's going on beneath the scenes when we're partially applying arguments, but tools like Glint that's going to provide intelligence for components, I'm very excited by this. And then thinking about performance, React3Fiber is fascinating because it takes the React template programming model, but it actually renders to a WebGL canvas where there is no DOM. And oftentimes, DataVizualization, we end up with performance issues where we would like to be able to either use the canvas or use a combination of a canvas and an SVG and HTML to be able to construct something. So it's possible for us to be able to create components that instead of emitting DOM, just call canvas methods. And once we sort of open the box of markup that doesn't actually result in DOM, can we think about compositions of audio as compositions of components and in that way create data sonifications? I think this could be really interesting. And it's also one of those things that intersects with accessibility to be able to make sure that we're expressing a field of data and multiple modalities. I know this has been a lot, maybe even too much for 30 minutes. But at the same time, there is also just going to be so much more and there's so much more to build and this is the perfect time. It's just the beginning and now we get to build the future. Thank you.


All right, let's take a look at the whole thing first You send me an email with the notes updates. That's all cool All right, let me have an additional shot at the end. All right, I Think it's for sure better But there are still some some of the issues now. There's some detail stuff I'm assuming gonna get to it later, but you get to get the same hand pose especially this one The right screen right one that feels really static like fingers out and how the wrist is up instead of looser And there was something about He still feels like he just kind of goes Where it just feels there if everything feels very post-to-post everything moves at the same time So I think you still want to have that moment of him leaning forward You want to offsets the offset the arms you want to look at what is leading is he leaning forward and then looking up with the head Or you want to go back a bit and then forward a little bit of anticipation There's still a lot to be done in this one I think the path is better, but it still needs more if you look at that energy How there's something where You know, I mean I could still still need to go at least Split that difference, but I need to go a bit further And then it still has that weird feel of just arms just kind of hanging they kind of both go back The feet are still very flat like they're not angled out to be a bit more dynamic Everything just feels kind of he still feels like a corpse. These are very very Twins feet are too similar. So you really need to look at a few more dynamic poses For this jump and flip over there I highly recommend that latest multiverse spider-man trailer For dynamic poses. I think I'm gonna do a trailer analysis this week for it So I think timing wise it's definitely better. I just look at how far it goes and it's pushed to poses This still feels slightly rushed Through there. So as he comes down At least here. It's a bit more. You can still probably Break up. It's a horrible drawing, but break up the legs out They don't I know there's an offset there, but you could still push it And as you go forward see there's the thing is that hand is kind of in that same position And then this the web just kind of peers versus imagine Excuse me if that and if you're a bit more angled arm here and the arm could be bent And you know, however, I don't know. I have no idea. I can't draw what I have in my head is not gonna be Yeah, full at all But the point is that you would have an arm back here And then you can move that arm forward and then shoot the web So there is a move forward so that tells the audience. Oh something's happening It's the arm that shoots the web right now It's just kind of a pose with kind of a static roll and then suddenly that web appears and the thing is We're so close to the edge here There we kind of lose it. So I would try I think the camera drops too fast. So what I would try is to keep this size In terms of how big he is.  There's no change Or maybe at this point that arm was back here and then Moves a lot faster to then hold on to this So it just doesn't feel like it's just this one piece of wood that rotates Once you get to here Again, you can probably bring in the legs a bit higher For a bigger swing and it gives you a bigger silhouette and bigger post change And I guess the end is okay. I would just take that building and move it over here So we have a clean silhouette of the character not right here in the middle Kind of a somewhat tangent, but just kind of weird overlap Same thing here. This just feels too straight and static for such a long time There's anything you can do to You might still have a slight twist in it one leg might be out There's something where you want to push those poses But just give this a bit more an interesting silhouette too around here ish That's okay. I'm so Confused wait you're saying So that edge Is here it's so confusing because these are the same colors He suddenly disappears. I would just cheat this and take this down so we can see the ground so we can see him Till the end. It's just a weird cut off Especially with this cut off here in the hand right in front of there and this being the same color No, maybe if there's different textures and focus. I don't know but I personally would take it out so we can see the whole thing Was it so short When it comes out, I think it would help to see the last pose so you can connect with this cut here And I will bring that foot down and not roll the feet up the toes Because you wouldn't really land like this.  I think you have a bit more downwards. I think But you can go harder lower the risk and kind of snap down a bit The screen left arm feels better Same thing here. I won't go heel first just this range But you just need more impact in that so it feels like a lot of the nodes from last time still apply This still feels a bit fast This section and then how quickly you lock in if you want to make this photo real It feels a bit too Stiff through there I think you want to overshoot a bit more in your route And then ease into the ocean come back a bit more and have a bit more twist in the body It feels like it locks a bit too much And then through this you can have potential change in the fingers finger poses Same thing here I will probably bring in that thumb or bring it out a bit more to something where it doesn't feel Like the index and the thumb are the same And then here, you know, there's so much movement here I don't think you're gonna be distracted by spider-man doing something So I will watch out a it's a bit close here, but you can have a little bit of a Move here like a side step and adjustments arms can go a bit higher The fingers can tense up into fists something where he gets a bit more battle ready Or he takes a step back because he didn't expect this to be this big There's a couple of things you can do but right now there's a weird drift in the wrist Going up there You can see that when you scrub Definitely add some business You know, even in like small adjustments. I don't think I'm going to take away from this massive thing here Speaking of which That's a bit Let's go see a bit fast. Let's see Yeah, I guess I was losing a little bit more those fingers. It's a big big big object And it would be cool It's going to be very staged But if that finger will be here Then in the middle finger will be here and I guess here you can start overlapping So it's a bit of a nicer silhouette Just that block in front of the leg I would kind of switch that over a bit more And then as this creature comes up here, Benham It's just very much in one axis just rotates back and head rotates back without any side to side or tilt in y Or rotation in y Change in the head he could come where the the head looks maybe You know eyes are this way looks this way and does this big turn Just something a bit more complex than just a rotation up that feels Too simple and then that mouth open, you know, probably keep it closed and then open And I don't know if that's kind of a He's breathing out. He has bad breath and he goes Is that supposed to be kind of a roar? If so, you got to make that Intensive payback come forward with the chest. Yeah, if you want this to be a big roar There's just a lot more you can do You will then you bring up that second arm maybe trying to get up And then maybe you change that rotation into this or the head is like that shoulders like that Arm comes up, you know, he's trying to get up there And it doesn't just kind of lock in this pose There's a couple things you can still do same thing here. You have still some twinned arms In terms of timing, I know this is more bent, but just kind of move all at the same time stop at the same time And again, it just kind of moves Like the silhouette it feels like you go back participation and for the web slinging but We kind of lose the silhouette if you squint your eyes you do a silhouette test. It feels like a stump Where you want It's never really there.  I think you want to Keep Moving at a certain speed definitely faster. Keep having go up. You can always tilt up with the camera And it's weird that he he doesn't exit To me it feels like you want the head here and it's the chest That hits the camera that then blackens out the whole frame per cut. It feels weird that he goes in Punches the camera. I know you're saying it probably goes into punch venom. It's just a It's just a weird frame to cut on and if you're going for a for a punch Then I would have something a bit more of a tilt that arm really really back Something where it's just a bigger dissipation with a bigger Smack into the face, but I'm not quite sure if that's gonna work So right now it always feels like you want that web to be closer To camera if it's hitting venoms the head or something That's a tiny detail, but so they feel kind of Twinned It will offset on those on those webs, but it feels like you want to give this enough time Let's see you Yeah, I don't think you have enough time to do Pull for a web sling and then a punch. You might just have to go into Pulls himself forward to then Just fly towards camera and like I said the head would be higher and the chest goes into the camera It's a bigger mass that can black out the frame for a cut I don't think you're gonna have enough time and you don't want to slow the whole thing down to do a pull in the punch Unless you start a run jump up Or you can take just one arm for the web Take like one step forward jump off Pull with this side Only this side has the the web So one two step jump up Spy the web pull so that throughout this whole thing You're already in that anticipation of that punch So it reads longer and then Punch into camera, but again that fist, you know, it's gonna take up the whole Camera to then black out the frame Yeah That's kind of it. Let me know what you think. Thank you All right, there's an email you can sign up you can start whenever you want you can submit whatever you want You get 16 submissions either way a like and subscribe would be awesome. All right. Thank you


Welcome, once again, to The Randy Show. I am the JRAF's field coordinator, Brian Thompson. And with me, as always, is James Randy. How are you doing today? Very well, very well. My voice was a little attenuated yesterday, and I unattainuated it, especially for this podcast. Oh, good, good. Yeah. We were in Colorado about a week ago. So are you recovering from that? I'm still sort of thawing out. Oh, no, I recovered within 48 hours or so. But the business of the high altitude and along with the time change, it was a little difficult to get around. I don't do without oxygen very easily at my age. So I have to breathe deep and speak slowly. Yeah. I think that the people in Colorado have evolved some sort of gill that they can just filter out what little oxygen there is in the air. I was looking at Phil Plates' neck, and I didn't see having it. He was wearing an open collar. Oh, well, he covers it up with concealer. He may have something concealed in his back, shoulder blades or something like that. But it is suspicious indeed. Yeah, I do. I think so. So we are going to talk about alternative medicine today, specifically NCAM. It's N-C-C-A-M. It's a sort of little-known subset of the National Institutes of Health, and the Chicago Tribune just reported recently on some of the projects that this division of the National Institutes of Health has been funding. Yes, Brian, I must interrupt you for a second here. You have no idea how many of our viewers and friends and members of the JREF actually sent me that on email. They wanted to make sure it came to my attention. It's no surprise to me. Every newspaper that I saw here in Florida had it as essentially a front page item. They were very concerned over this, and rightly so. Millions of dollars have been spent over the past 12 years that NCAM has existed. And let's just go through some of the lists here. We've got 374,000 dollars to study whether inhaling lemon and lavender scents can heal wounds. We've got... No, wait. Hold on. I wonder if our listeners know what you actually said, that you weren't mixing two events there, that smelling something heals a wound. And that is actually, that's what you said, and that's what you meant. This is so preposterous. It doesn't make any sense at all, Brian. I mean, I needn't tell you this, and most of my listeners will agree, I'm sure. It doesn't make any sense whatsoever. Not the faintest shred of logic or rationality is contained in that. But this is a government agency who has given tens of millions of dollars to play with, and they want to keep employed. They want to keep on a project. Why don't you investigate whether lavender smell will heal a broken finger? Yeah, we'll break somebody's finger, his finger, there. Okay. Oh, I'm sorry if it hurt, but this is research. This is science, you see, and we've got money. It's financed by the American taxpayers. Oh, that's okay. That's right. Fine. That seems to be the attitude. They've got to come up with silly projects, no matter how far-fetched in order to just justify their existence. Do you think that there's any justification for studying these kind of things, that all no matter how outlandish something is, when do you think something is worthy of study and when is it just something we should move along from? Well, we could establish a scale. Inhaling lavender is at one end of it, and coffee enemas is really at the other end of it. That whole panel play of the things that the Chicago Tribune examined there and reported on, which, as I said, made such news all over the world. I got a call from the UK on it, even because it showed up in one of the newspapers there.   I could have done that for $25 until the bill doesn't work. Well, you've got to get the pancreatic cancer patients. I'm sure you have to get some sort of representative sample. That's what amazes me, is that they're able to find people that I assume that if you're in such a state that you're going to consider whether a coffee enemas is going to cure your pancreatic cancer, you must be pretty far down the line of mortality. According to this report, the people who participated in this study lived an average of four months after the coffee enemas. Oh, boy. It's ridiculous. It is so childish. It is so juvenile. When you tell this to a classroom of grade school kids, they'd be on the floor laughing because they know how silly it is that when isn't the, when is the NIH and the NCCAM, which is Senator Harkin's idea, by the way, thanks a lot, Senator. He insisted on that. I don't know whether you know how he got interested in this alternative healing thing, Senator Harkin. No, tell us about it. Very briefly, it doesn't take much telling. He found out that, that it wasn't coffee enemas. What was it? English breakfast tea enemas? No, it wasn't that classy. Some sort of hot drink. It was much less classy than that. But he found out that some sort of thing, he thinks healed some sort of allergy or some other thing that he had. And he had no evidence of that whatsoever.  He got better and he said, ah, that must be the reason for it. He might have also said, ah-gah-gaboo, ah-gah-gaboo, ah-gah-gah twice a day. And if he had done that, he would have said, there, that's the incantation. Let's write that down and we'll spend another $400 or so, $1,000 of American tax money on that.  There's no other way to describe it. And Senator Harkin had, did they still do tarring and feathering? I'm not sure. Not officially. I got some tar outside here. I would volunteer the tar and I'll shed the feathers if they, if need be. I see a Starling out there. So maybe he, he can be talked to and convinced. Yeah. So what I don't understand also about this is, is why it's so expensive. $1.25 million to study whether massage makes cancer patients feel better. Is it going to make them feel better?  It makes you feel better. Does it do anything other than just making you feel better? Then everybody should have it, right? Whether they're cancer patient or not. Let's give it to everybody. We could spend another tens of millions of dollars on that easily. They have the money. They're not restricted. They can spend it on any sort of foolish thing that they want to and they do. Well, according to NCAM director, Dr. Josephine Briggs, she says that they're a $128 million annual budget is less than half of percent of the total budget of the NIH. So what? I'm not denying that the NIH does wonderful work and we need them in operation, but this sort of thing just saps the money off the top and the bottom of all this funding.  I can't believe that someone hasn't done something. Where is an angry senator? Where are the angry senator? Where are the Claude peppers now that we need them? We need some people that are going to take time out of campaigning to try to be the next president of the United States to sit still for a minute and think, hey, here's something I could really do something about. Where are the politicians, the movers supposedly, who will move this sort of thing ahead for us? Well, part of the work we do here at the James Randy Educational Foundation, of course, is going after frauds and hucksters who try to sell what they call alternative medicine to helpless people who may not know any better. And if you want to support us now is the time to do so. Just go to randy.org and we would love it if people would donate during our season of reason here at the end of the year. The end of the year is fast approaching. So if you haven't done so yet and you think you might in the future, now is a really good time to. And if anybody wants to ask you a question to be answered here on the Randy Show future episodes, you can go ahead and email me, brian at randy.org, b-r-i-a-n at r-a-n-d-i dot o-r-g and just put Randy Show in the subject line and we will answer some of those on future episodes. So Randy, thanks for being with me today. I got to tell you a joke. We'll close with a joke. Can I do that? Okay, the family gathers around the fellow in the hospital who is having some medical problems and he can't eat. He's got a throat problem. So they have to administer food through another orifice and I'll let you imagine what that is. And they do this in hospitals because some people have to take their nutrients that way. And so the lunchtime arrives and the nurse comes around and she shoes the family where they put an enclosure around the bed. So it won't be embarrassing.  And he says, oh yes, I certainly would enjoy that.  She says, what's the matter, sir? Had too hot? He says, no, no, too sweet. Maybe we can close this podcast with that. One of the worst jokes I ever heard as a kid, but I did hear it as a kid. So I'm getting a little crazy in my old age. Forgive me, ladies and gentlemen. You're forgiven. The Randy Show is a production of the James Randy Educational Foundation. To learn more about how we promote science and critical thinking, go to randy.org.


Tidus Software is probably most infamously known for Superman for N64, one of the most dreadfully awful games ever made, but before that, they actually had a hand in quite a few Super Nintendo games, granted they're not exactly instant classics, stuff like Blues Brothers, Prehistoric Man and Realm. No not that Realm, and not to be confused with the early 90's PC game, Realms. This is a 2D side scrolling run and gun game taking place in the year 5069 AD, and you're fighting off an alien invasion through four long levels, starting in a forest and working your way into the alien's home base. You play as a super cyborg called Biomech, and he looks like Trunks cosplaying as Vegeta. Seriously, that looks almost exactly like Vegeta's outfit. Anyway, it's your standard run and gun fare here. You pick up a variety of different weapons from homing lasers to spread guns to more powerful lasers. You can flip between two of them at a time, with each having their own respective ammo that you can collect by shooting these crystals. And you'll need every bit of ammo you can get because one quality this game has is the number of bosses and mini bosses you have to fight. Yeah, it's pretty simple pattern recognition, but there's some interesting battles here.  That's pretty cool. What keeps realm from being good or even decent though, is the level design. The opening forest level in particular just feels blah and uninspired. The layout is just kinda thrown together, and you just wander all over the place. Granted, there are some interesting elements here like these platforms. You have to rotate by shooting a switch while fending off these cool looking tree climbers. But then you get this section here, where you're just making blind jumps while these flaming tumbleweeds bounce all over the place. It just feels totally random, and it's frustrating for the wrong reasons. Also, there's no battery save or passwords here. This is yet another game you gotta beat in one sitting. The controls are good enough. Nothing that touches the likes of stuff like Contra or Super Turrican, but it controls better than something like Timeslip, or some of the more generic and derivative front and gun games out there. You can hold L or R to lock in a diagonal shooting angle like Super Metroid, which is a nice feature. But other than that, it plays about as you'd expect, just not as tight and precise as some of the more prominent games of the time. The graphics are okay, not terrible, not great, and again the highlight is the boss and mini-boss design, which is pretty cool. There's also some cool effects here, like when you defeat this heart mini-boss, the sun briefly shines through before it starts raining. The music kinda sorta reminds me a bit of Super Turrican, only much cheaper sounding, if that makes sense. Same with the sound design, I feel I've heard all these sound effects before in a ton of other games. So, yeah, Realm is okay-ish, it's not in the same universe as stuff like Contra, and probably better compares to lesser titles like Timeslip, which I looked at a few months ago. Realm is better looking than that game, and controls much better, and the game cuts a quicker pace. But the level design in Realm is just kinda uninspired. Here's another example where you're riding this cool-looking machine thing, but that's the extent of it, it just carries you up the incline and you fire at enemies as usual. I will say the game does get better the further you progress, but the first couple levels really drag this one down. Realm is frustrating, but there is some cool stuff here, you just have to work to get to it, and whether or not you wanna put in the work is up to you.


Hello friends, welcome back to another episode here on the channel. I hope you're all doing great as always and for anyone new to the channel. My name is Lee, also known as Osiris in today's episode. We're continuing on with our VGC Series 10 content and featuring another rental code team is from my good friend, Johnny Hacks. He has provided teams before on the channel, which we've always enjoyed featuring and today we've got another cracking one. We've got a dial got based team and it's a restricted that we haven't featured yet on the channel. So really looking forward to getting into this one today. As you can see, you've got the Dialga there, the life orb. So giving it a little bit of an extra bit of power when it does get those attack and moves off earth power flash cannon kind of the staples that it's going to rely on here. Then you can kind of see though the big elephant in the room, which is going to be the Belcephalon, which is something that we don't see that often, but works so nicely with the telepathy ability on Dialga, which gives you immunity to any kind of big spread moves that would normally hit you like the mind blown.  You've got trick there as well to really punish other opposing Pokemon on the opposite side of the field and then shadow ball and flamethrower just to give it some kind of attack and options outside of just that mind blown. If you've not got that favorable partner like dial guy next to it support and cast going to see the Amungus that works well in trick room pairs up nicely with the algorithm makes a nice call between that and incinero got the incinero there with the safety goggles giving you a little bit of immunity from redirection, especially like rage powder from Amungus. And when you're in front of Azernius and it is trying to Geomancy up and then we've got a rack with it. It is picking up a little bit of usage recently. So it's nice to be able to see it kind of featured here. Obviously got that wide guard, which is a really nice tech to kind of protect the team from all of those spread attacks that you're going to see and then rounding off with incinero's best buddy at the minute, Rillaboom. So team looks great. Looking forward to trying it out today. As always, we will have a couple of games of the team kind of pilot a showcase it talk through it and then we'll wrap up with the rental code at the end of the episode. So sit back. Hope you enjoyed today's episode and without further ado, get into game one. First up today, we have a Volcarona, Shadow Rider Calyrex, Tyranitar, Tabulele, Whimsicott and Dragonite. This team looks fire. This team looks great. The Tyranitar inclusion in there is really nice. Obviously gives weather disruption, gives a dark typing as well. And to a certain extent, I guess something that they can use under trick room if that is an issue. I do think Blycephalon is going to be pretty good here. So I'm kind of tempted just to leave Blycephalon Dialga. Got to watch out for the T-Tar lead, but I don't think it matters too much. The Whimsicott obviously is an issue. That's the only thing like Whimsicott. We could lead incinero Blycephalon and then just go for Mindblown or just go for Shadow Ball. Or we could just lead incinero. It's just we've got to stop the tailwind. Like if we go Blycephalon, the tailwind next to Calyrex is a bit of a problem, isn't it? They may go for something like Lele though. Up top, you know. So yeah, let's go Blycephalon incinero. Let's go Dialga and I think probably... Ooh, Arachnid, Boom Amungus. Maybe Boom. Maybe Boom. Although... It's just, it would be nice to change the terrain, right? From Psychic Terrain. The Dragonite is going to be tough for Boom to come in against. The Volcarona is going to be tough for Boom to come in against. And that's where Arachnid would have been good, but... We'll see how we get on. We'll see how we get on. See what my opponent brings. Okay, so Volcarona and Whimmy. That's actually alright, because we can literally go Mind Blown here and fake out into Whimmy.  Two Mind Blown and we just got Flamethrower. I think we've got Mind Blown. And then we're taking damage on her incinero. Is this too much of an obvious play where we fake out the Whimzacot, you know? Where we could potentially go like parting shot here or just pull a switch straight into Dialga, to be honest, to avoid any damage. And we keep incinero on the back. So we've got a good switch in for Blaseflon the next turn. Because Volcarona, like, let's face it, it's not putting on any pressure to have Blaseflon here. We may see Tito come in. Okay, it's Tapulele. Yeah, okay, I want to get around. But I guess they probably want to try and get the tail wind up, which is fine. The thing is, with the psychic train coming onto the field, it's a little bit awkward for my opponent to use taunt if they've got it on something like Whimzacot, you know? And the Lele is going to take an absolute ton of damage here from this Blaseflon. Mind Blowing. So the telepathy kicking in, which is nice. Let's see how much damage we can do. And we'll take the Whimmy down to its sash undoubtedly. Up. Wow, Whimmy no sash. Okay. Well, the tail wind is up. The issue about doing this is it obviously gives us a bit of an issue where Calyrex can kind of come onto the field now and start that snowball. And we do need to be very careful around something like the Lele with taunt. What we could potentially do is protect our Algar switcher into Rillaboom. Because then we get rid of the terrain, we've got Faker at the next turn and then we can trick her in with Dialga. We should take at least one attack from the Calyrex on the switching. And if they go Expanded Pulse, they're probably likely going to move Blast into Dialga. If not taunt, I would imagine. Depends if they've got it. So Dialga just protecting here. You want to avoid as much damage as possible. Astral Barrage coming out. Yeah, boom. Still going to take a hefty chunk of damage here. But we should take this with the Assault Vest. Gives you that nice kind of buffer to be able to switch in on that big attack and a Dazzling Gleam. So we'll take both. And we've got access to Faker out now. So we can get the tricker up this next turn. Unless something like that happens, which is super annoying. But at least we avoid giving the Calyrex a boost the next turn. Because by getting Incineroar onto the field, that makes it a little bit easier. But it's still annoying. Still annoying to have to deal with that. But, like I say, we're not in a bad spot right now. Because I think Incineroar hasn't got the Throat Chop. Throat Chop? Do you want to give it? No, I'm parting Shot and Flare, but it's in roll. Okay. We'll figure out the Lele. We'll get that tricker up now. The Lele may switch out. So you've got the Psychic Train to come back in. Oh, wow. They protect the Calyrex. That's nuts. That's nuts. I think they just sealed their fate there now. Because we just double into the Calyrex the next turn. We don't really care what the Lele is doing. Unless it keeps critting us. Because it has already ruined Rillaboom's day. But we're all right. Do we just double up into Calyre? Well, I mean, it's obvious. Last turn, they've either got a switch, which they may do. Because they're in a bit of a tight spot. Or they stay in and just get decimated here. And then that is the end of the game. Yeah, because the Flash Cannon will be more than enough to get the Calyrex here. There's a kind of thing that you kind of see with these sort of teams, the Calyrex ones, that they're quite fragile in regards to if you can get a tricker up against them, then they fall apart pretty easily. Unless they've got, like, specific trickering checks.  Is that Specs, do you think? Maybe? Could be. Has he used anything other than Dazzling Gleam? I don't think so. No. So it could be Specs, Lele. Tier 1 pit is out for my opponent, so good about that in mind now, depending on what comes in as their last Pokemon. But I mean, we're sitting in a good spot, right? Is the Volcarona. I think we take an attack from Volcaron. We'll just Flare Blitz, and we'll go for the Flash Cannon. Like I say, if we suspect the Specs on the Lele, which I think it is from the damages doing from the Dazzling Gleam, which may have been enough to get the really boom without the crit anyway, it's not going to protect, and Incineroar going to be able to deal with the Volcarona pretty handily by itself. So, like I say, we're not, I don't think, we need to worry about taking. I mean, they could overheat into the Dialga. That's probably the only thing that they got that can knock us out at this stage. We should take even from this range. We'll find out, find out. Ooh, we don't, we don't. But a Flare Blitz is going to be enough, and a Shadow Ball. We kind of pin it from both ends now. So, when the Trick Room ends, we've got Blasephalon to kind of wrap this one up. And it's nice to get to see Blasephalon do some work. It's always one of those Pokemon where, you know, you come into a team preview, team like the start of the episode, and you think, are we going to get to see much of Blasephalon today? So, it's nice to kind of kick off where we see it do a nice bit of work, especially against the Calamax team, which is, you know, one of the more prominent and centralizing restrictors that we've got in the format. And we do pick up a win. It's a very good game to my opponent, and a nice one for us to kick off with today. With the team, we will jump straight into Game 2 of today's episode. Next up, we've got Nicole playing a Reggie Alecki Tourney. This Kyogre Katana, lander Asterian, and Incineroar team. Pretty standard-looking Kyogre team. I like the inclusion of the Katana there. It makes it a bit more scary, I guess, but it gives a bit more offense as well with the steel typing, especially when you've got that Trick Room support, the Tailwind support, and you've got that ElectroWeb support. The one thing you would say is, if we can, again, get a Trick Room set up against this team, then we're in a good position. And it's kind of a common trend that you're seeing in Series 10 at the minute. Tailwind is quite a predominant speed control mechanic for teams, so Trick Room is always the first thing that you think of to combat that. It's just about being able to get that set up, because you obviously have to worry about the taunt from the Tornadis, which could be a little bit of a problem. And the other thing to consider is the Katana will, if dialogue, a few problems just in regards to having, like, sacred sword and being able to get some big fat damage onto us early on. So I think, really, boom, Dialga is a lead's good. I think we probably do want Incineroar in here. The double fake up is going to be nice. And then we want Arachnid. Arachnid's pretty good. If we can get the Trick Room up, there's not much my opponent's got that Arachnid needs to really worry about. And between Incineroar and Dialga, I think we should be able to handle the Katana pretty well. So let's see what my opponent brings to this one. Can imagine it to probably be, well, are we going to see Incineroar Tornadis potentially? I don't know. They've got to be in mind to try and stop the Trick Room, you know? Yeah. There we go. We guessed it right. Bingo. We got it. So I mean, yeah, it's a little bit awkward because now we need to probably switch in Incineroar, protect Dialga here because I think what they're going to do is they're going to fake out Dialga and go for the Tornadis to stop the Trick Room. Whereas we want to try and put ourselves in a position where we've got the active fake out next to the other thing that you've got to consider as well, the Incineroar could have roll. So that is something that we need to kind of think about. But our main priority is getting our Trick Room up, and we do not want to be taunted. So we've got to try and set up some sort of support to be able to do that. And I feel with the Dialga not on the field at the minute, the worst case scenario is we see a parting shot from the opposing Incineroar. But I think the situation that they're in right now forces their hand to go for the fake out, you know? We'll soon find out as we release that protect from the Dialga and fake out, yeah, and probably a taunt, or maybe even a hurricane, into now they go for the taunt. So now we've got, yeah, I think the thing that we need to worry about now is do they have a roll or taunt on the Incineroar. It's always a nice option to have, but we can go for the fake out into the Tornadis. We may see the Tornadis switch here because at this point, you know, my opponent has to kind of concede that fake out's coming and we are going to be able to get the Trick Room up as we see Dialga come onto the field. And we may see the Incineroar go for that parting shot. So we, I mean, we had to kind of check the Tornadis in case they did stay in because then our turn's kind of null and void and we don't get the Trick Room off. The snarl's not ideal, but it's not the worst thing in the world because the next turn we can pull a double switch if you want. We want to reset those special attack drops and probably preserving Dialga is not a bad idea. You know, you can pull a switch to a rack when it can go for a parting shot into the Kailga, I think it's probably a nice, nice idea to do. Get Rillaboom and Arachnid on the field at the same time. It would be good. It also keeps our Incineroar in the back, so keeping in mind that, you know, the Cartana could potentially be the fourth Pokemon for my opponent. We're switching into Rillaboom here. No, we're switching into Arachnid here. So just keeping that Intimidate in the back, you know, it helps against the Cartana for sure because that is going to be a matchup that could be a little bit awkward without the Incineroar and Dialga, especially for Rillaboom and Arachnid to deal with. How are we going to see?  Yeah, let's bring Rillaboom in. Let's bring Rillaboom in. Could bring Dialga in, but like I said, you know, we'll stick with what we... Oh, the U-turn. Not ideal, but not the worst. What's Nicole going to bring in now? Is it going to be that Tornadis or is it going to be the Cartana? Cartana coming in now would be a good call if it is in the back. Yeah, there we are. There he is. There he is. Cartana, a nice beam coming out. Nice. Yeah, that is a nice play for my opponent for sure. We've got to be very careful around the Cartana right now, but we do have an active fake out. We do have a way to... We could potentially double into it. I think the Kayoga is pretty threatened here. The grassy terrain being on the field is not ideal. But I don't think the Kayoga stays in. So I think we could get some decent damage onto the Cartana here with the liquidation. Since it rains up, it's not going to do massive damage, but any damage at this point onto the Cartana is good. I can imagine either the Kayoga switching out or just protecting this turn. The thing is, it's probably likely going to be the Incineroar that comes in on that Kayoga slot. And we could have liquidationed into that slot, kind of predicting it. And that would have given us such an advantage and just faked out into the Cartana. But like I say, the damage onto the Cartana is going to be useful. It kind of frees up the field now for us to get Incineroar onto the field this next turn with Kayoga kind of not on the pitcher. So not lost a great deal here, but we're not on an amazing spot. But the health restoring here is decent. And we probably want to protect getting Incineroar in how many turns of trick room we've got left because we need to keep that in mind. We've got two. Okay. Yeah. I can't afford a Raccoon to take a Leafblade, not under grassy terrain, even if it is intimidated. So we're hoping at this point, I mean, they could sacred sword into the really boom slot, predicting the Incineroar to come in. It would be a kind of a play that would make sense, especially with active fake out from my opponent side of the field. Fake out into a Raccoonid. And we're going to see Leafblade into the Raccoonid as well. So that's all right. And imagine the Cartana is probably grassy terrain leaving the field. So that helps us out a bit against the Cartana. I think what we're going to do is potting shots straight out into the Cartana and go for a liquidation into the Incineroar here. Because I think the Cartana is likely a sold vest. Just for the fact that it didn't protect on that fake out, where it could have done and saved itself some damage. Yeah. The Kyogre probably likely to come back in here. Yeah. And then we can get that Algarin. And then, yeah, all right. Tornadus coming in. So we need to be a little bit careful around. I mean, that damage is really good. That's minus one in the ring. And the potting shot going to be nice. Where we can get the Algarin potentially on the field now. So we don't really want to bring Incineroar. I mean, Rillaboom. The only thing that we would do to bring Rillaboom here would be fake out and then attack into the Tornadus. But do we bring the Algarin? It's just Algarin and really have the firepower against the Kyogre. But I think the Algarin is probably better because it distracts my opponent a little bit from being able to just attack into a Raccoon it here. And they have to be more aware that the trick room could potentially go back up again, which is not ideal for my opponent. The Reign does stop, which isn't great. But in one respect, it's quite good for us in the fact that Hurricane isn't 100% accurate. Now we could just double into the Tornadus here. I think that's probably the best play. Yeah, because they're going to taunt to stop this trick room. If they go for Thunder, it's not. It does hit, which is a little bit unfortunate because it's out of the ring. We do take it. They're life orb Ogre. Jesus. But we should get rid of the Tornadus here. Life orb Ogre, that's nuts. We do take that, so that's some good EV in there on the old spider. We are taunted though, so we've got to bear that in mind as well. So there's not going to be plain sailing. An Earth Power probably will get the Cortana, so it's probably good at this point to switch in Incineral for Arachnid. Earth Power, the Cortana. Is it going to get it though? That's the problem. That's the problem, right? That's the problem. Is the Earth Power going to get it if it is a Saltfest? I don't know, I don't know. Because we're likely going to see Sacred Sword into Dialga. So the Intimidate definitely going to be helpful here. Sacred Sword. Oh my God. Mean what you do. What you do in that situation? What you do? And if we see an Origin Pulse here, we're done. Now they got Ice Beam. Okay, well, it's not too bad. Critical, critical hit. Not ideal. But what have they got in the back? What have they got in the back? They got Ogre. They got Incineral. Incineral makes a lot of sense to come in now. Get the Ogre out. Go after the Rillaboom. A Poison Incineral is going to be really tough to manage. It's going to be really tough to manage. But Amimu can go for Faker. The thing is, right? Do they switch Cortana out here and protect Kyogre? You know, that would be the thing that I would imagine they'll probably do, right? So we could do this. We predict this. Predict them switching the Cortana out, which I think they're going to do and protect Kyogre. They don't. Wow. Okay. Just bring it Incineral. That's not ideal. We probably lose Rillaboom now. I think this player's just lost us the game. Oh, they do have Detect. All right. So that's not the worst thing in the world. But yeah, the Iraq when it's taking that thunder out of the rain has put us in a really awkward spot. I mean, there's not really much we can do with the boom, the boom now because we need Iraq when it to help deal with. We needed Iraq when it and I'll get to deal with the Incineral here. Actually, what we could do, you turn into Incineral, switch into Iraq when it and then we get the intimidate again. But if you lose Rillaboom, then Kyogre kind of just wins this.  Let's hope they don't get a crit again. Jesus. Skorblens Cortana for you. Isn't it? It's Skorblens Cortana. There's nothing we can do about that. You know, that's what it is. Hopefully we can check my opponent's team up. But the crits have saved them. Yeah, save the bacon. We had opportunities, you know, in this match where we could have we could have just pinned pinned my opponent and we talked about it through the turns. So just a little bit unfortunate how it has worked out with the critical hits. But it does happen sometimes and we are going to say good game because there's no point of playing on now because the Kyogre in the back can just come in and wipe us out. But yeah, Cortana doing a lot of work in that one. You know, it's a little bit disappointing to have the outcome like that. And like I say, we could probably look back at that and say there's definitely points in that match where we called switch ins but we didn't really act on it like we maybe did and played a bit passive covering things and certain things like that. So good game to my opponent Cortana with the Skorblens kicking our butts. But we'll move on to our next opponent in the episode. Our third and final game of today's episode is against an end time Mimikyu, Shadow Rider Calyrex, Rillaboom, Glastria and Urshifu. Interesting team for sure, especially with the Mimikyu inclusion there, you know, it's got the potential to set Trick Room up for the Glastria and with the disguise it makes it a little bit more difficult to deal with. Obviously has things like taunt as well, which can shut our Trick Room down from Dialga. And obviously under Trick Room, Glastria going to be a little bit more awkward to deal with, especially with if it is a salt vest, which we kind of imagine it probably is Urshifu or the Dark or the Water type I would imagine. So how are we going to approach this one? Like Blycephalon could be good here but the Mimikyu makes it a little bit more difficult for sure. But I do, I am kind of tempted to bring Blycephalon up top because they haven't got any tailwind and it gives us a real easy way to at least set our Trick Room up as well. I think on Raccoon it's incredibly good here, especially under Trick Room. Probably need Incineroar, like I would like Rillaboom, but the Glastria kind of... No, because Dialga I think can deal with Glastria. Glastria, it's just got to be very careful with how we deal with it because I think they're going to be able to hit us super hard under Trick Room. But they're not going to enjoy taking Flash Canons. And like a double up Flash Cannon, Grassy Glide might be enough, maybe, who knows. Might come down to Blycephalon dealing with it. But Enti and Mimikyu, okay. I don't think we Mind Blow here because it's just a waste against the Mimikyu. I mean the one thing we could do is go Mind Blow on and Flash Cannon and that would get rid of the Mimikyu and then that Mimikyu is gone for good. And we'll do some decent damage to effort in the process. Could Trick Room as well. But it's likely we get taunted maybe from the Mimikyu. I don't know if it's going to taunt, but it may not. The other option is going for the Earth Power into the Enti, which allow them to set the Trick Room up potentially. Ooh, it's Scarfed. Okay, it's at speed enough, so that is that done. That's not good. See what this Mimikyu does. Okay, Scarfed Enti. Totally ignore that and a play rough. Goddamn. Could have just Trick Roomed. The Earth Power will do a nice chunk of damage. Take that down. So we get a trade off, but it's a pretty bad one from our point of view, to be honest. Because now Calyrex definitely comes in and there's not very much we can do against it. I mean we can. We've got to rack with it, so we can Wide Guard. Okay, it's Earth Shrifu, keeping the Calyrex for later. Let's go for Liquidation into the Mimikyu and let's switch into the Boom. Because I think as long as we've got to rack with it to help us set the Trick Room up, with Dialga, we're not in a terrible place, especially if Calyrex is in the back. We just need to get rid of the Earth Shrifu. It's likely to go close combat here with a mansion. It's not really going to be able to do very much. Jeez, that and a play rough. This is where Incineroar would have been very, very useful. Shadowclaw as well. Okay, into our Raccoonade. We'll be taking that pretty well. Liquidation going to come out and break that disguise finally. So at least we've got the Grass of Glide as an option this next turn. But again, we need to really think about preserving Rillaboom here, rather than just letting it kind of go down. So the fake out is going to be useful. Is the liquidation going to be enough to get the Mimikyu? Probably not. Let's just check this Earth Shrifu. I need to check my forms. It is a dark fighting type. So each life actually not going to be too bad onto it. But it's just whether or not do you protect with Earth Shrifu here? I'll switch it out. I think you probably protect it. But do we want to risk the no protect? But we're going hard in on this now. And there's Kali. Big Kali. Nice to see the Mimikyu protect here. But I doubt it will. I think it's going to Shadowclaw for Raccoonade. We're taking that pretty well. And then we get a bit of health back here. It doesn't do too bad damage to be honest.  Do we want to get rid of the Mimikyu? Not yet. I think we want to try and get... I think we want to try and maneuver Dialgar into the field in his next turn. And Trick Room. So let's wide guard and get Dialgar in. And then we can... Like if we get the Trick Room up, we kind of win this game I think. The Scarfed Entire though is a little bit annoying. It's always something that I forget about as well. You know, Scarfed Entire. See Entire and never instantly think of the Scarf. And the amount that we've played on the channel, I should really consider that that is... That is something that a lot of players are kind of going to and relying on. So there's a Shadowclaw critical hit. Not ideal. Not ideal at all. Now, did we go for the Wide Guard again? Or are they going to just attack into Dialgar? That's the question. That's the question. Because we could just go after the Mimikyu. I think it's probably better just to Wide Guard. Just to kind of cover bases and go for the Trick Room. They could Trick Room as well with Mimikyu. I think that makes a lot of sense here where they're like, Trick Room's coming. I'm going to Trick Room. Or they could just decide to just keep attacking with Mimikyu like they have been doing, you know. Substitute. That's alright. And they're just going Shadowclaw. They're not really helping us out here because, you know, in all honesty, we would have had a Raccoon Head still which makes things a little bit more... a little bit easier for us to deal with. The problem is we can't just ignore the Calarax now. We could protect this next turn to stall out a turn to Trick Room but it may not as well. Kind of like we want to concentrate a bit more into the Mimikyu here but at the same time can we afford to allow the Calarax to get an Astral Barrage off them? Probably not. But it is probably likely going to protect, right? You've got to imagine it's going to protect. But like I say, it's just annoying.  They've got to protect the Calarax because they definitely suspect a double in but at the same time, I don't know, I feel like I'm just going to go for it. Yeah, so they didn't protect the Calarax. Hopefully a Flash Cannon's enough to get it. So Shadowsneed coming out into the boom. It can take that pretty well. Please be enough. Please be enough for the Lightbulb. It is, okay. Mimikyu's the one thing we don't need to worry about, like massively here. Urshavu is the next big problem but a Flash Cannon, a Negrasi Glide or a Wood Hammer should be enough to get it. And there's enough Trick Room turns. Well, Wood Hammer probably better now. Wood Hammer, yeah, Wood Hammer, Wood Hammer. The great friend. We've got to worry about Sucker Punches, well, you know. Like, Sucker Punches is still going to do a fair amount of damage but I'm just going to double in on the Urshavu again. They may protect here. May protect. But again, it's like, yeah, they're not protecting it. So we'll get it. There's a sash. At least we're not going to take too much recall with boom we should be able to deal with the Mimikyu quite easy. And you can see from this match that it's so easy to kind of get yourself sucked into a mind-frame where you're like, are they going to protect it? Are they going to protect that Pokemon here? Because it's in such an awkward position. But you've got to think like the trade-off in those situations where it's like, okay, if they don't protect and they attack, we probably lose the game. So it's like, do we just cover bases where the Mimikyu's not really doing too much and then we can kind of go from there. They're difficult. They're coin flips at the end of the day. The shadows need to come out from the Mimikyu. They're going to be able to pick up the knockout on the Rillaboom. But this flash cannon life orb should be enough to get the Mimikyu here for sure. As Dalga are going to be the last Pokemon standing. And after losing Blisphalon so early on to that end tie, it didn't look too good. But we managed to be able to kind of pull this one back and pick up a win. Phase two Shadow Rider Calyx teams today, I believe. But good game to my opponent. And what we'll do now friends, we'll hop over and just remind you all of today's rental team. Right friends, here is today's rental team and a big shout out to Johnny again for providing us with this team today. It's been a lot of fun to feature on the channel and I think goes to show that Dalga definitely a good option within series 10 and definitely has some potential to do very well. Especially with things like a Raccoon that can come in and really support well under that trick room and the Blisphalon with the Mindblown is just a really cool move and option to have especially when you've got telepathy Dalga that's not going to take any damage from it in a way to really pressure opponents if they haven't got that instant kind of tailwind or Pokemon that's going to be able to add speed. Like you've got a little bit punished in that last one against the end tie but all in all Blisphalon a very fun Pokemon. I'm a little sad that we didn't get to use the trick today because I think it can be a nice option to punish opposing teams as well and it's a really nice option with the choice scarf there just to kind of switch items and then lock them into something that's not more favourable. But if you do try the team as always please let me know down in the comment section below what your thoughts are on the team and if you've got any rental teams of your own please let me know or provide them and I will try and feature them on the channel. We've had some really nice requests and interesting requests recently about things to feature. One of them was Mil Tank so I've actually started putting that together so maybe next week we'll have that on the channel and that'll be a lot of fun because Mil Tank surprisingly fits into a bit of a niche that could work in Series 10. So we'll wait for that one, keep an eye out for it but we'll wrap it up there friends have a great rest of your day whatever you're up to and we'll be back on the channel very soon with some more Series 10 content so until then take care of yourselves and bye bye.