In an epic clash of titans, a tale from ancient Persian poetry unfolds. Rostam, the celebrated warrior, faces off against the formidable Esfandia, a contest of strength, a game of strategy. This isn't just a battle, it's a dance between two legends, each step echoing through eternity. Esfandia, the prince, imbued with invincibility, meets Rostam, the hero, whose reputation precedes him. Their confrontation, a breathtaking spectacle, a seismic clash of wills and wits. Yet victory is elusive, and in the game of war, there are no guarantees. The battle reaches its zenith, and in a twist of fate, Esfandia succumbs. His invincibility shattered, the prince falls, a tragic end to a magnificent struggle. Remembered forever, Rostam versus Esfandia, a tale of power, strategy, and the ultimate price of conflict.


Hello everyone and welcome to the Circuit Python Weekly for April 18th, 2022. This is the time of the week where we get together to talk about all things Circuit Python on this lovely snowy day. I'm Katny and I'm sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Development is primarily sponsored by Adafruit, so if you want to support them and Circuit Python, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join anytime by going to adafru.it-slash-discord. We hold the meeting in the Circuit Python Dev Text Channel and the Circuit Python Voice Channel. This meeting typically happens on Mondays at 2 p.m. Eastern, 11 a.m. Pacific, except when it coincides with a U.S. holiday. In the notes doc there is a link to a calendar you can view online or add to your favorite calendar app. We also send notifications about upcoming meetings via Discord. If you'd like to receive these notifications, ask us to add you to the Circuit Pythonistas Discord role. There is a notes document to accompany the meeting and recording. It contains timestamps to go along with the video, so you can use the document to view the parts of the video that interest you most. The meeting turns to run 60-90 minutes, so this gives you the option to skip around. After each meeting we post a link to the next meeting's notes in the Circuit Python Dev Channel on Discord. Check the pinned messages to find the latest notes docs so you can add your notes anytime following this meeting. If you wish to participate and cannot attend, you can leave hunger ports and status updates in the document for us to read during the meeting. This meeting is held in five parts. First part is community news, which is a look at all things Python and Circuit Python in the community. Second part is the state of Circuit Python, libraries, and Blinka, which is a statistical overview of the entire project. Third part is hunger ports, which is an opportunity to call folks out for doing amazing things. The fourth part is status updates, which is an opportunity to sync up on what we've been doing since the last meeting and what we will be doing until the next meeting. And this week we do not have in the weeds. And that covers how the meeting will go. So with that, I will get started with community news after I take a timestamp in the right place. So first up, 34,000 members reached on the Adafruit Discord server. The Adafruit Discord community, where we do all of our Circuit Python development in the open, has reached over 34,000 humans. Adafruit Believes Discord is a unique way for Python to hardware to connect folks. Join today at adafru.it-slash-discord. And there is a link in the note stock to a blog post that shows you the history of the growth of Discord. We also reached 3,000 members on the Circuit Python subreddit. Thank you to our Reddit readers for choosing to get your Python fix on our subreddit. And there is a link to the blog post and also to the Reddit, the subreddit itself. Raspberry Pi RP2040 Availability. There was a Twitter post by Even Upton that said somebody posted about the number of Raspberry Pi RP2040 chips in stock at a particular location and even replied with lots more where that came from. We shipped 500,000 units per month last quarter with a capacity to scale that several times if we need to. So it's an update on production after a post on microcontroller availability and price. And then there's also an interview with Even linked in the notes. Next up is a command line game designed to help you learn Git. Git Good is a command line game designed to help you learn how to use the popular version control system known as Git. As levels progress, you will know more and more about Git and eventually become a Git grandmaster. There's a link to that on GitHub. And finally, the project of the week this week was testing math precision. Doing math operations on microcontrollers, which most often uses fixed bit lengths to represent numbers can result in rounding errors, decimal numbers that are close to the result, but not quite right. User hide underscore G took a look at various Python implementations to check this out. And there's no link in this because I didn't copy the whole thing. There was a significant amount of information about this. They posted different Python versions, including circuit Python, regular Python. And I figured I would leave that as a cliffhanger because this is all pulled from our circuit Python weekly newsletter, which is a circuit Python community run newsletter emailed every Tuesday. Archives are available on a fruit daily comm slash category slash circuit Python. And it highlights the latest Python on hardware related news from around the web including circuit Python Python and micro Python developments. You can subscribe by going to Ada fruit daily comm. And if you wish to contribute your own user project, you can edit next week's draft on GitHub and submit a poll request. Or if that's a little outside what you are interested in doing, you can also tag a tweet with hashtag circuit Python or email cpnews at Ada fruit comm. And that's any kind of circuit Python, Python, whatever projects or, you know, fun things just whatever you find or whatever you're doing, we want to know about it. And that is community news. So that brings us to the state of circuit Python, the libraries and Blinka. This is a statistical overview of the entire project, which is a chance to see things by the numbers, aside from what we're all up to. So overall, which applies to all three of those. There were 14 pull requests merged by 13 authors, two author names that I don't recognize or awgrover and R. I. Vimey. There were 10 reviewers. Thank you to all our reviewers. And in terms of issues, we had 12 closed issues by seven people and 15 opened by 13 people. That's where we are overall. So with that, I will turn it over to Jeff to talk about the core. All right, I am totally prepared to talk about the core. So thanks for asking me earlier. In the core, we didn't have a lot of activity. We had two pull requests merged by two authors and four reviewers. So that was one of really well reviewed pull request. A lot of people gang up there. In terms of pull requests, we have 19 open pull requests. The ones that have been open for the longest time are waiting for us to decide we're ready to do version 80 and make incompatible changes. While about two thirds of the total are under three weeks old. So while we and maybe I in particular need to do better at keeping on top of pull requests, it could be a lot worse. Issues wise, we closed eight issues while we had six issues opened by six people. So we're down a little bit on issues. We are left with 525 open issues, but we categorize them according to milestones. And a milestone milestone we reached is that there are no remaining open issues for the seven to X milestone, which means we may be done doing bug fix releases of that series. And we're going to concentrate on getting to version 730 for which we have four open issues we'd like to resolve. The vast majority of the issues are categorized as long term, and that means a different doesn't prioritize working on them. But that doesn't mean that you shouldn't pick up one of them and work on it if it scratches your itch. And I guess as far as activity goes, I would like to accept I don't have the the names in front of me we've got a couple of people who are really picking up work on the Is it the IMX series of microcontrollers that which includes the teensy 4.1 and it's really great to see that work going on. And I think a lot of pull requests are going to come out of that because we haven't had somebody concentrating on that part of the work. Yeah, so that's what I know about the core. Please keep up when we make a new 73 pre release or the 73 final release sometime soon once we can get through just a handful of issues. Thanks, get me that's what I got. Thanks Jeff. Next up, I will talk about the libraries. So across all the libraries which is everything that begins with Adafruit underscore circuit Python underscore as well as a couple extras including the community bundle. We had 10 pull requests merged by six or by nine authors with six different reviewers. Two of those pull requests were over 20 days old which is good to see that we're getting through some older pull requests. And it looks like we're keeping up also with newer pull requests. And that leaves us with 20 open pull requests across all of the libraries. We had four issues closed by four people and seven opened by six people, leaving us with 634 open issues 198 of those are good first issue. If you're interested in contributing to circuit Python on the Python side of things check out circuit Python org slash contributing, you'll find all of this information and more including a list of open issues. And if you're looking for something you're new to everything and you're looking to contribute, check out the good first issue label. Those are all curated issues that we feel are a good place to start if you have never contributed to circuit Python or open source before. And remember that we are always available to help out and we have a guide on contributing to get a continued circuit Python using get and get hub. So I don't let that part intimidate you we can definitely help you out if you're interested in reviewing check out the list of open pull requests. Take a look test it if you have the hardware. If you don't check out the code see how it looks let us know leave a comment. That's always very helpful. And in terms of library updates in the last seven days. There were no new libraries, but a number of updated libraries which are in the notes. So if you're interested in that check it out. And with that I will turn it over to Melissa to talk about Blinka. Hello, so Blinka is our circuit Python compatibility layer for. Micro Python Raspberry Pi and other single board computers. And this week we had to pull requests merged by two authors. And three reviewers that the there are currently for open pull requests and there were zero closed issues by zero people. And two open by two people leaving in a 74 open issues. There were 11,664 pie wheels downloads in the last month. And we are currently supporting 84 boards. And that's it. Thanks Melissa. So that completes the state of circuit Python the libraries and Blinka. With that we'll move on to hug reports hug reports is an opportunity to highlight the great stuff that folks are doing in the community. If you experienced anyone helping out with something or saw a really neat project or anything that you feel is worth identifying someone for. That's what hug reports is all about. So we'll do this is around Robin I will start and then I will go down the list as it is in the notes document. I will read off notes for folks who are text only or missing the meeting. And I will hand it over to folks who are in the meeting to read their hug reports. So I have a bit of a list today. First up hug report to Crayola for taking a look at my Python 2022 circuit playground blue fruit demo and for making suggestions to clean it up a bit from the initial code. To Jeff for proofing my update to the Python 2022 circuit playground blue fruit quick start worksheet that I adapted from the 2019 circuit playground express version to Melissa for offering to do the same. To Phil for creating some short URLs for me and taking the extra time to bring the dev team in to sort out how to handle duplicate URLs so I could have updated links to the same content is 2019. And to the dev team for figuring out how to create duplicate URLs in our short URL system to Dan and Jeff for the chat about open court issues last week. And finally to foamy guy for inviting me to his deep dive last week and to everyone who participated. I had a lot of fun with that and there were some great questions and I appreciated being able to join and had a lot of fun as I said. So that is my hug reports next up I have notes from Dan. Who has a hug report for me for testing proposed neopixel timing fixes on some unusual neopixel strands to Naradok for working on listing frozen modules in the support matrix and to Kurt E and mjs 513 for a lot of I am x work to support teensy boards. And next up is to ship. Great text only today. I will go ahead and read it off. She has a hug report for foamy guy for the deep dives and a group hug. Next up is foamy guy. Alright, thanks Kenny. I have reports this week. Thank you to you for coming on the deep dive. I definitely had a great time as well. Thank you to everyone who watched and all the folks who asked great questions in the chat. I have a hug report for near doc who helped me with some stuff that I was trying to do inside the core. I got much farther than I would have without the help that I received so I'm grateful for that. As well as also help me with some other library stuff this morning and generally of course is always helping folks in the help with channel on discord so thank you to near doc. To tech trick for helping me get the multiple cookie. PR in the request library tested out I made a silly mistake there and tech trick pointed me in the right direction and had a server setup to do the testing on that specific thing. So thank you to tech trick. I have a report from my wife Christina who proofread my typing guide page. I tend to just kind of spill my thoughts onto the page and they don't generally come out in a in the correct way I guess. Anyway, but I definitely appreciate the work getting getting that stuff corrected and actually correct. I'm blanking on the right term that I'm trying to think of but that's alright. And then lastly I just have a group hug for everybody else. So thank you to everyone. Thanks Tim. Next up is Jeff. Hi again. I wanted to give a hug to you can you for writing up a blog post about our Picon presence. And another one for you and also to Dan for taking some time to go through the open issues last week. We had let it go for a little while and hadn't categorized the issues as far as milestones and it was good to sit down together and just work through it. Thank you. Good to know that blog post went live. I wrote it on Friday. All right. Next up is K match. Thanks. So this is to a user, not in the circuit pipeline community, but active on ESP 32 expressive forum, perhaps they're an ESP employee user is ESP sprite. And they provided some great technical support on the new LCD peripheral on ESP 32 S3. I appreciate that. Thanks. Excellent. Next up is maker Melissa. I want to give a hug report to Nacho for helping with getting them to be driver working and you were probably everyone else. Thanks. Next up I have some notes from Mark, who is not in the meeting who says a hug report to PT for the tour of Adafruit while I was in New York City. Next up I have notes from Tammy makes things who also is not joining us today and that's a group hug. And finally next up is tech trick. Hi, yeah, so group hug to foamy guy echoing back back at them for helping with the PR on the multiple cookies. Definitely. I know the library is used and actually frozen in for a couple boards. So always appreciate getting the extra eyes on that and getting that tested and merged and another one for foamy guy and you can be for the awesome deep dive about the libraries. It was a pleasure to watch and a group hug. Thanks. All right, that sums up hug reports, which means it's time for status updates. Status updates is an opportunity to sync up on what we've all been up to since the last meeting and what we're going to be up to until the next meeting. So take a minute to talk about what projects you're working on, what you did over the last week, as I said, and what you plan to do over the next week. Also, if you have any fun personal things going on, and you want to talk about that we're always interested in hearing those two. So don't hesitate to include anything like that. I will start and we'll do this is around Robin is Hug reports was done and everyone who wants to get a chance to participate. So first up is me. Last week, I published the ESP 32 s three feather guide, along with all that goes with that, which is to say fritzing objects and pretty pins diagrams and all of that stuff. A lot of it was what's called mirrored from the ESP 32 s two guide, which is to say the page that's in the s three guide is actually the same page that's in the s two guide and if I make any edits to it, I have to edit the s two version. Because they're basically identical boards. The layout is exactly almost exactly the same the chip just fits right in, which is part of why we jump so quickly to doing the s three is that it was not as much extra work as a new microcontroller board usually is. And so that guide is out there's still a couple of tweaks I need to make to it but I believe it's published. And then quick updates to three guides for boards that had minor revisions. The pie you are the BLE sniffer friend and the PCF 8523 all had changes to either, you know, a chip size, or so not the chip itself is different, but it is just a different package. Or now it's usb c instead of usb micro. This is all due to parts shortages and us, you know, working with what we can get. So this week, I'm going to continue testing pie leap. Last week or the week before I don't remember when I tested it and found a couple of bugs. And that is my job with testing pie leap is to find bugs. So I need to actually go through and test every single project that's in there to make sure that it actually works as intended and then I will be testing the way to add projects to pie leap. We have a JSON file that it queries and then that project shows up in pie leap. If you add it to that JSON file, it's much easier than it was. But I need to test that and make sure it works as expected. And then I'm going to be working with Trevor to make sure any bugs in pie leap are fixed. We're basically going to go into a bug fixed mode. And I will be directing Trevor to make sure that we get, you know, one thing fixed at a time and we get through each thing and get a release and able to test it and make sure everything works. And then prep for PyCon 2022. This is coming up in a week and a half. I'm going to be leaving in a week and a half. So it is, it is time to buckle down and finish prep. I did some last weekend I did some just this past weekend as well but during the week I will actually be doing some prep now. So last weekend, as in yesterday and the day before, mostly finished the Circuit Playground Blue Fruit demo to flash onto the boards we'll be using for open spaces and considering changing one small thing but I want feedback before doing that. Continued sorting out my hardware kit for PyCon and started writing my talk for the Education Summit, which is a day long event that happens before PyCon. And it's about Python in education and I'm doing a talk on Circuit Python in education. So, and then I'm also hosting a mini sprint which is basically, you know, just here's, here's some Circuit Playground Blue Fruits. You want to learn how to play with Circuit Python, join us. So that is what I've been up to. Next up I have notes from Dan who says working on improving Neopixel timings for a variety of Neopixels, especially on the SAMX 5x, which is to say SAMD51. He has a good assortment of different base chips now to test against. Debugging gaps between I squared C transactions on the ESP32 boards, the S whatever or C whatever boards. The gap size is approximately the free RTOS tick length and it appears to be multitasking related after varying some tasking timings. Tracking down what we are actually doing with tasking also looks like we may be waiting too long to service the tiny USB task. And then continuing to test the ESP32 SPI Wi-Fi hanging. And next up is the Shibu. So is it fixed? It is fixed. Yay! Sorry, I've been playing a bit with old school LCD displays. I've been inspired by the SensorWatt project of course. And with some discrete strips that are able to drive them. So that's basically from the next week. In previous week I was working on a new version of my Pew Pew device. And it has a 9-bit SPI display from Nokia 1202. That was very popular phone and that's why those displays are super cheap now. You can get them for a dollar or something. So I hope to get the price of at least the fabricating of the device to below 5$. So that's that. But while working on that I discovered that display IO has been broken on some D21 boards. Including the Halloween since 70. And I wrote it down to a single commit that changes how the system clock works on some D21. But I have no idea how to follow from that. What actually is broken, the changes themselves don't refer to display IO at all. So I have no idea how to fix that. Just if anybody has any suggestions I'm open to that. And finally I will run CircuitPython Workshop using those Pew Pew devices on the next EuroPython in July in Dublin. Actually we will be using the devices from 2019. Because we have some leftover from back then. And you can't produce new ones because they're shorted. So that's that. That's all. Thank you. Did you file an issue about the display IO thing? Of course. Okay, excellent. I'll link it in the description. Perfect. All right, next up is FOMIGuy. All right, thanks Kenny. So last week I made an attempt to refactor some code that was checking on types and sizes inside of the tile gritter initializer function inside the core. To try to be able to reuse it from a new bitmap setter property, which I also worked on. But I did not, I was not successful. I got it refactored into its function, but I couldn't figure out how to get it to return the right stuff. Also this past Friday, as we mentioned before, we did a special library focused episode of the deep dive. And I probably did more things last week, but I did not write them down as I went and then could not recall them this morning. So getting into this week, I made a couple PRs. One was for a small issue in the ESP 32 S2 TFT library with a typo in the read me on the circup install. And then also another one on that same library trying to make it more optional to have secrets pie. I noticed the simple test doesn't use the network but does still require secrets pie. So I made kind of a quick first attempt at making that optional and made a PR for it this morning. Testing out a couple of different various PRs around different libraries. The one that probably took the most time and attention was the multiple cookies on the request library. Continuing on this week, I am going to kind of undo some of that refactoring and get it back into a working state. And then also add an additional restriction to make it so that the when you do want to change the bitmap, we'll just make it so that you have to change it to a bitmap that is the same size, which negates the need for checking to make sure that the size is a multiple of the tile size, because it will definitely because it will be the same as the one that was originally set, which does, you know, it's a limitation, but it does still work for like everything that I had in mind for it. Maybe someday in the future, it might be nice to be able to support different sizes, but being able to change to the same size actually will do everything that I have in mind at least for now. And then the last thing I have for this week is to get the typing guide page submitted for moderation in the learn system. Excellent. Thanks, Tim. Next up is Jeff. Hello. It was another floppy heavy week. Don't I say every week that we're about wrapped up on floppies? It's always a lie. So I had a lot of good luck with converting files to the .was format for running an emulation on Apple II emulators to bring copy protected software off of those physical floppy disks and into the virtual realm. And then the other thing I did was created a program for visualizing the flux on a floppy kind of in a pie chart thing. And I've dropped links to those in the discord chat a little bit on the circuit Python side. No, wait, this next one's Arduino. There was a problem with the Adafruit Arduino CI that gave not working. You have two files for samd51 and that is fixed. And no, no Python, circuit Python stuff. I made a case for my PyGamer which I posted up on the usual sites for that. And that was a lot of fun. Anyway, this week I have some stuff I need to pull request into PyBadger. I fixed some problems with the display dimming and I want to add a new example that uses async.io so that I can run the LEDs and respond to the buttons to change the badge display at the same time. And then I'll just generally take a look. Last week I assigned myself some circuit Python issues. And there's maybe still some more floppy drive stuff. I have some PRs that I keep saying I need to go back and figure out what I need to do before they'll be merged in FlexEngine and in GreaseWeasel and I'm not even really sure of the state of those. But yeah, that's what's up for me. And then of course the week after is PyCon, which is really exciting. Thank you. Alright, thanks Jeff. Next up is K-Match. Thanks, Danny. So work continues on the ESP32-S3 frame buffer displays. And thanks to support from the ESP, the expressive team, I was able to get a bouncing square working in circuit Python and eliminated the screen glitching that was there before. Thanks to their code. Subsequently found a way to convert their code so that I could trigger the display refresh so I could eliminate the tearing effect, which sometimes happens if you draw while the screen is refreshing. So I found a way to resolve that. So this week I hope to clean up the code a little bit to make it a little more friendly so that it handles the pins properly, particularly when it falls down into the REPL to see if I can make it behave like it's supposed to. And I need to at least make a first commit so I can not lose all my code. I need to do that this week. And then I still have some comments I need to make back to the ESP folks to help their IDF code be more suitable for what we need in circuit Python and see if they're open to that. So I need to clean that request up and submit that. And then lastly, I put this off another week, but I need to test the capability of IR time of flight sensors to see if they can actually detect how far a bowling ball passes you when it's going by at 16 miles per hour. So I'll see if that's even possible or not. So that's it. Excellent. Keep us posted. That sounds interesting. Next up is maker Melissa. Hello. This last week I got an alternative display. It's a MIPI driver for all the displays working. It's kind of a universal driver that I'm working on for the Raspberry Pi. And I wrote the init commands for three different types of displays. And I'm working on an installer for that driver so it can be fairly easily, I'm making it so it can fairly easily integrate back into the Pi TFT driver. And this week I'm going to finish that up as well as some preparations for Python such as reviewing documents. And that's it. Excellent. Thanks Melissa. And next up I have some notes from Tammy makes things who's not here today. Last week due to starting a new job and also a death in my extended family didn't work on anything circuit Python related last week. This week Twitch, which is twitch.tv slash Tammy makes things streams Wednesday at 5 30pm Pacific and Saturday at 11am Pacific, working on the circuit Python card library and hopefully working on more typing PRs. And next up is tech trick. Yes, so this week, this past week just got over still getting over being sick and preparing for Passover so all bed and no bread here. So that has been the majority of the past week. In addition, I have the pleasure of moving twice this year so I will be preparing for that so then I have been preparing for that so it's been a really relatively light week still been working on as we've said a couple times the testing the PR for the multiple cookies. And then the other thing I was able to finish working on this week was adding the auto magically attempting multiple networks in the portal based library. If you add a new networks key to the secret stick. So, otherwise just trying to help with reviewing PRs and looking at issues this upcoming week. Again, packing so another light week and trying to tackle some of my own submitted issues. There's a few there regarding documentation that I'll try to get to. And as everyone else has said, starting to gear up for Python. Excellent. So that is status updates thank you everyone for keeping it concise. So this week we have no in the weeds, because we wanted to end early it looks like we probably could have accommodated in the weeds. But I think it's better to keep it, keep it small and wrap it up. So, this has been the circuit Python weekly for April 18, 2022. Thank you to everyone who participated. Next week's meeting will be an April 28 Monday as usual. If you want to support Adafruit and circuit Python and those of us that work on circuit Python consider purchasing from the Adafruit shop at Adafruit.com. The video of this meeting will be released on YouTube at youtube.com slash Adafruit and the podcast will be available on major podcast services. It will also be featured in the Python for microcontrollers newsletter. Visit adafruitdaily.com to subscribe. I already talked about the next meeting Monday the 28th at 2pm Eastern 11am Pacific. It's held on the Adafruit discord which you can join anytime by going to adafru.it slash discord. And if you wish to be notified about the meeting and any changes to the time or day you can ask to be added to the circuit Python Easter's roll. And with that we hope to see all of you next week. Thank you for participating and thank you for dealing with our, oh is it? You are correct. Whoever put it in the notes for me put it in wrong. So the next meeting is April 25th. That's Monday at 11am Pacific 2pm Eastern to clarify 25th. Okay. And with that thank you for pointing that out and thank you to everyone who participated and I hope to see you all next week.


Hey, so today I'll be talking about how I built the dinosaur game AI and how you can do the same Now unlike a lot of other people's approaches where they either rebuilt the game from scratch or hacked through the source code to make it Compatible with their AI this game is as true to the real game as possible by actually capturing screenshots of the real game and Learning from that for the more the coolest part of this AI is that it's only around 200 lines of code So let's get started So this AI is actually built on the principles of reinforcement learning Which as the name suggests is a form of AI learning where the AI learns from rewards Given by the game in this game I had a very simple reward function if the AI dies it gets a negative 10 reward and if it lives It gets a plus one reward this AI was designed around something called Q learning where the AI actually learns to estimate the Expected reward of doing each action So in this case we have three actions jump duck or do nothing and if the AI in this situation decides to jump it might learn That the expected reward is plus one while the expected reward of going straight or the no action would be negative 10 Traditionally Q learning is actually done in a tabular manner where each state an action that means position in the game and Potential action is mapped to the expected Q value in a tabular table like sense This tabular learning happens with this learning algorithm However, this method of tabular learning does not really carry you a well to a chrome dinosaur game because we're dealing with images here And each image has billions of potential values and therefore our Q learning table would be too long Instead what we can do is actually borrow techniques from machine learning such as neural nets and deep learning to actually train our AI to Estimate the expected value for each position This is done using something called a convolutional neural net or a CNN as the name suggests Function approximation is just an approximation of the various Q values So therefore it's not technically as accurate as doing a tabular sense But in this case, it's the most practical way of the chrome AI actually learning However function approximation does give us an advantage of being able to abstract if I the AI is learning to be used in other cases Now let's move on to the actual AI implementation The AI is actually divided into three broad categories the agent the environment and the learning loop The agent is the actual AI that controls the dinosaur and is responsible for choosing what actions to take and also learning from those actions Based on the reward it gets The agent is fed its inputs or its images from the environment The environment will actually stack four consecutive frames or images together to allow the agent to learn the speed of the game Since the game does speed up as it progresses The environment is also responsible for providing the agent Reward signal and letting the agent know when the game is over now traditionally an environment is the game itself But in this case since we're using the chrome AI game That's already built in our environment simply needs to control that so in this case Our environment is actually responsible for taking the screenshots Packaging them up into layers of four images and also determining based on pixel values When the game has ended and appropriately giving a reward signal based on that The environment also did a bit of preprocessing on the images in this case by reducing the images resolution Converting it to black and white and also making it a bit more contrasty to make it easier for the agent to learn on And lastly, we have the actual learning loop. This is where the magic happens This is where the AI actually plays the game and learns from its experiences The loop is fairly straightforward and no matter what reinforcement learning architecture use this loop is going to stay pretty much the same The loop starts by resetting the environment from here The agent picks an action to take the environment executes the action and returns the appropriate reward Whether the game is done and also the next state that the AI has ended up in the AI will actually remember the reward in The next state based on the original state action pair using something called the experience replay You can think of the experience replay like the memory of the AI now once the game is finished The AI can actually go back to its experience replay randomly select a couple of experiences and learn based on those experiences And that's it for this video That was a fairly high-level overview of how Q learning function approximation and reinforcement learning works Now I have all my code of for this AI posted on github with much more detailed Annotations and you can always leave your questions down in the comments. Thanks for watching and here's some more AI gameplay


From VOA Learning English, this is the Education Report. Malala Yusufzai spoke to hundreds of young people at the United Nations on July 12th. It was her first public speech since last October, when the schoolgirl was shot in the head by Taliban gunmen in Pakistan. The UN speech continued her campaign to educate children. On the day she spoke, two groups announced that 57 million children around the world are not going to school. The two are Save the Children and UNESCO, the UN Educational Scientific and Cultural Organization. A little more than half of those who are not going to school are girls. In September of 2012, UN Secretary General Ban Ki-moon announced a program to get every boy and girl into school by 2015. Malala Yusufzai believes the goal is possible. In her words, one child, one teacher, one book and one pen can change the world. Shaza Shahid is the executive director of a new program called the Malala Fund. She says the 16-year-old is a true spokesperson and warrior for girls' rights. The Malala Fund was created to support the voices calling for girls' education. The actress Angelina Jolie has donated $250,000 to the fund. A group called Women in the World donated $150,000. The first children served by the fund are 40 girls in Malala's hometown in the SWAT Valley of Pakistan. These girls, aged 5 to 12, had been working. Shaza Shahid says the girls have now stopped working and are going to school. Malala Yusufzai is now going to school in England, but she talks to the girls in the SWAT Valley through the computer software program Skype. Girls are also urged to tell their own stories online at malalafund.org. For VOA Learning English, I'm Alex Villareal.


Hey everyone and welcome back to Nintendo Prime. We have a bevy of new stories for you today. The Mario Kart 8 Deluxe DLC drops and you can actually download it right now. We'll talk about that. The new information gleamed from there. We also have some potential stuff with the indie world and so much more today. Time stamps all down at the bottom. We are also on our road to 80,000 subscribers this month or next month or this year. Whenever we get there, if we get there. If you wanna help us on our road to ADK, just go ahead and hit that subscribe button. Also why not hit the like and comment that obviously will spread our videos around as well. We also happen to have a giveaway going on right now for Nintendo Switch OLED of PlayStation 5 or an Xbox Series X for the month of February and March. All you have to do is use that gleamed.io link down in the description or the pinned comment to enter for that. That's right, pretty exciting there. Winner announced on April 1st and I promise this isn't an April Fool's joke. We're actually giving one of those systems away to one lucky winner. We actually already gave away Switch OLED earlier this month. Hey, you know, we're just in that gimme mood. Although, well, giveaways, monthly giveaways are actually slowing down until E3 slash Summer Game Fest. We will still have milestone giveaways. So yeah, if we do get to 80,000 subscribers, we'll do another celebration giveaway because that's just what I like to do for my community. All right, let's get right into the news and our first story is a massive correction on yesterday's big video. So we had a video yesterday talking about how Nintendo Switch's name was, well, or Nintendo Switch 2's name called Switch Forward. And reality is that Switch Forward is a real thing. I actually put a pinned comment talking about this and correcting myself yesterday and I corrected myself on Twitter, but I talked about how I had some independent sources to verify that Switch Forward was a real thing and they did. Obviously, when we talk about Unreal Engine 4, one of the first and most obvious games you would jump to would be something like Fortnite to double-check this stuff. And it turns out that yes, the original source that we posted from Twitter actually did get it from Fortnite. And yeah, sort of my sources. They went and double-checked and that's just where they ran to is Fortnite. And they basically just went through the code base and did a search for Switch Forward and it popped up. So that's where I got my confirmation that Switch Forward was real. But my independent sources then went through there and decided, hey, let's dig a little deeper and saw that it was within a tree in the code base that was about the rendering solution. So Switch Forward was actually not the name of a potentially new hardware. It's the name of the rendering solution that Epic Games uses with Fortnite in particular in Unreal Engine 4. And this was obviously later backed up by a correction tweet from the original source we used on this. Again, we'll show all that on screen for you guys. And so yeah, the next Switch Hardware is not called Switch Forward. I do want to apologize, obviously, if I misled anyone or upset anyone by giving potential mission, well, that's just potential. But by stating something that isn't what it is, data mining is obviously an extremely fickle thing. And when I'm not the one personally doing that mining, it's hard for me to directly go in and verify this stuff. So I'm reliant on others, including people I know who data mine to do that verifying for me. And honestly, it was a pretty honest mistake. They just went through a code base that was obviously Unreal Engine 4 and just did a control F and looked for Switch Forward. So it seemed like it was worth reporting on. Other people picked up on it as well a little bit. But no, the next Nintendo System's not called Switch Forward even though I still kind of really like that name. But yeah, Switch Forward does have to do with Switch just with Epic Games and their rendering solution for Fortnite. So sorry if that disappoints anyone or maybe it makes people happy because there was a number of comments that saw people like, yuck, Super Switch is better. Switch 2 is better. By the way, I think numbered is always better. I think it's less confusing on the marketplace but whatever, much to do about nothing. Let's get into the real news that yeah, you can verify all of this real news quite easily. All the sources as always are linked down in the description. So our first story is a rumor. So there is potentially an indie world dropping this month and I'm gonna glance at my notes on this because this is somebody new, somebody that I never have heard of before. I actually found this on the Gaming Leaks and what Gaming Leaks and Rumors subreddit and it comes from Marmalade on Account NGT Discord and normally Marmalade disagrees with Account NGT a bunch apparently I got from the comments. I have no idea. I don't know who Account NGT is. I don't know if he's a YouTuber. Literally don't know anything about this person but what it stated is that this person actually got correct that we were gonna get the Hogwarts Legacy Event today which we are getting for Sony. So they predicted or said this event was gonna happen today and it is before it was announced and so they obviously have a bunch of other things they have said are gonna happen coming up and how this person can know things between Sony, Microsoft, Nintendo, third parties and have all this information is beyond me. Probably gonna be made up. That's why Tim Foyle had the hell out of this but it is interesting and I do kind of expect an indie world to come from Nintendo sometime soon in the next couple of months but they stated that an indie world will be dropping on March 23rd which is Wednesday next week. They also said a few other things as well like March 22nd is gonna feature a PlayStation VR2 developer showcase and then there'll be a Gotham Night press event next April. So we don't have to wait long to see if this person actually knows anything. I mean clearly the PlayStation VR stuff that's very specific, indie world, very specific Gotham Night, very specific so don't have to wait long to really verify if this person really knows anything or if they're just making guesses and get lucky but yeah, this is obviously just really, really cool and I wanted to bring it up because indie worlds are amazing and every time we get an indie world is one more possibility to see Hollow Knight Silk Song which I know many of us are waiting and waiting and trying to wait patiently for a real update on it beyond a voice actor saying hey, I completed my voice work but like that doesn't tell us anything because we still have to see the game. It's not a vaporware, I guess that's one thing it does tell us. Next up you can actually download the Mario Kart 8 Deluxe DLC right now. Now it's not playable yet although there's some hours fudging like I guess in Australia it says it'll launch tonight which is like the middle of the day for us over here so again, it's possible that with cross region support you might be able to play this very soon, maybe even slightly before when this video gets posted I don't know if it can be played at any point today not necessarily late tonight but today maybe we'll do a live stream showing off that stuff we are gonna be, by the way be live streaming Mario Kart 8 Deluxe DLC tomorrow we'll probably go through the individual tracks on my own and then we'll do a big multiplayer tournament where you guys can obviously select whatever tracks including the new ones but what's interesting in this DLC update is they just added all the cups. All the cups are added we just only have the wave one tracks so the cups are as follows for wave one is called golden dash cup and lucky cat cup for wave two which is later this year is gonna be turn up cup and propeller cup wave three which also should be later this year is gonna be rock cup and moon cup and then in 2023 we should be getting wave four which is fruit cup and boomerang cup and then wave five in 2023 as well with feather cup and cherry cup and then wave six with acorn cup and spiny cup and some people noted like there's some Mario Galaxy and new Super Mario Brothers references in here I don't know I kinda think that these are pretty simplistic but you know what it is neat that they did this it is neat that they're adding all these tracks notably it does look from some people that have hacked their switches and hacked Mario Kart 8 and so there is some gameplay clips out there that the tracks actually look a lot better than they did during the original reveal but obviously it's a little bit subjective because we didn't get to play the tracks back then and we can play them now so full comparisons are a little bit rough although obviously we've seen some screenshots that show that at least the lighting looks a lot better but one thing to note that we didn't know back then that we know now it does appear every single music track in these games is completely remastered and redone for Mario Kart 8 Deluxe so that's really exciting even ones that were in Mario Kart 2 or like newer music tracks got remastered and redone for Mario Kart 8 Deluxe so the music looks really good the visuals have been bumped a little bit now we just got to play the damn thing I'm pretty excited to dive into it with you guys and do this tournament so see you guys on the race track tomorrow night next up we get to talk about AMD Fidelity FX Super Resolution 2.0 so it was already announced by AMD that this was coming but today is kind of a cool day cause we get to see it a little bit in action it's not gonna give you the full scope of it but the AMD released a video showing it in action in the game Deathloop compared to AMD Fidelity FX Super Resolution in 1.0 versus 2.0 2.0 is supposed to have some big temporal upscaling boost and it's supposed to just be significantly better than the original now why do we care about this coming? Well because as we've discussed previously AMD Fidelity FX Super Resolution is actually coming in Nintendo Switch Sports Nintendo themselves are using this technology right now to help increase frame rates and resolution for Nintendo Switch Sports so if they're already using the technology obviously the release of 2.0 which is supposed to happen in quarter two of this year so sometime before the end of June should actually be something Nintendo could possibly implement now AMD FX Super Resolution is something that they use in particular with any hardware it doesn't have to be new it could be slightly older hardware which is why Switch can take advantage of it and it's basically a primarily an upscaling tool that obviously can help a little bit with frame rates typically it doesn't work as well as something like DLSS 2.0 from Nvidia which would involve actual hardware cores dedicated to this however this you know take with a grain of salt 2.0 of this AMD version is supposedly close to on par that's the claims anyways with DLSS 2.0 as a software based solution I'm very interested how this works from a resource perspective but hey Nintendo's already using 1.0's version 1.22 to be exact so hey why not end up using 2.0 as well moving forward this would be great obviously if this is as good as it touts because with you know other games coming out later this year like Xenoblade Chronicles 3 I think could really benefit from this Breath of the Wild 2 could benefit from this Pokemon Legends not Pokemon Legends Archies well that could benefit from it as well a Pokemon Violet and Scarlet obviously that could really benefit from this as well so I would like to see Nintendo more widely adapt this technology in to just kind of help with their aging hardware sort of keep up a little bit this isn't by the way going to be taking things like oh no because there's a 4K output on your dock we can now upscale these games the 4K on your TV yeah that's not what Nintendo's going to be doing here with this they could just make things look better take a 540p 720p make it look a lot better at 1080p with better frame rates so that's probably more what you're looking at here but still this is good news this is good for gamers and obviously good for Nintendo who's already been dabbling in this technology as it is now this doesn't preclude future switch systems from using DLSS instead of this I don't know if they can work together I don't know if it's possible with DLSS and AMD FX Super Resolution could actually work together on the same piece of hardware that's something that someone's going to experiment with at some point and find out hey can I use this and then use this too and I don't know I feel like that's going to be really difficult to make work but hey I'm not a software engineer at this moment so what do I know? Our last story actually deals with something that was teased yesterday by Direct Feed Games and that is that Nintendo and Sega have dropped three new Sega Genesis games today completely unannounced on the Nintendo Switch online service that would make four new games including F-Zero X for the N64 app yeah all these games were added today and here's the name of the games I haven't actually played any of these so I got to read this list Super Fantasy Zone, Alien Soldier and Light Crusader again these are three games I've never played so I don't know much about them but getting these additions to the Nintendo Switch online service is always great and just increases the value and I can officially tell you right now that I am now a Nintendo Switch online member again remember I canceled my membership and I also have the expansion pack and you might go, but Nate, you said I know what I said, bottom line is a good buddy of mine inviting me onto his family plan that already had the expansion pass so I would just be remiss to say, you know what? Why not? I still wanna play Mario Kart 8 Deluxe with you guys I wanna play that DLC with you guys why not just become a member and join the family plan for somebody who already paid for the next year anyways they were even nice and they didn't even ask me to spend any money so shout out to them for inviting me on and what's funny is I didn't know if this would work cause I never tried it but the family plan actually works across regions so we're in two different countries and the family plan just works so that's really, really cool and I actually downloaded the N64 app and loaded up some Majora's Mask today kinda gave me an inkling to wanna play it again but we're gonna back up on that I gotta finish up my triangle strategy play through at this moment but still this is really cool that they've added these three Genesis games and obviously Feather and the Cap again for Direct Feat Games I know a lot of people sometimes feel like that guy doesn't get anything right but he actually gets quite a few things right you just have to pay more attention to what he's saying alright folks, thank you so much for tuning in I am with Andrew Rufflejans from Nintendo Prime wearing a classic Nintendo Prime podcast t-shirt by the way you can get all of our merch this hat and everything links will be down in the description you want the hat in particular we gotta use the Streamlabs merch shop but I'm gonna link basically all my various merch shops if you would like any sort of the classic shirts or the newer search or the hype responsibly yet nobody has to buy anything oh and by the way, fun note Best Buy has partnered with us I actually announced this on Twitter for the rest of this year and again I don't know if this game's coming out this year but for the rest of this year if you use our affiliate link down in the description to pre-order Breath of the Wild 2 that's right baby, Breath of the Wild 2 you can pre-order right now at Best Buy if you use our link that will send 22% of your order right back here to the Nintendo Prime YouTube channel and that's just for the rest of 2022 so even if the game gets pushed and isn't out till 2023 if you pre-order it this year with that link by the way this only works for the United States that will kick back some money to the channel so you're already planning to spend that much money on it anyways, cool obviously if collector's edition stuff gets announced in the future gonna be hard to use affiliate links for those cause those are gonna be snatched up like that but still it's there for anyone who wants to do it and if people worry, hey if I do this you know Best Buy wants to charge me right away can I get a refund later if I happen to get a pre-order in for a collector's edition or a console edition or something later yes, actually you can and I don't actually lose my 22%, it's kinda weird but unfortunately with Best Buy you do have to go through customer service they don't offer an easy way to cancel pre-orders customer service will refund you of course so it is a little bit of an extra hassle to get refunds but I just wanted to put it out there that this is I thought was just a really cool partnership 22% kickback to the channel is an extremely high kickback rate so I mean how could I say no to that it just made sense by the way that doesn't mean that we won't ever link to Amazon or other places especially when collector's editions and stuff like that drop and just you know for sake of me just being completely transparent because I'm not an idiot if you walk into Walmart day one without a pre-order and buy it in person you will be able to get the game for $49.99 so I'm not sitting here pretending that my way of getting it is necessarily the best way to pre-order the game but if you don't have a Walmart around you or you're not comfortable going to Walmart and supporting that outlet you don't wanna walk in store or you're afraid it might be sold out because like they're selling it for $59.99 online Walmart does these are just in store it's been known for a while they knock 10 bucks off game prices in store to try to get people into the store and buying other stuff so that's just the Walmart way I guess but I'm not sitting here trying to pretend that this is the best deal in the world I'm just saying it does help support the channel if it's something you were planning to buy anyways like me personally I know I'm buying the game no matter what so to me it doesn't really matter when I pre-order it so I actually used my own affiliate link to already put my pre-order in at Best Buy and you can do that pre-order for in store pickup so you can like literally pick it up right away or to have it shipped to you sometimes what's neat about having it shipped to you is it can arrive a day early also sometimes it can arrive a day late kind of a crapshoot that's just the way online shipping goes all right folks that's it thank you so much for tuning in and I'll catch you in the next video


Everybody Matt here for late in sports car drip in one box of 2022-23 panini immaculate collections soccer. This is for Christian G Good luck Here you go, Chris Trinity Robman 75 and Leon Goretzka to 49. This is Jersey Otto 44 of 58 Jordan Pickford Modern Marks Otto 46 of 89 Antony Barak Modern Marks. This is Patch five of ten Pedri the standard. All right a couple cards to go here. Let's see a big hit. This is Jersey, that's jumbo Jersey seven of 49 Leroy. It's the same Sunday. I'm gonna go Sunday on the back Harolded signatures three of 25 Javier Mascherano You go Chris that'll do it for your box appreciate it. We'll get these right out to you


We've got a lot of different shells available to us on Linux. By far the standard Linux shell is the Bash shell. It is the default shell on almost all GNU slash Linux distributions. The user shell sometimes varies. I would say 90% of the time the default user shell on your Linux system is also Bash, but some distributions are starting to experiment with setting the user shell to more modern shells. ZSH is the default user shell I believe in Manjaro these days. And you're even seeing some distributions now set Fish as the default user shell. I'm pretty sure Garuda has Fish as its default shell out of the box. And to be honest, I think that is a great move because as far as a user shell, you want the system shell to be Bash because most system scripts are written in Bash. It's kind of the de facto scripting language on Linux. So you don't want to remove Bash as your default shell. But for your user shell, it really could be anything. And I think the best interactive shell on Linux is Fish. One of the things I love about the Fish shell is that it has, you know, a lot of the features, the standard features a lot of people want like good tab completion and history. And it's almost predictive sometimes as far as I'll start typing something. You guys often see this in my videos. I'll just start typing a command and the Fish shell will predict exactly what it thinks I'm looking for. And it's really nice. And because that history file, as long as you never delete that history file, Fish will remember your history from the beginning of time until now. It remembers everything you ever tried. And I think that's really powerful. But today I wanted to tell you guys a little bit about some features that probably many Fish users don't know about. I want to show you some of the built-in functions that the Fish shell has. And I also want to talk about some of the built-in key bindings specific to the Fish shell that many users don't know about. So let me switch over to my desktop and I've got a terminal open. And of course my default user shell is the Fish shell. So this is Fish. Let's talk about some of the built-in functions for Fish. Every shell typically will have some built-in commands to it. Bash, ZSH, Fish. In Fish though, to get the list of all the built-ins, you can type the command built-in space dash dash names. And that will list all the built-in functions for Fish. Built-in by the way, that function is actually a built-in function. If I hit enter, it just listed out all of the built-ins. Many of them are very similar to some of the bash built-ins, for example. So you've got things like and, and case, or echo, else, et cetera. A lot of these are exactly the same as they would be in Bash as far as the names are similar and the functions themselves are similar. But you do have some unique built-ins. For example, count. That is a rather unique built-in specific to the Fish shell. If I did count and I gave it a list because you have to feed it a list. Count, for example, and then dollar sign path. How many items are in the path for the shell? In this case, the path for the Fish shell. How many directories are part of the path? Well, let's get a count. There are 11 directories part of my Fish shell's path. Another really unique built-in is math because by default, especially in standard POSIX shells like the Bash shell, doing math operations is either impossible or it's rather clunky. Well, in Fish, you just do math and you can actually do simple arithmetic. For example, 2 plus 2 or 2 divided by 2 or 2 minus 3. It'll even do negative numbers. One thing with the math function is doing multiplication is a little weird because if I did math 2 times 3, for example, I'm going to get it error.  Well, this is also used for file globbing. So it's a wild card character. So what you would have to do is you would actually have to quote that. So the shell knows that we're not globbing, right? That we're actually using that as a multiplication. So now math 2 times 3 would actually work. You could also use x to x3 for multiplication. But again, it's a little weird if I just do 2x3 with no spaces. I get an error because it's going to think it's some kind of like hex code.  And now the multiplication will work with the x character. Another built-in that could be useful under certain circumstances is random. Random gives us a random number. If I do man, random. And this is specifically the random command for the fish shell, right? Because there are other random commands. Other shells will have a built-in random. But the fish shell has its own random. And you can see it takes a range of 0 to 32,767 and gives us a random number. So that is its range. If I run random again, you can see I get a different random number. That could be useful. Specifically, if you were doing something with fish scripting, you may want to do the random command maybe to generate a random number for something. Now, two of my favorite built-ins for the fish shell are previousD and nextD. And that's previous. It's actually preVD and then nextD. So think of this as previous directory, next directory. So let me cd, I'm going to cd into downloads. And from here, I'm going to cd into slash etsy slash dtos. And from here, I'm going to cd into slash user, share, sddm, themes. Now watch what happens when I do previousD. I go back to slash etsy slash dtos. PreviousD again gets me back into downloads. PreviousD again would take me back in home. Now, if I do nextD, you can imagine we're going to go back in the other direction. And that is really, really cool. So those are some of the most useful built-ins for the fish shell. At least some of the ones I found good use cases for. Let's talk about some of the built-in key bindings for the fish shell. And I'm not going to cover standard shell key bindings like the Emacs bindings or the VI bindings that every shell, Bash, ZSH, Fish, they all have a set of standard bindings. I'm talking about some of the key bindings specific for the fish shell because it has some unique two-fish bindings. And one of the cool things, it actually has PreviousD and NextD actually key-binded because you don't want to actually have to type a preVD every time you want to go to the previous directory and NextD every time you want to go to the next directory, you want to hit a key-binding for that. And it's already set to the Alt key plus left arrow for PreviousD, right arrow for NextD. And if I do Alt left arrow, you see, I just went to the previous directory, Alt left arrow, the previous directory, Alt left arrow, previous directory, there's not a previous one before that because I've only been in four directories. But if I do Alt right arrow, I go back in the other direction. And that is a really quick and very powerful way to navigate the directory structure in the shell. In fact, I would argue that the PreviousD and NextD built-ins and the fact that they're key-binded to Alt left and right, I think that is one of the biggest reasons why as an interactive shell, you really should explore the fish shell as an alternative to things like Bash. Now I'm going to CD back into my home directory. And if I do an LS in my home directory, this is LS, this is actually ALIEST. My LS command is actually the EXA command, EXA. EXA is a LS alternative written in Rust, and it's got some flags and options, gives me some pretty output. So my LS, it's not really LS, but the cool thing about the fish shell is one of the built-in key bindings for the fish shell. If you do Alt L for LS, it will actually run your LS command. So if I do Alt L, it runs the LS command. Now that was hard to see because I already had run the LS command. So let me clear the screen. I'm going to do Alt L. It runs LS. And it runs my LS as it's ALIEST, right? It doesn't run the standard LS command. So if you have it ALIEST as something, it will respect your ALIEST. Now let me clear the screen. Now one thing people often do in the shell is when you're reading files, maybe you're catting out some text to the terminal. It's got a lot of output. Many people want to feed that through a pager. They want to pipe it into typically LS, right? So imagine I cat my .bashrc here. My bashrc is a very lengthy document. There's no way I could have, you know, read that. Maybe I wanted to pipe that into LS. Well, if I up arrow and get cat.bashrc, if I hit Alt P for pager, watch what happens. Alt P, it tags on the pipe symbol and the LS command to whatever I had just entered. And now I'm actually using LS. And now I can actually use the LS pager to actually scroll through this and actually read it instead of if I just fed it through cat, right? Then I'm starting at the bottom and I have to work my way backwards. So many people in the shell, again, often are trying to tag on LS to some output. And with this, with the fish shell, all you need to do is just hit Alt P and whatever command you were entering, it's going to tag on pipe symbol, LS. And I know some people are going to wonder what happens when you just do Alt P without actually entering something? Well, let's try Alt P. You can see it will actually default to the previous command that you had entered if you didn't enter one. But if I was entering something, for example, maybe I want to cat my ZSH history file. I don't know if I do Alt P. Again, it would just tag on the list command. I don't know what's in my ZSH history, so I'm not going to actually cat that out. Another interesting key binding, let me clear the screen, is say you're typing a command. For example, my LS command here. Maybe I don't know what that command actually does. Maybe I want a description of it. Well, fish has a key binding, Alt W. You can think of W as what is it? Alt W. And it will actually tell me what LS is. Now, if it's an alias, it's actually going to spit out what the alias is. You can see my LS command is actually alias to EXA with these various flags here. If I type EMAX and I do Alt W, it will actually tell me what the EMAX command is. In this case, I have EMAX alias to EMAX client and some flags. But let's give it a command that doesn't have anything. It's not aliased anything. For example, the H-top program. It's just H-top. It's not aliased anything. Alt W, it just tells me the description for the H-top program. Probably it pulls that from the man page is what I'm guessing. You see H-top. It's an interactive process viewer. Now, one thing you often want to do in the shell is you want to open up an editor. And oftentimes if you're working in a terminal, especially if you're using a command line editor like Vim, for example, it's no big deal to just type Vim and then the path to whatever file you want to take a look at. But my editor is not a command line editor because I use EMAX. And EMAX is, of course, a GUI program. It's a graphical program. So what happens if you have your editor and by editor I'm talking about dollar sign, editor, all caps, right? You have to have this set with your shell. If I do Echo Editor here, you can see I have that environment variable set to the EMAX client. Again, it's a GUI editor. And if I just want to launch that, I could type dollar sign editor, you know, in the shell and hit enter. Well, actually, that doesn't work in the fish shell. In the bashell, I'm pretty sure that would have worked. But fish has a key binding set to where if you do Alt-E for editor, watch what happens. Alt-E. Waiting for EMAX. And it just launched EMAX, right? The terminal is still there. I'm full screen the terminal is actually behind the EMAX window. But we launched EMAX, right? It's just an empty frame here inside EMAX. Let me colon Q to quit out of doom EMAX, right? Once again, Alt-E and EMAX comes up colon Q. One last key binding that is extremely useful, maybe the most useful out of the bunch other than the previous D and next D. I think a lot of people are going to use those for moving around the directory structure. But how many times are you looking at a file that's a protected file, meaning it's right protected. So you needed sudo privileges to do anything. But, you know, for whatever reason, you forgot to open it with sudo. For example, let me open with vim slash etsy slash pass wd. Now, maybe I wanted to edit this file for some reason, but I forgot sudo, right? Well, what I could do is I could go back to the command line. If I do Alt-S for sudo, watch what happens. We run the last command with sudo prepended to the front, right? And now it would ask me for my sudo password. Of course, I don't really want to edit that file. So let me actually just cancel that. Control-C to cancel. So that was just a few of the built-in functions and some of the built-in key bindings for the fish shell. It's the reason why I love fish as an interactive shell. I really think it should be the default user shell on every Linux system. I think all of you guys actually should explore the fish shell. And I know people in the comments are going to complain. It's not POSIX compliant. You don't have to write your scripts in fish, right? Everybody on Linux writes their scripts using Bash. I script using Bash, but that doesn't mean I have to use Bash as my interactive shell, right? I write my scripts in Bash. When I open a terminal, I want the fish shell, right? I want nextD and previousD and all of those key bindings. You know, because I don't need my interactive shell to be POSIX compliant. I'm not scripting when I'm just using the shell interactively, right? So interactive shells can be more modern. They can push the boundaries a little bit. And for that, that's really the reason these days I prefer fish over every other shell on Linux. Now, before I go, I need to thank a few special people. I need to thank the producers of this episode, Dustin Gabe James-Mant, Maxim M. Michael Mitchell, Paul West-Why-You-Bald, Alain Armour-Dragon, Chuck Commander-In-Reed, Dylan Greg-Marsh, Erion Alexander-Paul, Peace Arch and Fedora, Polytech Realities, Realize Red Private, Stephen Toulouse, Devler, and Willie. These guys, they're my highest-tiered patrons. Over on Patreon, they are the producers of this episode that you just watched. The show is also brought to you by each and every one of these fine ladies and gentlemen. All these names you're seeing on the screen right now. These are all my supporters over on Patreon because I don't have any corporate sponsors. I'm sponsored by you guys, the community. If you like my work, I want to see more videos about Linux and free and open-source software, like the FishShield, which is GPL'd. Subscribe to DistroTube over on Patreon. Peace. And unlike ZSH, you don't need plug-ins. This is all built into Fish.


l principles of the bill. Many thanks. I now call Meg Matheson to wind up with debate. Minister, you have until five o'clock, please. I begin by thanking everyone for their contribution during the course of the debate. I think that there have been a range of very good points raised. I do welcome the fact that there is broad cross-party support for the Food Standards Scotland being established and for this piece of legislation. I think that Duncan McNeill and his contribution set out in a very fair way the broad areas that the legislation will provide for. He also rightly highlighted the various views that there are around the creation of Food Standards Scotland. I recognise that not everyone in the sector believes that it is the right thing to do for their particular purpose, although the vast majority believe that it is the right thing to do. However, as I am sure all in the chamber recognise, we have arrived at this particular point not because of a failing in the part of the FSE, but because of changes that have taken place elsewhere. The expert group—not just Professor Jim Scootermore, but other representatives on this expert group who came back with the recommendation is how we need to respond to the matter. We have taken that on board to bring forward this piece of legislation. We have arrived here with very good reason. It is incumbent on us to make sure that we take that forward in a way that is appropriate, and we will make sure that we get the right type of provision around food safety in Scotland as we require. Duncan McNeill also made a number of very important points about where the FSS needs to sit in with the rest of the regulatory bodies and functions that are already out there. It is partnership with the FSA in the rest of the UK with other representative organisations in the rest of Europe and beyond are absolutely critical. Alongside that, there are local authorities, health boards, producers, retailers and the role that they all have in food safety and food production in Scotland. The FSS has an important role to play and it will need to make sure that it fulfills that role effectively and in an appropriate way. I hope that members are reassured by the memorandum of understanding that we are taking forward with the rest of the UK Government around a range of different issues, which I believe will be a very productive way for us to continue what I think is already from the process that we have been going through to establish food standards. Scotland has been a very cordial and responsive way in which we have engaged with one another in taking this whole area of policy forward. I want to turn to a point that I thought was raised by Richard Simpson. A number of members have raised it and that was about the whole issue about dietary improvement and how the FSS can assist in co-ordinating this whole approach to tackling dietary issues and also improving nutrition. We have put it on the bill to give it that very clear strategic role that no other body in the country has in order to help to drive this agenda forward. Richard Simpson made a very good point about the need to tackle issues around salt, sugar and fat in our diet. The FSA has taken forward a range of work over a number of years now, where it has made progress. For example, it is fair to say that a lot of our big retailers, supermarket retailers, including ASDA and Tesco, have reformulated their own branded products to reduce things like salt and fat and sugar in their products. The area where we have made less progress has been the branded products. I think that we are getting to the point where we have to make sure that retailers recognise that they are part of the solution in dealing with their nutritional challenges and the dietary problems that we have in Scotland and in tackling obesity. It is a societal issue and our retailers and our food producers have to play their part in helping to overcome this issue. I believe that the FSS has an important role to help us in making sure that that happens effectively here in Scotland. I also want to turn to a point that Richard Simpson and several others raised. That was about the wider potential remit of the FSS. I was very clear at the time when we decided to take forward this piece of legislation that I wanted to protect the reputational integrity that we have here in Scotland for good food products. I wanted to make sure that we protected the very first class work that is presently taken forward by our FSA here in Scotland to make sure that there is no loss of public confidence as we move to a new public body. That is why we have taken an approach that is a cautious approach. That is to make sure that we get the things that the FSA does just now right in the new body so that there is no question about its role and people having confidence in it. However, we have created a footprint in the legislation that allows us to expand it and develop it as we move forward. Rightly so, if we do that, we then have to look at the resource implications that some members have made reference to. Annette Millan, in her contribution, made reference to obesity and nutrition, and she touched on the issue of funding. It is important to recognise that we already fund the Scottish proportion of FSA's activity. We fund it at a Scottish level, and we also pay a central amount to the UK body for some of the centralised roles that it undertakes. The budget for the FSA that goes to Scotland just now is the budget that is already part of the Scottish Government's health budget, which will go to the FSS. The issue that we are still in negotiation with is around some of those centralised functions that we already pay for and moving them into the Scottish organisation. I am confident that we will get to an agreement on that. However, I want to give members an assurance that the FSS will have the budgets that are required in order to undertake the functions that are presently undertaken by the FSA. If we move forward and choose to change that, the Government at that time, whichever Government it may be, will have to consider us to what those resource implications might be. Eileen McLeod and her contribution highlighted the whole issue of research and the importance of research within the food and animal health sector. As a number of members have rightly pointed out, it is important that the FSS is able to participate in research programmes at a UK level, but it is also important that we have access to that expert advice as we intend and we have agreed with the FSA. Equally, we also provide access to the expert advice that comes from Scotland, as has already been highlighted by Lewis MacDonald in his contribution. The expert advice that we have here in Scotland is about nutrition and dietary issues, the expert advice that we provide around shellfish, in particular, and in E. coli. Those are areas in which Scotland already provides that level of expert advice. It is our intention for that to continue to take place. Equally, there is also to be able to participate in research programmes on a European level, where there is a range of work that we can contribute to as well. I turn to the issue that Claire Baker raised as well around the issue of the employee director, which I think is a very good and a very fair point and one that we are very sympathetic to on the basis that our own track record around our health bodies at the present time have an employee director appointed to the board by ministers. That is an issue that we will have to—the reason we cannot make a decision on it just now is because we do not have a chief executive and a chair and a board in place. However, what I want to reassure the member is that, given our track record on our present health-led bodies, that is an area in which I would like to see that also being reflected in the FSS in going forward, because I think that it is a very valuable role that the employee director can have in a national organisation. The point that he also raised around EROs are environmental health officers as well. I think that I should say that EHOs are not EROs—that is what happens when you get caught up in elections. I think that that is also a very valid point. One of the things that I think is that the administrative fixed penalty regime will help to relieve some of the burden that is faced by some of our EHOs, because very often, when they want to take issues forward, it is a report to the Procurator Fiscal. There are reports that then have to be then further submitted and then I will wait for it to go to court. Sometimes it can actually take more than a year or two before it even finds itself in the court. A fixed penalty scheme gives us a way in which we can release some of that burden, which is why some of our EHOs in Scotland have very much welcomed that, because it allows them to be much more responsive and it allows them to then move on to other issues. However, one of the other things that we have to look at is the testing that is undertaken by our EHOs. There are different models that we can use with the FSS in taking that forward. We have more centrally controlled by the FSS working with local authorities and funding local authorities for the purpose of undertaking that testing, but we also need to make sure that we have a good collection of that data on astral levels. I think that, in moving forward, there are a variety of different options that we can look at pursuing that can help to address some of those issues as well. On the issue of fixed penalties, which a number of members have raised on an appeals mechanism, I think that we have to be careful that we do not get into a situation where there is an expectation that every fixed penalty notice can be appealed on the basis that it could potentially just draw the whole system to a halt by repeated appeals. If you consider the present time, if you are stopped by the police and you are offered a fixed penalty notice for a driving offence, you have the right to refuse that. If you choose to refuse it, a report goes to the Procurator Fiscal and then eventually the matter will go into court and you can then argue your case there. There is an element within this process that if you are issued with a fixed penalty, you disagree with the EHO in offering that fixed penalty, you have the choice then to refuse it and for the matter then to go to Procurator Fiscal and for you to challenge it in court as well. I do think that we need to have a transparency and we need to make sure that there is a consistency of approach in how those measures are applied from local authority to local authority, but I do think—and I would strike a note of caution in calling for an overall process of appeal. I have unfortunate not been able to go through all of the members who have made a whole range of very valuable points which we will consider as we move forward with the legislation, but I want to finish on that point. That is that our staff in the FSA in Aberdeen do an absolutely fantastic job for us and I am very proud of the job that they have done over a number of years for us. This has also been a difficult time for them in the uncertainty of moving to a new body and I am sure that all members will want to send out a clear note from this Parliament that we value the work that they undertake and as we move towards the Food Standards Scotland, we will make sure that their staff are allowed to continue to undertake that valuable work here in Scotland. Thank you, minister. That concludes the debate on stage 1 of the Food Scotland Bill. The next item of business is consideration of motion number 10555 in the name of John Swinney on the financial resolution for the Food Scotland Bill. I call Michael Matheson to move the motion. This motion will put decision time to which we now come. There are two questions to be put as a result of today's business. The first question is at motion number 11048, in the name of Michael Matheson, on the Food Scotland Bill, be agreed to. Are we all agreed? The motion is therefore agreed to. The next question is at motion number 10555, in the name of John Swinney on the financial resolution for the Food Scotland Bill, be agreed to. Are we all agreed? The motion is therefore agreed to. That concludes decision time and I now close this meeting.