Everybody for us here rip in 2022 Star Wars chrome galaxy hobby 4 bucks number 14 random letter style on May the 4th Yeah, it's time to pull some reds and supers All the good stuff. Good luck everybody I'll go over a few of the I guess nuances of like a random letter break, especially this one Random letter first of the name on the car. It's anything with the goes T anything with like With an a it's literally first letter Autograph cards go to the first letter of the character not the actor If an insert has no text, we'll go to the checklist because they'll all have like a name on the checklist and Then for all gameplay galaxy inserts you go to the first letter after Star Wars So if it's like Star Wars X-wing it goes X for all the gameplay galaxy inserts just those Checklists up. So that's good to go Wrong one All right, good luck y'all there will not be a recap in this break either actually we can recap anything numbered base refractor of wedge and tillies in battle going w Creatures the cantina refractor for C.  Oh Number 34 150 big card Great star that's going into a mag big-time o-card to start us off Got a refractor of a dark turn for Anakin Skywalker So here's like the insert for instance like this is v7 But on the checklist if you go like v-7 literally the name is the from gang so that goes T for instance Let's say refractor aboard the bridge Yeah, Blake's pretty as pretty as pretty good price. I think there might be some drip specials going on Yoda refractor Did you like that? Yeah, Star Wars X wings there's that get goes X on the gameplay galaxy refractor attack on Hawke Refractor of the Skywalker's that goes T. How brave of you Dave refractor Chewbacca's anguish See refractor life on Tatooine Right refractor the Skywalker legacy That is Luke lay on home that starts with L refractor BOSC It's not about the life on Tatooine car was just looking beat up like Just beating them up Hunter refractor is galaxies great as scoundrels refractor for G Predemption base card atomic refractor man with a mission nice Tomic refractor man with a mission with the auto behind it is a saws ventris You can flutter man as a saws ventris goes to the a spots. Yeah, it's just whatever the first like name it That's the actual name of it Star Wars Rebellion are gameplay galaxy Refractor Lord Vader assemble or ready to ship goes L Fractor mace windows barrage Two atomics in the first box Fractor of Darth Vader versus Obi-Wan Kenobi deep the Sith rule of two Right down a four and seven on dynasty Looking better there four seven seven seven on undercard prism Everything else is the same for now Sith Trooper refractor for s I guess those tops Refractor the infamous Boba Fett goes T. Come on now Fractor Boba Fett ambushed Fractor the Jedi and the princess T Refractor Trudgin T Fractor Wrecking those W Super Star Wars goes s Refractor a wookie in the wilderness a Refractor Obi-Wan Kenobi for oh green auto is Lux Bon Terry 1099 Jason Speesack is Lux Bon Terry going to L refractor Boba Fett B Refractor Tuscan Raider at Sundown T Fractor duel on the Death Star D Fractor Stormtrooper survey the desert s Fractor Harrison doula H. There's salacious B crumb on the base Refractor Tech T Fractor Princess Leia or sorry Leia or gone to their L wave. That's really nice Nicely lack of faith 72 of 99 lack of faith wave Star Wars Battlefront going to be a Tamek Rekha Numbered 106 of 150 purple refractor now is going to be a vintage Star Wars v 12 That's number eight of 50 the 12 is do lock shaman that goes D Refractor inside the meditation chamber two boxes left halfway through That's fine. They're gonna have to look the other ones up anyway, but So Wahoos all right more hockey came in It's the four on dynasty here coming up soon Star You're like like Hollywood Walk of Fame How did she not have one That's refractor aboard the bridge Bit odd refractor Yoda refractor attack on Hoth mojo Nice that's huge The shadow of the Dark Lord 43 of 50 see with a big guard there The shadow of the Dark Lord mojo to 50 Good color in this and this break so far the Skywalker's refractor T Fractor Chewbacca's anguish Star Wars Starfighter So it goes s life on Tatooine refractor L Q would have Qui-Gon Jinn Which the numbered Qui-Gon Jinn's do pretty well Q is also combo'd right Yes, you get all the X-wing cards to a wave refractor It is a Cobb Vant this goes to the C spot. Why can't I separate there we go Cobb Vant 16 of 99 Green refractor very nice original trilogy concept are 1092 of 99. That's gonna go to the L spot specifically This card is called Luke Skywalker Princess Leia and Han Solo, but it starts with L Very nice green refractor really good box here Yes, the Skywalker legacy refractor T factor BOSC orange auto of fixer 2325 goes to F Skyler Bibble is F refractor Hunter refractor Galaxies great as scoundrels refractor Lord Vader ready as a ship for L. I Mean, yeah, not every spot is is per is like perfect refractor mace Windu's barrage It's like it's like any other break some spots are theoretically better than others Refractor Darth Vader versus Obi-Wan Kenobi Star Wars droid works goes to D refractor you walks under attack for E Fractor solo Investigates for S and sometimes you just It's you avoid all the numbered stuff of of anything with your letter sometimes Luke Skywalker in action refractor All right last box green is an an Omega Green Omega 4799 that is a base variation 93 Yep, Omega goes. Oh atomic Boba Fett ambushed B 104 of 150 Yeah, sometimes the answer is when they're numbered or kind of just they're like extra refractor battle with the Dynauga B C3PO refractor C refractor Toradoza Fractor Trudgin refractor a wrecker refractor inside the meditation chamber refractor the Emperor's power Princess Leia, Organa Sorry, Leia, Organa and her bushes guys that goes L Star Wars Jedi Knight dark forces to go into the J spot there refractor Yoda on Dagobah Refractor Lando Calrissian blue auto of Ketsu Onyo going to the K spot 67 to 150 refractor Yoda again Star Wars bounty hunter going to the B spot there Fractor aboard the bridge refractor duel on the Death Star refractor attack on Hoth refractor Darth Vader refractor stormtrooper survey the desert and Refractor Obi-Wan Kenobi Autos of Ketsu Onyo fixer Lux Bon Terry a saws ventris Redemption man with a mission going to M spot of course the atomic refractor got Mojo The shadow of the Dark Lord to 50 and an atomic Obi-Wan Kenobi to 150 now we'll do it Thanks again everybody on to the next one


Good afternoon. I'm Bill Schreiner. I'm from the UCAR Cosmic Program, and I'm going to talk about the Consolation Observing System for meteorology, ionosphere, and climate, atmospheric sounding from space with GPS radio occultation. Here's the outline of my talk. I'm going to give an overview of radio occultation, then give a cosmic mission overview, then talk to some science applications of RO, cosmic two mission status, and then a summary. Radio occultation was first applied to the planetary atmospheres, and basically the way it works is if we have a signal transmitted from a satellite, if there's no atmosphere, the signal doesn't bend. If there is an atmosphere, the signal bends, and there will be a noticeable Doppler shift. This is the GPS radio occultation geometry, and again the Leo satellite receives the GPS signals. We can measure this alpha bending angle, and from there we can measure temperature and water vapor. Some characteristics of RO. It has global and local time coverage, very high accuracy and precision, high vertical resolution near 100 meters near the surface. It also has very good total electron content accuracy in the ionosphere. NSF funded UCAR in the early 90s for the GPS MET mission, really to prove the concept. And the plot on the red line is the radio occultation temperature profile, and then we have model and radius on data that match very well. That led to cosmic. The cosmic mission was launched in 2006. We're providing global observations of bending angle, refractivity, pressure, temperature, as well as electron density in the ionosphere. This shows the data flow of the cosmic system. Basically we have data flowing from the Leos down through the UCAR cosmic data analysis and archive center. From here it flows to NOAA, out on the global telecommunications system, to all the global weather centers around the world. Here we see some global coverage of cosmic in 24 hours. Down here we show a plot of occultations per day since the start of the mission, and we've collected over 6 million profiles to date. For weather applications what we really want to do is improve our skill in numerical weather forecasting, and even hurricane tracking intensity forecasting, as well as improving our understanding of atmospheric processes around the globe. This is showing the impact of cosmic on the ECMWF forecast analysis, and basically GPSRO is tied for the second place in terms of forecast impact, despite a small number of observations. Here we're showing the impact of cosmic data on typhoon track error, and basically when we assimilate cosmic data the track error is reduced, and you're seeing that by 24% in this example. In terms of climate, GPSRO is really the world's most accurate, stable, precise thermometer from space. We can evaluate global climate models. We can also calibrate instruments such as radiosons. These plots actually show comparisons of radioson temperature with RO temperature. This is a zero line and the red line is the mean difference, and then we see radioson temperature biases with our data. In terms of space weather we want to observe the global electron density distribution, as well as improve our ability to forecast the space weather with data assimilation, and also understand more about assimilation. The cosmic ionospheric observations are total electron content, which is really the total number of electrons between the receiver and the transmitter. We can use those data also to invert and get electron density profiles, as well as other scintillation information. Here's a movie showing the 4D structure of ionospheric electron density versus latitude and longitude, and the RO data really give you some vertical information on the ionosphere. Cosmic 2 is again a joint US-Taiwan program. We've got six satellites being launched in 2006 in an equatorial orbit, then another six in polar orbit in 2019. This isn't fully funded by the way, but we expect about 10,000 soundings per day. It's really going to revolutionize RO. Here we see Cosmic 2 spacecraft being integrated and tested in Taiwan, and we're going to be launching these satellites on a SpaceX Falcon Heavy launch vehicle. Radio occultation is a proven technology. It's high impact, low cost. We're seeing great impacts on space weather forecasting. We're also seeing great impacts on climate and space weather applications, and with Cosmic 2, we expect this impact to be even greater.


Welcome to User Experience Design, Fitts' Law. This learning module provides an introduction to Fitts' Law and explains how it's applied to user experience design. Let's start with, what is Fitts' Law? To be honest, Fitts' Law isn't really a law at all. It's actually a descriptive model of human psychomotor behavior that's written as an equation, like this one. In the formula, MT is the average time to complete the movement. A and B are model parameters. D is the distance of movement from start to target center. W is the width of the target. Fitts' Law is a model of human movement. It tracks the time it takes to point at something, taking into consideration the size and distance of the target. So far, this seems super confusing. However, Fitts' Law is easy to understand. Fundamentally, it proves that it's faster for you to hit larger targets that are closer to you than it is to hit smaller targets that are farther away from you. If you look at the keys on your computer keyboard, you'll notice that the keys users press most often. The enter key, the space bar, and the shift key are larger than the other modifying keys. These keys are larger so they're easier to hit. They're also closer to the alphanumeric keys. Keys that are used less often, like insert, delete, and escape, are farther away from the alphanumeric keys. User experience designers use Fitts' Law when creating user interfaces. Good UX designers ensure that any time they want users to interact with the software or the interface, they make it obvious. Targets are easily located and easy to use. UX designers also know that the farther away a user's mouse is and the smaller the on-screen target is, the longer it takes someone to move the cursor and click on the target. We know that the size of the target matters. The larger the target, the easier it is to hit. This might lead a designer to think that the bigger buttons are always better. However, that isn't always the case. Fitts' Law is a curve, which means that smaller objects are easier to click if they're made larger. However, larger objects are already large, so if they're made larger yet, they aren't any easier to click. Because of this curve, the benefits of increased size begin to decrease. This is actually good news for designers because it frees up more on-screen real estate and ensures on-screen objects are appropriately sized for their intended use. Good on-screen target placement is critical. As a UX designer, the physical locations of your screen elements are important. The Gutenberg diagram shows that users tend to move through screens from top left to bottom right. Therefore, consider placing what's important, like the buttons that call users to action, in the bottom right-hand corner. When designing an on-screen layout, ask yourself if your critical icons are the ones users are most likely to use. Are they on the path that your user's cursor takes? Remember to apply Fitts' Law to your design principles. When designing graphics, text, and screen icons, always consider their sizes. Are they appropriately sized for their intended use? Consider making any text labels into links. Try making the whole phrase a link rather than just one word. On the WISC Online website, the entire phrase Switch to WTCS Categories is a link instead of just Categories or WTCS. This makes the target bigger and easier for the user to hit. Keep in mind the devices that your customers are using. If you're developing a touchscreen interface, ask yourself, are the elements big enough and spaced properly to allow your user to pick just one? The spacing between on-screen elements is just as important as the size of the elements. Remember Fitts' Law. It's faster to hit larger targets closer to you than it is to hit smaller targets farther from you. You have completed User Experience Design, Fitts' Law.


Everybody forced here ripping at twenty twenty one chronicles football hobby six box number eight random team style You got the results on screen for you. You can always find them late in sports cards calm There's a link for those in chat currently see what we got. Good luck everybody Yeah, guys, if you're not aware pristine was taken longer than we had scheduled we anticipated it But it's pretty much it's basically a brand new product It's a re it's you know reimagining of an older product hasn't come out in years Power Yeah, we were catching we were making better time but Here we are This is number eight though by the way is number eight. I Know I said in the title, but yeah, so we are behind, but this is number eight Najita 49 Steelers Rondale It has been some day, dude silver rookie jet Zach Wilson God of Ante Smith Dynagon green color match Eagles to 49 and a prison black to march chase rookie bangles Mont Yeah, the Grand Kings are awesome this year. How's just their portrait? Yeah, so much better than last year's Texans Nico Collins Ricky Jersey to 199 I think trailance luminance Franks had never do last night Rondale more Kyle Pitts Cardinals Rondale more one of one of two Nike swoosh silhouettes RPA It's gonna say one-on-one. I'm not platinum congrats Cardinals. That's beautiful Got the tail of a swoosh there We'll get that mag to worry. That's awesome great hit you crocs. It's sick so far Yeah, couple of Zach Wilson's here. This one is numbered to 199 a grid iron Kings Jets I might be the biggest trash. I can't believe that Everything else off TV should stay on silver rookie Kyle Trask prison black Buccaneers Kyle Trasker boy, Jake That could be used only 99 giants straight alliance. We'll see you when Brady It wasn't even the bag blaster Falcons bleep a Frank's auto to 99 Great iron Kings air Falcons like You know, I'm worried about now that my powers on my own. I can't tell you how bad it is to be a boarder It's so bad Silver rookie Chief Shane Bachel not to put that in mind Sam Zach Wilson flux red Jets great break so far for you. It's a 99 Sweets got Shray Lance dynegon and Mooth also a Nittany Lion legend Right Demian Harris Jersey card pass to 199 legend Jamar Chase Panini Lawrence Tony for the Giants prison black rookie Otto Silver nice one Giants That'll answer the question. That's a good timing. Okay, Jamar Chase. Yeah, it's DAC to 49 Dallas T-Law legacy Silver Caderius Tony dynegon Giants Zach Wilson on the Luminance update Clear vision to 199 Najee Steelers This is break number eight Rafael six box number eight Cowboys Dalton Schultz ascension auto not numbered March Chase gain well Joey B. Joe Shiesty Fields Panini base Smith to 399 Eagles rookie fields flux rookie That's crazy Plenty of space or personal still I even we're gonna finish later still a good amount of space left Get your worries in while you can it's very rare that this actually happens cut certain the second Broncos auto to 199 on the Great Iron Kings to 2 to 199 Rams prison black Caderius Tony in book Silver JC Horn Panthers legacy Allinger Luminance to 199. No, no, no, no, no Shuba Great Iron Kings auto to 199 Panthers Shuba Hubbard pits Ron Dale Moore Kellan Mond Yeah, Rafael. Sorry. We're just we're behind for just so many reasons at this point This is just so many reasons Mac Jones Luminance Not really anybody's fault is just yeah 399 Chief Stravis Kelsey Present black Mons silver for the Vikings. There is a big damage on this carnage. I must have got caught in something We got a boxer rapper for the Viking spot, you know, Zach Wilson Panini Michael Carter Why don't you guys are enjoying the brakes?  That's not us County read This technically seminal Bateman the 99 Ravens pits No, I want you to go towards O'Cody hit orange Popper might not be either is it Lake? No, it's not Lake jet Swirky's silver dynagon Zach Wilson nice Zach Wilson any waddle Pit score Yeah, like I know Lake County when I'm in it. Yeah, I'm like man This uh, this is the middle of nowhere Yeah, oh pads card jet Zach Wilson at 25 Thomas treasures to pop his orange Semmel So then once once you hit into Altamont again 399 Lamar Jackson Ravens Jalen waddle Flux Dolphins, I do not know Joseph Eagles silhouettes Kenneth gain well to 75 rookie Jersey auto Lance got Michael Carter to 99 jets playoff Najee Harris and a T-Law Magnitude, of course How can I be so such a fool silver Falcons Ricky Kyle pits? Yeah, stop center It's never Lawrence Pinini red prison black to 99 Panthers rookie terrace Marshall, Jr Lawrence dynagon Vante Smith, right? So like the legacy and like the score and things like that are like updated versions of it Remondre rookie auto to 199 Patriots like the elite is a different version of it It'll say on the back. So this will be like penny. It'll just say like chronicles Like chronicles prison black or chronicles great iron Kings They're just like subsets essentially Sir tan trade Lance like with prison black. They all have different jerseys on I said Yeah, it's like different pose and all that Here, it's like finally not boring for the first time like 35 minutes, dude You see the magic like yeah, bank heroes good enough sitting them. They were like we've seen enough don't get hurt Waddle Stevenson out of 99 Pat's good iron Kings terrace Marshall, Jr. Jamar chase clear vision Yeah, so most of the sets and chronicles are just not off its own full set essentially nice a crown Pat Fryer Me with auto to 49 Steelers crown Royale Lawrence Panini Got my homes the 399 chiefs Vante Smith dynagon fields clear vision prison black Silver Saints Ian book Mills mafia Palmer to 199 Chargers Devante Smith trade Lance Yeah, it's definitely interesting probably not for everybody a lot of people really love chronicles though like a lot of people love this stuff Giants not a crown or auto here hadn't seen one until now and then we see two as he's all jewelry to 75 trade Lance grid iron Kings Najee Mons Bateman and Mac on the momentum Silver Javante Williams score update Broncos Javante Williams again purple Trey Lance flux To 199 Niners that's sweet Go Niners Chuba and Javante. Why do you guys think the blue J's fired? Look at our leadership and Not meeting affectation Michael Carter rookie Jersey jets to 199 you'll find a job pretty quick though I think Javante rookie prison black for the Broncos and Javon Hollands Yeah, I mean that's kind of the point of the product is to kind of be like that Different like different imaginings of sets where they don't want to make like a full set of it They've also there's been a lot of times where sets have Gone from being in standalone products and going into chronicles and vice versa like flux came out of basketball last year Became its own product Silhouettes rookie Jersey auto Giants Cadarius Tony to 75 So it's honestly kind of a way for me to like try new things To 99 Fields rookie for the Bears. I'm pinning a nice one there Trevor Lawrence Jags rookie Yeah, I mean it's just like any other products not for everybody Silver Justin Fields prison black Congrats bears Lawrence Diamond Kings more Smith got a Lawrence to 99 playoff momentum there your Jags tree lands score update and remandray clear vision Mac Jones Bears gridiron Kings Auto Cleal Herbert to 49 Ellinger Mitchell It's Yen and a Herbert Ajie Harris Fields Luminance to 399 Nick Chubb Browns. Japan's a Williams dynegon rookie remandre Stevenson Mon silver score update Vikings waddle luminance gain well But a green Zach Wilson flux the 49 jets Jets will mag that. Oh Yeah, I still it's the break eight Chargers Keenan Allen Jersey card to 199 Rondale Mac Trask Harris prison black and your vision Mac Jones. All right, let's go ahead and do a quick recap Relics Michael Carter Zach Wilson Jamar Chase Damian Harris Nico Collins Autos now Cadarius Tony Cleal Herbert Aziz Ojalari Pat Fryer Muth remandre Stevenson Kenneth Gainwell Chuba Hubbard Patrick Surtain the second Dalton Schultz Darius Tony Loot Bay Franks silver prison black Justin Fields Bears Silhouettes one of two RPA Rondale more Go Cardinals and green flux Zach Wilson to 49 It's gonna do it. Thanks again, everybody. God's more this coming up next


And we're back at the conference room number one sponsored by our Keystone sponsor, Optiva. And for the next talk, I would like to introduce Emmanuel Delescourt. Sorry, from Belgium. Hi. Hello. You're the co-founder of Levitt. And you have been working with Python for a long time, have you not? Yes. We've already seen your OBS skills yesterday. Thank you. And so now we'll have a longer time for that. Do you have your talk slides ready? Yes. Perfect. So let's give the stage to Emmanuel. And she'll be talking about writing a Python framework in 2021. Hello, and welcome to this talk about writing a web framework. So before we continue, let me introduce myself and tell you a bit more about me. So my name is Emma. And I have been working with Python a lot this morning. I've been working mostly for the last few years with Django. And as such, I've been maintaining a few open source libraries like DRS schema adapter. And I also maintain embassy-like entities, which is a front-end library that allows you to plug in easily to DRF or any other fast framework endpoint. And apparently, since this year, I will also be the maintainer of Coftee. But I will talk about that a bit later. So a lot of you might be wondering, but why? Why would you want to rewrite a web framework from scratch in 2021? Although there are several reasons for that. The first one is that the major Python web frameworks, and by that I mean Django, Flask, and Pyramid, all those have been written over 10 years ago. And things have changed since then. Like, for example, 15 years ago, there was not much emphasis on APIs and also web sockets were not a thing. Today, these two things are one of the main use cases for the web. So writing a web framework also allows you to explore some libraries that are available today. So 10 years ago, a lot of libraries were not available or were not documented. And so today we have much more tools at our disposal. And also, as I mentioned that APIs and web sockets are no main stage, this would allow writing a web framework today allows us to put those two things at the center stage of the framework. And finally, this was 2021, or this is still 2021. And a lot of us have time on their end, so why not do such an auto exercise? So as I mentioned, there are a lot of differences between then and now.  And that would have been fun. And today, we've been stuck inside for well over a year. And these things that we used to do live. Well, we do them on the internet still live but it's different we have a plus emojis going all over the place.  So that's a big difference. But technically, there's also another difference and that difference is on several level. So in the past 10 or 15 years, the documentation of packages has improved a lot in Python. The Python world is one of the places where documentation is the nicest, the most careful. And this was definitely not the case 10 years ago. The community is also friendly here. The Python community has done a lot of work into making Python a friendly place for people to come from all sorts of backgrounds for beginners as well as developers and for minorities and things like that. And that's definitely a big change. Maybe not just for the past 10 years but over the past 20 years there's certainly been a huge change in that mindset. Also 10 years ago, Rails basically was the reference for web frameworks. Ruby on Rails was really nice. It was easy and it allowed you to do things quite fast. The YouTube video on how to write a blog in, I don't remember, maybe it was 15 minutes or something like that had a huge success. And so that was the standard at the time for web frameworks. But now we do have many web frameworks in Python and those frameworks are now the inspiration for things. Like the Django admin is itself an inspiration for a lot of projects. And once again back then server rendered pages were the main thing. Today we have a lot of websites that work with API and JavaScript framework. And this comes from for many reasons. But one of the reasons is that this API and those web circuits they can be used for mobile applications. Meaning that you write your backend once and then you write 3, 4, 5 different frontends depending on the platform you're targeting. But I mentioned 3 frameworks. I mentioned Python, Flask, which actually is not really a framework. Flask itself defines itself as being a library, not a framework. But Flask plus its ecosystem can be considered as a framework. And I'm also mentioning Django. But there are a lot of new frameworks in the Python world. There's Sonic, Fast API, Falcon, Quark, and plenty of others. So why am I taking the time to write yet another new framework? Well, all these frameworks that I mentioned now are not really frameworks to start with. They are mostly micro frameworks. And so they leave the user to deal with a lot of very important aspects like security, authentication, and so on. And the second thing is that all those are async frameworks. And while async can be great, those of you who've tried to mix sync and async code, well, you know that it can be challenging at time. It's not really friendly for beginners. And a lot of things in the web are still synchronous. Request response that are used for APIs is still something, synchronous. A database query is still synchronous for a template parsing. And so on, all those things, they are still synchronous. So I'm not saying async is bad. I'm saying that async is not for everyone and that some people would like to stay out of that niche. So today I'm going to be taking you on a tour of the things I discovered while doing this exercise of rewriting a framework from scratch in 2021. So what I'm saying from scratch, as you might have guessed, I'm not saying that I will be writing everything. I'm saying that I will be using a lot of the tools that are available today. And this tour that I'm taking you on is a highlight of those tools that I found along the way or that I already knew, but for those that I took a better look at. So the first thing that you need when you're going to be starting a project, a web project or any project, you're going to have to write some base code, some of the basics. And for that, often you will be using a project template. So before I go any further, for all those, I will be showing code examples. I will not be going through the code examples. The code examples are just there to let you see how you might already be using the same techniques in the frameworks, you know, and how these techniques can be used outside of the framework. So back to project templates with Django and Pyramid. What the first thing that you do is populate a customizable project template that has been provided to you. Cookiecutter is the brainchild of every non-Pytonista and book author. And this is just what it does. It lets you start a project from a template. And it is now being used by Pyramid. And the Pyramid project provides you in the documentation to several links to Cookiecutters to start your project. So if you're going to be writing a new web framework, why not use Cookiecutter that's already there and does a great job at starting projects. Most of the time, the next thing that you will want to look at when writing a project is if you have a database of something like that, you will want to use an ORM. And in the Python world, there is one big name for ORM, so it's SQL Alchemy. Personally, I'm not too fond of SQL Alchemy. And next to SQL Alchemy, we have the Django ORM, which is much friendlier to use, especially for beginners or people who don't know SQL at all. And it's a completely different style of ORM than SQL Alchemy. And apparently I'm not the only person who seemed to find that the Django ORM is nicer to use or easier to use than SQL Alchemy, because some people created the Peewee library. The Peewee ORM is very similar to what the Django ORM is. It's actually been inspired by the Django ORM. But it still lets you, if you want to, it still lets you write things in a more SQL Alchemy style. So you can see that in the three code symbols I'm giving. And up until next year, I had never heard of Peewee. But seriously, I'm really glad that I found out about it, because now I'm going to be using Peewee in all my Python projects, not just web projects or any Python project that needs a database. I'm going to be using Peewee. And so yeah, as you can see in the code example, as I said, you can use either a more Django-like syntax or a more SQL Alchemy-like syntax when doing queries with Peewee. Another thing that you will probably need in any web project that's not purely an API is the ability to render templates. So for that, you will have to use a template engine. And for that, again, we do have a really nice and popular library in Python. It's called Jinja. And yeah, Jinja is well known by a lot of the Python world. It is used in a lot of projects with Flask or SQL Alchemy or Flask or Django 3. And once again, Django has its own templating engine, but it is also compatible with Jinja. And Jinja and Django's templating engine have a pretty similar syntax. This is why I only have a single code sample here. It's because after all, this writing this in most templating engine, you will be writing the exact same code. And also similar in syntax to templating engines that are not in Python, like the templating smarty in PHP or handlebars in JavaScript. All those templating engines are very similar in syntax. The main difference is what lies behind it and how flexible it is to add things like filters or call functions and things like that. And when we go to the next step, once you're writing your project, what you want at some point is to have some settings files so that you can, for example, have different connection settings for your database in production in the development environment and so on. I know I'm partial and I'm talking a lot about Django, but I find that Django's configuration system is really easy to use. And it's one of the nicest ones around. And it allows you to load your configuration in Python. It gives you a lot of flexibility. You can write, you can even write it as classes. And so you can have a, for example, a common class and any different settings in the development and production class and things like that. And apparently once again, someone else was sharing that feeling that Django's configuration was really nice because they implemented Python simple settings. Which is a library that was inspired by Django and that works very similarly. So you can use that with any Python project and therefore you can use it in a new web framework project. The next thing that is very useful for any web project, of course, is the routing system. And you know how in Python, there should only be one obvious way to do things while apparently routing didn't get the memo. At one end of the spectrum, we have Flask waves using primarily decorators and nothing else. And at the other end of the spectrum, there's Django that uses declared routing table. And in the middle, we have Pyramid that lets you use a bit of both. So very different ways of doing routing. And it turns out that there is another library that does routing somewhat in the same manner as Pyramid does. And it has been inspired by Rails as it claims itself to be a re-implementation of Rails routes in Python. And the name of that library is simply Browds. And it is not only similar to Rails, but it is also similar to PHP if you're using the Ravel, for example. So that library seems to be a nice compromise between all the different routing techniques in Python. And so we could also use that. But of course, those are all very classic in terms of what they do. I said at the beginning that in today's web, we have to focus on APIs and web circuits. And who says APIs? Often says serializers. Marshmallow is a popular serialization tool. And as such, it has a lot of extensions to make it compatible with other libraries like Peewee, for example. Or to add features, very useful features like auto-documentation of API endpoints based on the serializers you created with Marshmallow. And it also helps you parse data through the serializers from either the body of the request or the URLs or any other places that you can put in data in a request. And like Ginger, I'm really not sure what else to say about it because I think that anybody involved in the web in Python today has at least heard of Marshmallow. But back to the basics for a moment. Even REST APIs rely on the request-response cycle. So is there a Python library that can make dealing with the request-response cycle easier? Of course there is. There is Webop. Webop is a quite low-level library that traps risky requests and response into more friendly Python objects. Once again, it's very similar to Pyramid's own request and response objects for a very good reason. It's because this library is part of the Pyramid project and part of the framework. And even though they did not all start with this, but all the three Python frameworks I'm taking as reference, Django, Pyramid, and SASC, they all have comment-like interfaces. And from those interfaces, they let you run interactive channels. When it comes to the comment-line in Python, my favorite tool is CLICK. One of the reasons that CLICK is my favorite tool is that I can actually pronounce the name while a lot of projects use ORC ports. I've never been able to pronounce that. So I try to use CLICK just because I can pronounce the name. But CLICK is also apparently there's somebody honking outside of my window, which is a problem. Anyway, CLICK is a comment-line parsing library that is very simple to use. It relies mainly on decorators, as you can see from the code samples. And if you're coming from Django, you're probably not used to seeing as many decorators on a function or method. But as it's claimed on the tin, it is highly configurable, and it comes with sensible defaults out of the box. So the next thing I want to talk about is middleware. The reason I want to talk with middleware is because if you've ever talked to somebody who's involved in the writing of a web framework, of a whisky framework, they will be mentioning middlewares all the time. And they talk about whisky, middlewares, and so on. Basically, this is a bit of a black box for a lot of developers. What is actually a middleware? It's something that's used by all the frameworks. Django has them, Pyramid has them, it calls them tweens, which is short for between. Flask kind of has them, but they don't want to deal with them. So often if you want to use middlewares with Flask, they will send you directly to whisky middleware. So let's try to have a look and understand what is a whisky middleware.  What happens is that a whisky middleware is a function that receives two arguments, the whisky request and the handler. The handler is your main application, the thing that's going to take the request and send back a response. And so the whisky middleware has the chance to make changes to that request, to the row environment that whisky sends your application, and has also the chance to make changes to the response after your handler has been run. Now Django middlewares and Pyramid tweens wrap whisky middleware into a more complete interface that has more flexibility and more entry point. And for example, they give you the opportunity to make change to a response object before the template is being rendered. So you can make changes to the context instead of making changes to the HTML that has been rendered by the main handler by your application. Now for the big other thing that the three frameworks I've been talking about were originally not planned for. And this is WebSockets. WebSockets are permanent connections that work asynchronously depending on what they are meant to do. And this is one of the reasons why a lot of those new frameworks are async frameworks is because they take WebSockets as first class citizen. And therefore, since WebSockets are asynchronous, the framework itself is asynchronous. And one of the problems with that is that to have an asynchronous application, you'll need an asynchronous whisky server or an ASCII server. And one of the problems with those ASCII server is that when talking to some of the authors, and I've not talked to all the authors of ASCII frameworks, but when I've talked to the ones I've talked, they often recommend that you still use a regular whisky server for anything critical or basically anything that doesn't need to be asynchronous. And they tell you to only use the ASCII server to manage everything that has to be asynchronous like WebSockets. And I'm sure that there are some people out there who are really confident into the new ASCII servers and who are happy to tell you to use that in production or so on. But as far as I'm concerned, I want to take those four names seriously. And so when writing something, I really don't want to have to need to link it to an ASCII application server when there have been some very good whisky servers that have been out for years, and that are stables, a lot of people looking over them, a lot of the community knows how they work and so on. And so I looked at the existing whisky servers and it turns out that UWisky, which is one of the best established whisky servers, UWisky provides a proprietary, as in it's not part of the whisky specification, it provides a proprietary handling of WebSockets in a synchronous way. So if I'm going to be making my new web framework dependent on one with anything's whisky server, I'm going to want to link it to UWisky, to UWisky instead of any of the new ASCII server, which are younger, just that, which are much younger. So back to the regular features now. One of the things that Django is famous for is its admin and the ability to generate forms for model with very little code. Pyramid also got on that train with the deform library. And if you're using Flask, well, you clearly chose to opt out of that kind of things, but there are also libraries that allow you to generate things from data from your models or things like that. Usually they use multiple as a base and they're not explicitly for Flask. So, but most Django and Pyramids built and render the forms, those form server sites. But we're in 2021 and we say that APIs should be first class citizen. So we can go one step further and delegate the form rendering to the front end to JavaScript or to your phone, to your iOS or Android application. And, but then that application needs to know how to render the form. But there is actually yet again another library that does that really well. There was VJSF that stands for beautify json schema form. It is a view component that can directly run out of a CDN. You don't really need to write code. You can just load the library from the CDN and it provides form building for rest API as long as the API can provide a data structure for the form in the style of json schema. And as I mentioned earlier, Marshmallow comes with a lot of extensions and one of them is Marshmallow json schema. And so it can provide json schema information from a Marshmallow serializers. So by using Marshmallow and json schema, we can push that information to the front end and let the front end build the form itself. So, now, we have all those libraries and what are we supposed to do in order to have a web framework? Do we just put everything in the blender, push a button and we have something? No, of course not. That's not exactly how it works. There are still some missing links. And it is some missing code because things like C-Serve, for example, I could not find as a library or at least as something that plugs in are really nicely in a library format. The only implementations of C-Serve that I could find are part of an existing framework. Authentication and authorization is something that I could not find as a standalone library. There is a whiskey-middleware that provides some authentication methods, but it's nothing close from something that you would expect from an actual framework. And Django style, I mean, we just saw the formation generation, but putting all the libraries together is not enough. You do have to provide a bit more than that. That's where the glue code comes in action. And you need some glue code to put all those information together. So, what do I mean by that? This is what I've been doing this year. It's the web framework itself, the web framework that will bring in all those libraries together. So, what is a web framework if it's not all the libraries that I mentioned? Well, a web framework is something not that complicated. A web framework is a whiskey handler. A whiskey handler is a callable that receives a whiskey request or an environment. It's basically a dictionary of values. And it also receives a callback, which is a start response. And start response is what you call when you're ready to send the response to the client. So, here we have a simplified version of such a callable. First, it is going to try to find a match to the request, to the URL and the method. And it will also wrap the request objects into an object, like we mentioned before with Webop. Then, if the match was not successful and it could not find a route that corresponded to that URL, it's going to raise a four for exception. And then, otherwise, if it did find a match, it will try to instantiate the controller that corresponds to that URL and will try to launch the method that is associated with that URL. So, that's very simple. This is very simplified, but basically this is what a whiskey handler does. But then, once it has a response, once it has called from the controller, called the method on the controller, maybe that's not going to be working, maybe we're going to be raising an exception or something like that. So, we have to put that in a try catch, in a try accept block. And once we've called that function, that method, on the controller, we have to make sure that the method has actually sent us some HTTP response type of object. And not just some text or some dictionary with values and things like that. So, this is where we call this last method makeResponse. That makes sure that we do have a response object. Now, if we have an exception, if our exception is an HTTP exception, well, then this HTTP exception is already an HTTP response too. So, we can use that as a response. For WebSockets, we will receive some different kind of exception. And WebSockets are a special case. We don't have to return anything. We can just return an empty array. And finally, if we get anything else, our job is the job of the framework to build a 500 HTTP exception and use that as a response. So, let's zoom back out one level. And once we have a response object, we first need to call it. So, this is what is going to actually build our HTML out of a template or make sure that transform with dictionary into a JSON or something like that. And the call to that response object is really the root of what we're doing in the web framework is transforming some data, some Python data and making it into HTML or any type of HTTP thing that we can send back to the client. So, we will return its value. So, the value is going to be the body of the response and it's also the task of the response object to be able to create the correct address and the content type and so on. So, back to our missing link, that glue code that I just showed you or at least a more complete version of that is what I did this year. And it's called Cordy. And as you can see, I did go really deep into the rabbit hole as Cordy already has a mascot. But why did I call that Cordy? Well, this year, last year actually, Annie Cordy, who was a Belgian singer and actress, died. And since a lot of the inspiration for the code I wrote came from Django. Django is named after a guitarist. So, it's quite fitting to name that framework after a singer. Also, it's a bit of a pun because Cord, like the guitar cord. Okay, that's one of the... Thank you for that. Thank you for talking in front of your computer. Thank you if you didn't laugh. I'm sorry. But, yeah, and so the mascot is basically a rope or a cord that acts in a bite in a squid. So, Cordy is a code that ropes in all those libraries together. And as I've just showed you with the simplified implementation of a whiskey handler, after all, it's not that much code. If you are using everything that is at your disposal in the Python ecosystem, writing a framework, it's not that much code. And all this started as a total experiment, and I'm really glad that I did it. But I ended up in a few thousand lines of code with something that is really usable and that seems stable. Why is it stable? It's stable because I'm leveraging other libraries that are stable themselves. So, you might be wondering, but since I do have something that is usable, what does code in Cordy look like? Well, this is an example of a model. And this looks a lot like any other thing. It's basically, it looks like a model in Django or a model in Pyramid. It's based mostly on Pee Wee. And it looks very straightforward and Pythonic to me. Next, here we have some controllers. Controllers have different methods that can be used as entry points. You can, as you can see here, we have a decorator to label any method on the controller as an entry point. The last controller on the left of the slide makes... Oops, not the last slide, sorry. The controller on that right of the screen on the left is a WebSocket controller. It looks exactly like any other controller. It does not need a sync or anything. It uses the Uiskey controller method. Next, of course, we do have some URLs that buy for routing everything. It uses nice features. You can see the first line here. It uses the store unpack way of writing code to get all the URLs, all the routes from the first controller. It routes the WebSocket controller here on the second line. It's exactly the same way as it would be routing anything else. We have a wildcard static route, and we have a REST API route, as well as a documentation of that REST API that is auto-generated. Finally, the last one, we have an admin style, a Django admin style controller. What do I mean by a Django admin style controller? Well, I mean, yes, this does not need any special HTML. This does not need anything. You can just use the Kordi HTML controller, and it will use the libraries that I mentioned before, view on the front end. It will use Marshmallow on the back end, and with basically very little code, you have this kind of interface with here a simple form, a list, the ability to paginate, delete, edit, create, everything. So, what would be the pros and cons for such a new framework? Well, using those libraries, a lot of people are already involved in those libraries and are already writing code. Of course, that comes on the other hand, you will have less agency on your framework because you will be depending on those people, but at the same time, you will have less work to do to have something working, and you will be able to dedicate a few resources to writing the core of the framework. And so, those resources can write and maintain the core and have way less work. And one last thing that comes with this approach is that since you're dependent on other libraries, not only do you lose agency when it comes to the code of those libraries, but it's possible that from one version to the next version of your framework, you can lose backward compatibility because one of the libraries you use decided to lose backward compatibility and therefore, yourself will have to lose that compatibility. So, we will have no time for questions here in the main chat, but I will be available either in the breakout room for questions or in the other things. I meet me or something, I forgot the name, I'm sorry. I will be available there. But before I terminate this, before I finish this, I did mention that I had a lot of time on my hand this year, so I adopted three cats. And I could not do a full presentation without having cat pictures. So, these are the pictures of my cat with fruit on the left, shell on the bottom, and curry on the right. If you think that those names are geeky names, well, you are probably right. But these are the cats and we love them. Thank you. Thank you very much for this detailed talk. You introduced a lot of very interesting things to us, so thanks for taking the time to do this. A little reminder to everybody who's watched this, the slides are available for download. So, if you had problems reading the small print, it's not a big deal because you can just go there on the schedule, get the slides, and then have an overview over all the tools again. There's a lot of applause in the conference chat for you. So, let's thank you again for taking all the time. And as you said, you can now go to the chat or to wonder me and to continue the discussion with you there. So, thanks again for this. Thank you.


Hello everyone, I am Prashant S. Malge, assistant professor, Department of Electronics Engineering, Walton Institute of Technology, Solaapur. Today, we will discuss decimation in time fast Fourier transform algorithm, the learning outcome. At the end of the session, student will be able to draw and explain this signal flow graph for decimation in time FFT algorithm. So, previously we have already seen the divide and conquer approach for computation of DFT, in which a endpoint DFT can be computed in terms of smaller size DFTs. So, let us consider n is 2 raise to v. So, basically n is the power of 2 and we want to compute this DFT by using divide and conquer approach. Let us use column wise mapping for input xn and row wise mapping for the output xk that is DFT. By choosing m equal to n by 2 and l equal to 2, it splits our input signal x of n into 2 data sequences of n by 2 points. As the first sequence is F1n which is equal to x of 2n, second signal is F2n which is x of 2n plus 1 with n equal to 0 to n by 2 minus 1. It means what? It is decimated into two sequences. One is all even valued samples of xn and second is a odd valued samples of xn. So, it means the with l equal to 0, the first column rather the first 0 sorry first row will have all even samples of x of n and second row will have all odd samples of. So, now let us consider this xk. As we know xk is represented as n equal to 0 to n minus 1 xn w n kn where w n is basically a 2 del factor which is e raise to minus j 2 pi by n. So, in terms of that this is written as w n kn where k equal to 0 to n minus 1 gives you n points of dft xk. So, now this can be written in terms of even samples of xn and odd samples of xn. So, this summation can be divided into two parts where all even valued samples are taken in first summation and odd valued summations are second in second summation. So, this can be written as x of 2 m now this m will be 0 to n by 2 minus 1. So, now n to be replaced by 2 m. So, it will be w n 2 m k. So, this gives you even and for odd this n I have to substitute as 2 m plus 1. So, m equal to 0 to n by 2 minus 1 x of 2 m plus 1. So, w n now once again n is to be replaced by 2 m plus 1 k. So, you will get this. So, now if you write this w 2 n. So, w 2 n is basically e raise to minus j because w n is e raise to minus j 2 pi by n w 2 n will be e raise to minus j 4 pi by n which is equal to e raise to minus j 2 pi by n by 2 which is w n by 2. So, w 2 n can be also be written as w n by 2. So, with this notation now this once again x k can be represented as now I am representing x 2 m as we have know already seen that it is the f 1 m. Now this w 2 m k I can write as w m k n by 2. So, w m k n by 2 and now here this can be written as w 2 m k n which is once again w m k n by 2 and the remaining factor is w k n. So, w k n is taken as here and this x of 2 m plus 1 as we have seen previously it is f 2 m. So, now this DFT is now represented as this. Now if you look at this and if you compare with this this is as if it is a n by 2 point DFT of signal f 1 m. So, this I will represent it as f 1 k where f 1 k is a n by 2 point DFT. Similarly, if you take this second part is a n by 2 point DFT of f 2 n right. So, n by 2 point DFT of f 2 n. So, now that will represent it as f 2 k. So, this x k can be written as f 1 k plus w k n f 2 k where k equal to 0 to n minus 1 gives us n DFT n points of DFT right. Now making use of some symmetry property of w k n and periodicity property we know that DFT is periodic with period size of the DFT. So, f 1 k is a n by 2 point DFT.  So, w n k plus n by 2 equal to minus w k n. So, with these this x k can be written as x k equal to f 1 k plus w k and f 2 k for k equal to 0 to n by 2 minus 1 and k plus n by 2. So, if I take x of k plus n by 2 will be f 1 k plus n by 2 which is equal to f 1 k w k plus n by 2 n which is equal to minus w k n f 2 k plus n by 2 which is equal to f 2 k. Therefore, this x k which is n by n point DFT now can be represented in terms of n point n by 2 point DFT is f 1 k and f 2 k right. So, we have represented n point DFT x k in terms of n by 2 point DFT is f 1 k and f 2 k. Now, let us recall the number of complex multiplication and complex additions required for computing n point DFT because finally, we are comparing computations required for direct computation and your DIT fFT. Pause and video for a minute and think on this ok. So, as we know the number of computations required for computation of n point DFT by using direct computations is n square and for n point DFT the number of complex additions required are n into n minus 1 ok. So, now, let us continue with this remember now we want to compare these computations for direct computation of f 1 k and f 2 k because these are n by 2 point DFT is require n by 2 square complex multiplications each. Now, n by 2 additional complex multiplications are required for multiplying w n k into f 2 k right. And then with the first step that is after dividing that n point DFT into n by 2 point DFTs the number of complex multiplications are for 2 n by 2 point DFTs 2 n by 2 square plus additional n by 2. So, which is n square by 2 plus n by 2. So, which is approximately for a large value of n n square by 2. So, the number of complex multiplications comes down from n square to n square by 2 and same way this is only with one step right. So, in the next step further decimation we can do. So, by decimating f 1 n and f 2 n in time results into n by 4 point DFTs. So, v 1 1 n as f 1 2 n. So, v 1 2 n as a f 1 2 n plus 1.  So, these two are n by 4 point DFTs. Similarly, from f 2 n we get v 2 1 and v 2 2 n right. So, these are also 2 n by 4 point DFTs. So, it means what now these n by 2 point DFTs f 1 k and f 2 k now can be written in terms of these n by 4 point DFTs. So, by computing n by 4 point DFTs we can now compute these n by 2 point DFTs f 1 k and f 2 k. So, this is how we can do it f 1 k equal to v 1 1 k w n by 2 k v 1 2 k where k equal to 0 to n by 4 minus 1 on same lines f 1 of k plus n by 4 equal to v 1 1 k minus w k n by 2 v 1 2 k and same for f 2 k and f 2 k plus n by 4 which is written in terms of your n by 4 point DFTs v 2 1 and v 2 2 k right. So, where v i j k are all n by 4 point DFTs of sequences v i j right. So, now if we compare once again a computation of v i j k these are all n by 4 point DFTs.  So, there are 4 n by 4 point DFTs. So, they need 4 into n by 4 square complex multiplications with which we get additionally multiplications if we compare. So, 4 into n by 4 square means n square by 4 plus here you need n by 4 multiplications here you need n by 4 multiplications means n by 2 plus for f 2 k multiplied by w k and n by 2. So, those additional n multiplications. So, the total number of multiplications will be n square by 4 plus n right. So, once again if you compare for a large values of n. So, it negligible. So, it comes out to be n square by 4. So, with twice decimation it reduces from n square to n square by 4 almost one fourth of the total and the same way you can continue right. So, it means for n equal to 2 raise to v this decimation can be performed as v times v equal to log of n to the base 2. So, the total number of complex multiplication is reduced to n by 2 log of n to the base 2 because there are n by 2 multiplications for each step. So, the number of complex additions will be n into log of n to the base 2. Actually these calculations we can understand from this particular structure. Now, remember this structure is known as a butterfly structure where you have supposed to inputs a and b and here is a multiplication factor some today factor w dash n. So, this a comes here this b gets multiplied by w dash n. So, multiplication of this comes here as and here this is a summing point. So, it will be a plus w dash n b and here as it gets multiplied by minus 1. So, this will give you a minus w dash n b right.  So, this structure is going to help us to draw the algorithm. So, this one structure actually requires one multiplication and there are two additions. So, one complex multiplication and two complex additions right. So, using this you can draw the signal flow graph. Remember here the input sequence comes in the bit reversed order right with one decimation it divides into 0, 2, 4, 6 and second decimation 0 4 2 6 1 5 and 3 7. So, now the first stage the computation of x k in terms of f 1 k and f 2 k f 1 k computation in terms of v 1 1 k and v 1 2 k right. So, using those equations you can draw this particular structure right. So, here the multiplication factor will be. So, one of the if I say this is f 1 0 plus f 2 0. So, x of 0 will be equal to f 1 0 plus f 2 0 and x of 1 will be f 1 1 plus f 2 1 into this factor w n k that is w 1 8 and so on. So, similarly you can understand this particular structure and this is what the signal flow graph references. Thank you.


was particularly interested in the in belongs response and work with the first in class report. I noticed there were, there was some comment about capacity and workforce that also is obviously very, very important, given the expanding tasks that has hours. I've been to hear about partnerships and collaborations with the tribes and also the progress in, in, in, in Jedi, and, and also I heard potential partnerships with HPC use which I think is also very, very interesting. Thanks to everybody for a very interesting and informative two days and we look forward to continuing to work with you over the next few months leading up to the summer. I think we're scheduled, the committee is scheduled to reconvene in a closed session at 330 I'm happy to go ahead and adjourn our open session a little bit early gives most folks 15 minutes of their day back and give our folks a little bit of a longer break than anticipated. Unless there's any other comments, thoughts or feedback folks would like to provide here at the end. With that, I will say, thank you again, and we will see the committee members in closed session for our committee balance discussion at 330.


So, you're pretty familiar with that name behind me. It's Amazon. It's a trillion-dollar company, one of the most reputable businesses in the world. It's the largest online retailer in Europe and America. And they trial this concept of Amazon going Amazon fresh. In 2017, they rolled out in a few select stores in the United States, focusing on major cities, LA, New York, Seattle. This is their first store here in the UK in Ealing, West London. We're going to go and see what it's like, whether the concept works, whether this is the future of retail, and most importantly, how tasty is their cheese sandwich? Let's go. Sure. You're going to be using one account? Yeah. Perfect. So, I'm going to ask you to kindly scan it to you. Thank you. Thank you. It's like a salad. All the ready-made kind of prices, what you'd broadly expect in Tesco or Sainsbury. I think looking at their fruit and veg, looking at their meat, looking at the milk, these guys are serious, aren't they? I mean, you only start making supply chains for milk and meat if you're serious about economies of scale. You don't do it for a little store in Ealing. While most of the food products are competitive with Tesco, Asda, Little, this was interesting. There are a few that aren't. Max three, four blades, nine pounds. Now, I know they're not cheap at the best of times, but if you actually go online, I just did a go into the Amazon store. Four pack of Max three blades is 770. Here it's nine pounds. Thank you. Thanks. I think the first thing I'd say is we've got the coffees. All the coffees there are made with oat milk, and they had lots of plant-based products too. And it feels like, yeah, of course, we'll be talking about whether or not they can go into supermarkets and electronics and all these things. I think the people that should be most worried are those guys over there, Greggs or Pratt, because they're offering relatively convenient products. Is it cheap or not yet? But it shows the ambitions of Amazon to be going for coffee, for cakes, for sandwiches, as well as what we normally associate them with. So the company that came to mind when we were inside Amazon Fresh, and I'll bear with me a second because this might sound a bit strange, was Uber. When Uber was getting valued in the tens of billions of pounds, when it was seen as this huge success story amongst a number of big digital companies, Airbnb and so on, it was often because it was selling hype, not just to investors, but also to consumers and to users. That is to say, we're going to transform how you get from A to B. And that was true, but it also meant there was a huge political response from organised labour, mini-cabs in London, or not just London. In many cities around the world, politicians and also consumers said, we want a level of regulation and safety, you'll get in a black cab here in London. That was ultimately what saw for them here. And I think what Amazon have learnt from that debacle with Uber is if you're going to disrupt an industry, don't talk about it, just do it. And one of the interesting things about the launch of this was that, yes, it got press attention, the BBC were there, the papers were there, but it still felt quite underwhelming. Given the extent to which this could disrupt the high street groceries, look, not in the next five, 10 years, but in the long term, I felt that story was underreported. I think probably because Amazon weren't pushing it. Amazon, unlike Uber, aren't interested in telling everybody how disruptive they are. They want to keep a low profile and they want their actions to do the talking. Now, for me, that's interesting when you put it into counterpoint with 101 companies you're probably aware of that happily pitched themselves as innovative disruptors. They're kind of getting high on their own supply. Amazon have learnt over the last two decades. If you're serious about doing that, keep it to yourself. Yeah, maybe go the other side. It seems a bit less busy. So let's see what we got from Amazon Fresh. Croissant, nothing special. It was made today. Let's get the sandwich out. So this is the plowman's by Amazon on multi-seed bread. It's really tasty. It's really fresh. Much tastier than the sandwich you get at Asdor or Tesco. This was made today. And the reason why we've picked a few items that you'd cook at home, but also a few items for a takeaway lunch is just to work out the supply chains that Amazon is operating with, what kind of sectors they want to go into of the retail market. So you've got the croissant. All goes into a croissant. You've got dairy. You've got grains. It's got to be baked, but it's also got a shelf life of maybe one day maximum. That was baked today, by the way. In terms of the sandwich, all the same is going on, but also you've got veg, of course. I'll be honest. This is the freshest salad I've had in a sandwich in a really long time, which suggests a few things. Amazon may want ultimately not just to go after the lucrative city shopping sites, the retail sites, the small sites, your co-op, your Tesco extra. That's obviously where they're going to start, judging by this first site here in the UK. They're also obviously going to go for the biggest sites you imagine, electronics, stacked high because they've got those big advantages in warehousing, economies of scale with suppliers. For them to go for something like this would suggest that they're not happy with just that. They want to even go potentially after the likes of Pret or Greggs with a really affordable lunch option. Maybe I'm being a bit over the top here. Maybe this is an exaggeration, but judging by this product, it kind of suggests that they have really big ambitions for what they want to do over the next couple of years on Britain's high streets. They don't just want to sell you a loaf of bread and a can of beans. They want to get as many of your purchases as possible. Yes, online, if you're buying a book or you're watching a film on Amazon Prime. Yes, offline, buying a consumer durable, but also groceries and also maybe even food to go. That was something I didn't expect. Mmm, delicious. So I've got my invoice and you can see all the prices here. You've got the trip time, 10 minutes, three seconds. And what we've seen so far is people complaining about some things were ordered but not included, some things were included but not ordered. What we've got here, item for item is everything we took. There's nothing that we didn't take here and they've not forgotten anything. All the prices are there. We can send feedback, £15.37. It's 100%. It seems to work incredibly well. The technology needed to do this, real-time cameras and sensors across an entire store, you cannot do that in a Tesco Superstore. It would be so astonishingly expensive. So that's the first thing. In terms of the future of this product, Amazon Fresh, at least in the UK, those out-of-town shopping centres, Tesco, ASDA, I don't think that's going to be touched by this technology for a while yet. Although I think ultimately Amazon will want to go in there too, but I do think they're going to have a huge comparative advantage when it comes to kind of city shopping, people spending 20, 30 quid a time. And that's very scalable. And what was really revealing to me was the kind of products which had, by Amazon, right, you're talking milk, you're talking bread, you're talking pasta, you're talking fruit and veg, which suggests they've got really refined and detailed supply chains in quite a few areas, which given Brexit has just happened, is even more impressive. I mean, this has been in the offering for a really long time. I think the first Seattle store was 2017. This is the first one here in the UK, almost four years later. And they've kind of delivered the technology works, the supply chains work, the products we tried were very good. The question is, I suppose twofold, to what extent is this technology applicable across kind of the high street? You know, is this the future of the high street? Yes and no. Yes and no. It's important to say that the exact same technology is in use by JD in China. So it's not that Amazon is the only business that can do this. Tesco could do it too. What I would say is that the idea that these kinds of stores are going to go on to create new jobs, net new jobs over the next decade, two decades, three decades, I think that's really, really, really unlikely. I don't think it's going to happen. And I think as a society, you probably need a broader conversation about where's job creation coming from? Over the last 30, 40 years, it came from services, it came from retail, that's gone. That has gone looking at this technology, right? Because you're not just losing jobs in the shop, you're also losing them in warehousing and so on. And if you're looking forward 10, 20 years, automated driving, I know some people are very skeptical of that. In the long term, I'm not. Often we tend to overstate things in the short term and underestimate them in the long term. I think that's the case with automated self-driving cars. Drones, warehousing, logistics, you can see how huge amounts of human labor are taken out of that. And I think the same applies also to these stores. So it's the future. Yes. Is it going to come in the 2020s? You know, is this going to be what all shops look like by 2030? No. But it's a huge political challenge, I think, for those in charge. And I think the rest of us have to wake up to some big questions. What kind of jobs do we want? What kind of high streets do we want? And do we want businesses that aren't ethical, don't pay living wage, don't pay their taxes to be the ones benefiting from this? My personal view is no. I think very few politicians would overtly defend that, but it's got to be raised. Because ultimately, if a business like them aren't paying taxes, aren't giving jobs, then what are they doing and why are they here?