Today I'm going to be taking a look at the recently released Fedora 37. Fedora is one of the more popular desktop Linux distributions and this is the long-awaited release of Fedora 37. And I say it's long-awaited is because the release date for Fedora 37 got pushed back a little bit. And for those of you that are kind of new to Linux and how these releases work, you really have two camps of Linux distributions. You have those groups of Linux distributions that typically they set a release date and they always meet it. They always release on the date. They say no matter what they're releasing on that date that they set six months ago, a year ago, whatever it happens to be. You have another group of Linux distributions that they set release dates, but those release dates are tentative, if you will, right? They're more suggestions. That's not really a hard, fast release date, right? It's we may release on that date, but we probably won't. And Fedora is in that second camp, right? Fedora almost never releases on the actual release date. They always push back their releases. So this is not unusual for Fedora, but I've downloaded the ISO for Fedora Workstation 37 and I'm going to run through a quick installation and first look inside a virtual machine. So I downloaded the ISO for Fedora Workstation 37. The ISO is just under two gigs in size. And I'm going to go ahead and let's go ahead and boot directly into the live environment. I'm going to run through an installation. All right. And we are in our live GNOME desktop here. Let's go ahead and get into the desktop here. And we have the option here for the installer. We can try Fedora, meaning close out the installer and just play around in the live GNOME desktop, right? Or we can install to hard drive, actually run through a proper installation. And I'm going to go ahead and run through the installer. So the first screen of the installer is asking about the language. And this is the language to be used during the installation process for the installer. The default language is English. That's fine for me, English US. That is correct for me. So I don't need to change anything. Let me move my head. I'm going to click continue. And then we have keyboard time and date installation destination. Now the keyboard is defaulting to English US. So I don't need to change that. And it has correctly chosen the central time zone in the US for me. You can see America slash Chicago. I'm not in Chicago, but Chicago is in the central time zone in the US. So I don't need to change that. But we do need to select a drive to actually install Fedora to.  I always miss this up every time I've ever installed Fedora ever. And I'm talking about going back more than a decade. I missed this part up because there's one drive in this virtual machine, right? And it has a checkbox here, meaning we've already selected the drive to actually install Fedora to. I don't actually need to select it. But I always think I have to select it because when I click it, the box turns blue.  But no, I actually unselected the drive. It was already selected before, you know, when it had the checkbox. If I click it again, I get the checkbox, although it still stays highlighted blue. That's very confusing because a lot of times I uncheck the drive and then click done. And of course, we're not going to be able to install Fedora until we actually choose a disk to install to all of this. Do I want to encrypt? No, I'm not going to encrypt this virtual machine installation. I'm just going to click done. And now the only thing I need to do from this point on is click the button here begin installation. And this portion of the installation will take a few minutes. I'm going to pause the recording. I'll be back once this section of the installer has completed. And that portion of the installation has completed that took three or four minutes. Let me move my head here. And to complete the installation, we need to go ahead and reboot the machine, click the button that says finish installation, and it should automatically reboot for us. So that's what I'm going to do right now. And actually Fedora's installer does not reboot automatically when you click the finish installation button. That's interesting because pretty much every other installer on Linux does that for you the ubiquity installer that Ubuntu and Ubuntu based distributions typically use automatically reboots for you. The Calamari installer that so many Linux distributions use automatically reboots the machine for you. I don't know. Fedora, I will say this about the installer. And once we actually get into taking a look at Fedora Fedora, even though it's a pretty popular Linux distribution, it's not that popular as far as desktop Linux users partly because it is really not the most user friendly Linux distribution out there. It does make some strange choices. And in some ways it can be kind of frustrating to use if you're used to the way other Linux distributions operate. So let me actually go and actually reboot the machine through the menu here. If I go to the session and go to restart and the machine has rebooted and there's still some setup here. You see the setup program, the installation is really just installing the base system. But you will notice during that installation process, we never created a user or a password or any of that stuff, right? So there's still some work to be done. So start setup. First thing privacy, do we want location services turned on? It's turned on automatically, but you could turn it off if you wanted to automatic problem reporting. So crash reports, do you want to automatically send them by default? It's turned on, you could turn that off if you wanted to. Now the crash reporting that Linux distributions ask about, I typically leave that turned on because I do want to help these distributions get better. So if sending those automatic crash reports helps, hey, why not the location services? Honestly, I'd probably turn that off for privacy reasons, but that's just me. In this case, I'll leave the default. So now the next screen is interesting enable third party repositories. So this was actually something I had planned on doing potentially at the terminal at the command line. I'm glad I don't have to do that. Because once again, Fedora doesn't enable non free repositories by default. There is a repository of non free software in the RPM fusion repository that most Fedora users are going to enable anyway. So you definitely want to enable the RPM fusion repository, also flat pack, although it's installed out of the box on Fedora, meaning that flat packs, you can install flat packs. There's it's not connected to a repository of software such as flat hub. So you have to enable the flat up repository if you want to install from flat up. So let's enable these third party repositories. Now clicking the button to enable those third party repositories, it doesn't tell me what repositories it enabled. It doesn't tell me if it enabled RPM fusion. I don't know. It doesn't tell me if it enabled flat hub. I don't know. So that again, I wish it had a little more information here to actually let me know what what it enabled there. I'm just going to click next connect our online accounts. I'm not going to connect any online accounts. So Google accounts next cloud, Microsoft accounts, all of that stuff. So I'll skip this section. Now we need to create our username and password. So my username is going to be DT and then I'm going to click next. Now let's create a strong and complicated password for the DT user. So confirm our strong and complicated password and then click next. And it says all done start using Fedora Linux. All right, welcome to GNOME three. Do you want to take a tour? No, thanks. I've seen GNOME three before. First thing I'm going to do is hit the super key to get in the menu system. And I'm going to look for the displays program that the display settings because I need to change the resolution. So screen resolution here is a little walkie. Let me change to a proper 1920 by 1080. Keep the changes. And now this virtual machine should forever remember that I always want a 1920 by 1080 resolution. So the first thing I will say about Fedora is typically with Fedora, you get a very vanilla, very plain GNOME desktop experience, which typically in years past has been a bad experience. But with the recently released versions of GNOME, especially the GNOME 40 series, GNOME has really become a pretty nice desktop environment out of the box. I mean, with really no extensions, you know, this is usable. So I actually quite like especially this last release GNOME 43 is really good. Let's take a look at what is installed out of the box here in Fedora 37. So you're going to have your standard GNOME suite of applications such as contacts, weather, clocks, maps, GNOME photos, GNOME videos, yada, yada, yada. One interesting thing to note is text editor. So this was a recent change with the GNOME suite of applications. As far as their plain text editor is no longer gEdit. The plain text editor is now text editor. And by text editor, I mean, that's the actual name of the program. Now it's GNOME dash text dash editor. Like if you're launching it from like a run launcher like D menu or Rofi or if you're launching it from the command line, GNOME dash text dash editor. I don't know gEdit was a fine name. I don't know why we needed to change that. That said, the GNOME text editor is a pretty neat program. That's not my favorite text editor, but for a plain text editor, it's definitely usable. We do have Libre Office installed. So we have Libre Office Impress installed. We have Libre Office Rider and Libre Office Calc. Let me open the writer program. So this would be our word processor. And if I go to help and about Libre Office, let's see what version we are on. Looks like we are on version <IP_ADDRESS>. I actually was trying to drag this window and I ended up dragging way too much. All right. So that is Libre Office Rider. And getting back in the menu here, there's really not much else installed. Again, just your standard GNOME applications. We have this Utilities subcategory here where we have our image viewer and our PDF viewer and things like that. But again, not a lot installed out of the box. Now, one thing about GNOME that I have always found a little confusing with these recent versions, not all of the installed applications are here in this menu, because anything that is pinned in the dock does not appear up here. So Firefox is our browser. It does not appear here, because when you pin it to the dock, it disappears from this section of the menu. So that's one thing to keep in mind. Our file manager is also down here. Obviously that's going to be the Nautilus file manager from GNOME. Now, this release of Fedora came out a couple of days ago. There could be some updates. I wonder if Control Alt T would bring up a terminal. No, I didn't think it would. Let me do super and just start typing terminal. Let's open the GNOME terminal. Let me zoom in. Now, typically I would update the system. I would do something like well, not sudo apt. I would do sudo DNF update to update the system. And typically when I do this on a fresh install of Fedora, it always takes a long time. I always complain about DNF being kind of slow as far as package management, as far as the download speeds, and partly is the default settings for DNF are just bad. You can actually speed up DNF. I don't know why they don't speed it up for you automatically out of the box, but you can actually edit a config by sudo vim of the config I believe is slash etsy slash dnf slash dnf.conf. Yes. All right. And then give it our sudo password. Vim is not installed. Well, we can take care of that. So let's do sudo dnf install VIM just because I don't want to use the GNOME text editor. I mean, we could use it, but I'm eventually going to need VIM on the system anyway. So let's go ahead and install VIM. VIM is not a very big program, but you can see this is taking a little bit of time, right? We're having to wait a while. Sinking some repositories. Again, it's just a little slow, but once we get VIM installed, we're going to edit this dnf.conf and see if we can speed things up a little bit. And you can see when it's syncing the repositories, we did enable RPM fusion. So that's good. So that gives us a lot of non free software, especially proprietary drivers. So if you're like an NVIDIA user, you really need RPM fusion enabled. So that's good that that was enabled. Now it's telling us the download size is this. Okay, sure. And this is just really slow. It probably took a minute and a half to install VIM. And typically VIM installs in like five seconds. I don't know with the Hapt package manager or with Pacman, you know, other package management systems online. So that's just really, really, really slow. I'm going to up arrow and I'm going to sue VIM slash at C slash dnf slash dnf.conf. And what I was looking for is I was looking for a setting here for max parallel downloads and the default dnf.conf does not even have it even like as a comment. This is weird.  But what you want to do is go down and at the end here add max underscore parallel underscore downloads equals. And then you want that to equal any value. I think you can go from any value of like three to 20, you know, but I think a good number of parallel downloads is something probably five to 10 is what I would do. Let's just use five for max parallel downloads here. And then I'm going to escape and colon wq to write and quit. Actually, I didn't need to write and quit. There was one other thing I wanted to add to the dnf.conf. So one other thing is fastest mirror. That is another setting that almost every Fedora user is going to eventually add to this dnf.conf because you're going to get tired of the slow mirrors because again, that's part of the problem is these mirrors that we're trying to grab software from or slow fastest mirror. All one word equals true with a capital T escape colon wq to write and quit. And now what I'm going to do is I'm going to update the system. I'm going to do a sudo dnf update and see if the update is a little faster. Yeah, that says it's this download size. Okay, some three hundred and fifty five pages. So it already knows the packages that need to be updated. And let's see if these download speeds actually are good. Yeah, you can tell this is moving along much more quickly than what it was doing with that vim installation earlier. Still three hundred and sixty one packages. It'll take a few minutes. I'm going to pause the recording. I'll be back once the system update has completed. And those three hundred and sixty one packages updated just fine. There was a kernel update. So typically you'd want to reboot the computer, but I'm going to or go that for now because I want to do a U name dash R before I reboot just to see what kernel we were on before we updated because we're still using the old kernel right until I reboot we're on six dot o dot seven. So that's what it shipped with. But you can see already they have moved on to six dot o dot eight. I also want to do a dnf list installed. So let's get a list of all the installed packages. Of course, it spits it out each package on its own separate line. So to get an accurate count, all we need to do is take that output of dnf list installed and pipe it into WC the word count program space dash L the L flag is a line count rather than a word count. So how many lines are in that output one thousand seven hundred ninety three. So that's how many packages are installed out of the box on Fedora workstation thirty seven minus a few packages that I installed personally such as Vim one other program I might install if I was a GNOME user. Typically, you're going to want to install GNOME dash tweak dash tool. So the GNOME tweak tool is just a nice settings manager. What it does, it allows you to change fonts and themes and extensions and things like that. So it's just a nice program that really honestly probably should just be a part of the default GNOME suite of applications. To be honest, I think pretty much every GNOME user probably installs GNOME tweaks. And now that we've done that, I'm going to go ahead and close out of the terminal. I want to launch the graphical software center. So let me search for software. We know RPM Fusion that repository of non free software it got enabled. I wonder if Flat Pack got enabled when I click the enabled third party repository button. So let me search for something that I know is proprietary software and it would not be in the standard repository. Right. So what I need to do is I'm going to search for Discord. I don't know if you guys can see that. This says software needs to be restarted to use these new plugins. Okay. Well, how do I get? That is weird. How do I get rid of that message? Okay. Just restart the. That was weird. I don't know why I did that the first time. But if I search for Discord, which I know is available on FlatHub, right? Discord. Yeah, nothing is returned. So I wonder if I go into software repositories. Is there a nice graphical way where I can just tick on FlatHub or do I have to do this at the command line? I mean, I don't mind opening a terminal and adding something at the command line, but it'd be nice if they didn't make especially newer to Linux users do this. So we have the RPM fusion stuff enabled. We have this firmware update. Now, this is interesting because the firmware update repository of software, some people, their equipment will have available updates for the firmware on their hardware. So that's something that typically you want to make sure you have enabled even if you end up don't need it because some people won't need it for their hardware. But typically you want to have that enabled just in case looks like Google Chrome repository to get the Chrome browser is enabled if you need that. And for Dora FlatHub, it does look like FlatHub is turned on. But it didn't, it didn't find Discord. Maybe maybe I need to search for a different program. Let me search for something else I know that is available on FlatHub as a flatback OBS. OBS is free software, though it should be in the standard repositories. Oddly enough, even OBS and the standard repositories doesn't come up. Yeah, I don't know. I'm not crazy about this. This graphical software center. Let me see zoom is proprietary software with what I find zoom up problem is it's trying to give me hints. And then I guess I have to hit enter to I don't know, because discord discord still not there even when I hit enter. But zoom was maybe that maybe discord is not available on FlatHub. That could be the case. But zoom apparently is unless it's in the standard repositories. No, it's going to install zoom as a flatback from FlatHub. So FlatHub is enabled. I just need to search for something that's actually there on FlatHub because apparently discord isn't. I really like the default fedora wallpaper here. Let me move my head. You can actually see it is branded with the fedora logo here at the bottom. Let me go ahead and right click on the desktop. Let's change desktop background. Let's see what other wallpapers are available. So we should have the standard GNOME 43 wallpaper pack. And one thing about GNOME you have the default theme settings, which is a mixture of light and dark theme. So you're going to have your light windows with the dark panel at the top of the default dark GNOME shell theme. I like dark dark where everything is dark. So I'm going to choose a proper dark theme. And then we need to choose a wallpaper to go with the dark theme. And this is I believe the standard like the default or GNOME 43 is this blue and purple. So what the blue would be blue would be the wallpaper for the light theme, right? If I go to the dark theme, the purple wallpaper. So that's the split wallpapers here. So if you change between a light theme and a dark theme, you get a different wallpaper because typically if you have a light wallpaper, it looks best against a dark theme. If you have a dark wallpaper, it looks best against a light theme. And it looks like other than the standard GNOME wallpaper pack. I've seen all of these before. There's really nothing, nothing to see here other than again, the the artwork here that came with Fedora that so the light wallpaper was the default. I go to the dark theme, you have a darker version of this wallpaper. And I actually like that. Yeah, I think this is a very attractive, very sexy GNOME desktop. Now typically for my taste, I'm going to install probably four or five GNOME extensions to get me the standard like dash to dock or dash to panel because I like having a normal kind of panel with a normal kind of start menu. I'm not a big fan of the GNOME workflow out of the box, but I can use it. I did a video actually just a couple of weeks back of some of my favorite GNOME extensions that I like to install if I have to live in GNOME. So guys, check out that video if you're a GNOME user. One thing I should check out before I go is I should open a terminal and we should check out system resource usage. So let me fire up Htop. Htop is not installed. So let's do a sudo dnf install Htop. And yes, actually install it. I really hate the confirmation about installing a program like if I do a sudo dnf install Htop, you don't have to ask me after that. Do you really want to install it? Well, I wouldn't have typed sudo dnf install Htop if I didn't really want to install it. Again, strange choices for Fedor. There's a lot of directions they go that I find a little odd. But system resource usage, right now I'm using 1.8 gigs of RAM out of the 6 gigs of RAM. I gave this virtual machine. The GNOME desktop has never been slim. It's never been lightweight. It's always been kind of a hog, especially a RAM hog and 1.8 gigs of 6 gigs of RAM. That's that's insanely high. But it is what it is. I don't want to throw too much shade on GNOME. I know a lot of people really love this desktop environment. I've got to say it has grown on me a little bit here in the last year or two. Overall, I think Fedora 37 is a solid release. I think those of you that are Fedora fans and you love Fedora, you're going to be just ecstatic about this release of Fedora, mainly because of GNOME 43. Now who is Fedora for as far as a Linux desktop user? Who typically uses Fedora? Because that's not, again, that popular amongst the, you know, standard desktop Linux crowd, right? Most of the Linux community, they typically gravitate toward Debian-based systems or Arch Linux-based systems here in recent years, as far as their desktop computing. You know, Fedora is a Red Hat project. Well, technically Fedora is a community distribution, but its main sponsor is Red Hat. Red Hat steers development of Fedora. Fedora and Red Hat, they're kind of like sister distributions. Actually, Fedora is the upstream of Red Hat. So there's a lot of Red Hat stuff in Fedora and vice versa. And because of that, I think a lot of the people that love Fedora, typically people that work with servers, a server admins, IT people, people that work with Red Hat Linux on a professional level, they will typically install Fedora on their personal machines just to be in that Red Hat ecosystem. So I think that is a definite use case. Another good use case for installing Fedora is if you want something that has a little bit more up-to-date software, Fedora, even though it's not a rolling release, it is a little more bleeding edge. So this latest release of Fedora has all the latest and greatest packages and kernels and browsers and everything. Everything's going to be on the absolute latest version. So it's a little more bleeding edge, but it's not so bleeding edge. It's not rolling. It's not arch, right? It's not gen2. It's not like that. So if you want some kind of balance between rock solid stable, old and crusty like Debian, right? But you don't want to go to the extreme of arch Linux. You want something in the middle. I think Fedora is the sweet spot. It's the middle ground. I do want to congratulate everybody that worked on this release of Fedora. Job well done. Before I go, I need to thank the producers of this episode. I need to thank Gabe James, Matt Maxim, and Mitchell Paul West. Why you bald homie, Alex, Armoredragon, Chuck Commander Angry, Diokai George, Lee Marsdrom, Nate Erion, Alexander Paul, Peacewatch and Fedora Polytech, Realities 4 Less, Red Prophet Roland, Steven Tools Devler, and Willie These Guys. They're my high-steered patrons over on Patreon. Without these guys, this episode you just watch would not have been possible. 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 want more videos about Linux and free and open source, subscribe to DistroTube over on Patreon. All right, guys, peace. The LSH top really should be default applications. I need to follow a bug report.


and welcome to the show it's me JP and this is JP's product pick of the week so before I get started what I want to do is send you to the page where you can pick up this product this week that's the URL for it right there that's the QR code if you want to point your camera out there and land on the page and what you're gonna see I know this gives it away a little bit or a lot but what you're gonna see if you head to that product page is the product pick of the week and it is on discount just during the live stream only so if you head over there you can pick up one two three five ten of these at a super 50% off discount price but I think I've said too much already so let's back it up a moment and ask lady Ada to tell us all about this product pick take it away lady Ada this breakout lets you plug in a cherry MX compatible switch like you see here this is a Kale box switch which is cherry MX compatible you plug it in to the breakout board and there's on the bottom you can see on this photo there's a socket and so the switch doesn't get soldered in it actually kind of press fit plugs in there was also on the bottom you see that white square thing that's a neopixel and there's also a diode and the diode is what lets you create key matrices with this thing and the neopixel you see here there's this kind of like you know there's the two sockets on the left the center is the the mounting post on the right there's actually a little slot in the keys and the key itself is meant for like having an LED miss the soldered in perhaps but you can also just have a reverse amount neopixel shine through and then you can kind of backlit the LED with RGB colors so you have a QDPI board you know it's just using Arduino or you can use circuit Python whatever and these are the keys and I'm just gonna remove them to show you that the key itself plugs into the socket so this is the key and it's got these two connectors and that those when this key is pressed those connect together and then there's the mounting post where to keep it mechanically stable so you can plug it in and then you know it's pretty stable I would say look you want to have a glued or taped or something to keep it from coming apart because you can pull it off and here's another one so you have two of them connected together and then on each side you have multiple pinouts there's power and ground here these are for the neopixel and then this white wire you see you know goes in here and then chains over to this one that's the neopixel data line so just like neopixels you chain them together this has neopixel data going through and then you have two pins for the switch the top and the bottom that and in the cathode of the switch again there's a this diode in the middle so you can make key matrices if you're not doing key matrices you can just ignore that died there to avoid key ghosting if you're making a complicated matrix but basically you have one pin for every switch and then for this demo when you press the key the LED turns off so you know you can just use it as a switch and then control the neopixel separately so there you know the neopixel is not connected to the switch at all they're totally separate you can have the neopixel all the time off all the time you don't have to power if you don't want to it's just kind of a bonus extra it shines underneath here's a demo of the opposite when you press the button the new pixel shines through so basically a breadboard friendly way of connecting a mechanical key that is cherry MX compatible to your breadboard all right I'm convinced in fact I'm gonna run over to my mystery cabinet of wonders and grab one so that we can have a look at it and do a little bit of a demo I'll be right back yes there it is my product pick of the week this week is the neokey socket breakout for mechanical key switches it has a neopixel built into it so that can underlight your keys it has sockets so that you can push your mechanical key switch into it without soldering and then you can try different switches out whenever you want and it also has a diode built onto there to do diode matrices and it has pins for soldering in headers so that you can plug it into a breadboard for prototyping it is perfect for prototyping key switch arrangements in fact let's have a look at the key switch and breakout itself and then a little bit of a demo that I put together on a big old breadboard camera view here of it so you can see there is a little set of sockets that's actually what one looks like bear on its own there's the kind of key cherry MX compatible key that'll plug into there you can see our little neopixel pointing up and underneath and there's little sockets these are the pins for breakout plug into your breadboard so I'm gonna go ahead and fit this into here you just want to align those little legs they're a bit delicate so you want to make sure those are aligned and then gently press in and it's stuck in there mechanically and electrically of course this can come back out if you want to try a different key and now you'll usually place a little key cap on top of there and it's nice to use ones that are made for lighted key switches so this one's just perfectly translucent you can also get ones with little window cutouts sort of like this type here they have a little light pipe kind of window let's take a look at this board so this is a big old breadboard and pull my camera out and focus that so you can see layout on there that'll work and I'm just gonna refocus that a little bit it's good so what you can see on this one is I have an itsy-bitsy m4 plugged in this will work with nearly any microcontroller because all we need are digital pins to read the switches and some neopixel compatible pins and I'm running circuit python on here you can see the arrangement of wires is essentially this blue line is the neopixel connection so that runs in and then out in out in out in and I also have a blank spot here that we're gonna plug a switch into in fact let's go ahead and do that now so you can imagine we're doing some sort of like an ergonomic layout and so I've got a switch here I'm just gonna align that left top left there with power so that's in fact it's it's duplicated on top and bottom some of these so that you can have more flexibility in your arrangement on a breadboard or a perma proto board how I'm using it is power and ground for the neopixel or here the input for neopixels is blue one at the bottom and then I'm using a ground for the cathode side of the switch and the anode side of the switch is this gray wire running into one of my digital inputs on the itsy-bitsy so I'm going to plug that in and what you see is I have the animation led animation library running on here so we get some cool effects right now I'm doing a kind of pulsing pink something else is interesting is that I have these set up as usb hid keys so these are sending shortcuts to my broadcast software which means if I press one we get this current camera view of me in the corner two it switches to a duplicate three is that little product webpage four goes to a little product photo and five clears that layer out entirely so the way that's working is just simply sending the numbers one two three four and five and then I've assigned those as shortcuts inside of wire cast here and you'll also notice as I do that I'm switching the animation so here we have this nice little chase animation we have a blinking amber I have pulsing between three colors color change and this is a sparkle pulse which is kind of nice so we'll bring me back there now if you want to see how this is coded I'll jump into my circuit python view here and I'll just bring up a smaller camera so what's happening in the code I'm importing time so that I can do any timing based things that I need to pause or something like that importing board so I get the definition of the pins importing neopixels so we can drive those neopixels using digital IO digital in and the pull it's a pull down resistor that I'm using then I have the debouncer that allows me to do things on key presses and key releases then importing usb hid and the keyboard and keycode libraries so that way I can press hid keys then I have a bunch of different led animation library imports here and then here's what happens for the setup I'm setting up the essentially the key pins are separate from the neopixel pins so even though you have sort of both of those things built on to here they're essentially separate circuits and you can use one without using the other so I import the key pins and I have those on board d12 11 10 9 and 7 and then I'm creating the debouncer on each of those pins and then I'm setting up the neopixels on a5 that's the pin that's running out and into the first of these switches and then they sort of daisy chain along and I'm setting it to have five neopixels in the strip set up the neopixel strip and then I'm setting up these different animations I'm setting up an animation sequence and that's actually what I'm cycling between when I hit each key I'm going to a particular sequence pulse chase blink color cycle and sparkle pulse and then I'm setting up the keyboard device now when we're actually running in the main loop of the program here's what's happening the animations animate just says keep looping whatever animation is current from those sequences and then we check all of the five key switches so for I in the range however many key switches we have there in this case five we will update that's the debouncer checking to see if anything has changed if something is changed like we've pressed a button that's the fell condition then I'm printing to the serial port which one I pressed and then I'm also keyboard send the appropriate key code that I have in this little list that I built here and then we animate we set to the current active animation so what I'll do is I'll open up my serial view here and now when I press the keys we should see zero being pressed and released one two three and four and you'll notice my little animation cycles are changing it's not changing my camera views right now because that's based on focus so I'm pressing a one two three four and five in fact we can watch them get typed in here as I press them but since I don't have my broadcast software highlighted right now or active it's not changing the camera views like it did before and that is it that's what happens in the code it's very simple we have the web page set up here like I mentioned before if you want to go and find out more if you want to go and order some head on over that's the product ID 4978 and that's about going to do it so let's jump back into this view here uh and let me pull one of these apart that is my product pick of the week it is the neokey socket mechanical key switch breakout and I'll go ahead and place that on my wall of stem of qt goodies and others and that's going to do it for another jpeas product pick of the week we'll see you next time


and set which we can just wear I think we could probably take this line around oh other hand go out the front it might be a little easier joseph come right over here okay lay down and get to do it okay now stand up let's see it yeah good one all right high five yeah okay you push him set set's turn next oh it's good to be home okay it's sunday just got done with a run 10 miles six minutes and 30 seconds per mile was not expected to do that I was definitely overdressed as you can see the sun is out it is beaming out here um I was overdressed and wore the wrong shoes I thought it was going to be a lot snowier so I wore my Solomon speed cross shoes that have these crazy lugs on the bottom way too much lug action so anyway but it was a good run and now I'm just chilling watching joseph build the day in with the snow hope you're having a great sunday youtube and this is uh this is it I don't even know what I filmed today but that's okay just kidding my vitamin d for the day did you get your vitamin d today youtube but I also got to do it this way water's wrecking it yeah I know I shout out to raise his arms tell him to clap his hands tell him to kick his foot what's that guy what else should he do perfect closing out the vlog it's sunday I used to call these vlogs these types of vlogs the simple vlogs because you know they're editing is simple the filming is simple life is simple but I've stopped doing that because um it's it's the life vlog we're not doing anything crazy we're just living life communicating it to you through the youtube and um so it's not a simple vlog anymore it's the life vlog so thanks for stopping by the snow the cleaning the dancing on the table with the shadow all that fun stuff good to be alive right it's good to be alive seek beauty work hard let me tell you


Hello everyone, welcome to the third video of our eight rack Journey in modern it's been about a week and a half I think since I did the last the last lot of videos I've made a couple of small changes very small changes. I've added an extra field of ruin over fourth mutavolt and swapped out one inquisition over for a thought season from sideboard and main Apart from that. It's exactly the same configuration that we saw last time So what are we going to do here wrench mind dismember and affliction and not much else Urborg turns on the rest of our stuff. I'm going to keep Err on the side of more lands And I think we'll be happy enough just to just to kill those birds Start us off wrench mind Gets a little bit better as his hand starts to shrink and with that in mind I think actually it's inquisition here. Thank goodness. He has a target so Knight of the reliquary and then four lands Hmm, I feel to me. I think it's just mutavolt for now affliction Scavenging is and a forest. Okay, no problemo Okay, so I don't think it matters much. Which order we do this in? Raven's crime is a really good draw there. I don't think he has any artifacts in this deck Oh, yes, of course you can do that. That's cool. So the crime is gone. We don't have that birds Yeah, okay. Yeah, me just ate the birds to get a bit bigger Eight night at the reliquary to get a bit bigger. That's been a pretty important ability. Okay. What can we do? So I think we race Obviously if I draw a rack effect This gets significantly better for me lilyana smallpox. There's a whole pile of really good cards I can draw dismember And I've got like three or four chances to to do that Yeah, yeah, whatever that's not gonna do anything if he draws a creature though, that's also good for him So you can chump mutavolt with the birds that matters and then his Ooze will get bigger after after that chomping has happened. Okay, so we do need to find something relevant So it's a two-turn clock anyway. So Whether he's a whether he's a 4-4 or a 5-5 probably shouldn't have played that land doesn't matter now You let it through. Okay That's actually probably quite sensible. It's a good way to defend against smallpox The dear idea. I think we're just dead now It's unlucky Wow, how does he do this sacrifices something to get bigger? I Don't really want him to gain the one life actually off the use either So I might be better to dismember the use when the time comes Just do that instead. I could still top deck the rack here actually as well Yep one time I'm not sorry I'm not sorry It's not got some life gain craziness has he does this thing gain life when it happens Oh, I don't tell me he's got some kind of Cathedral No What's that thing that comes into play and tapped and gives you two life?  I'm not gonna desperately mill to find it but Yeah, I think it's probably good that it's there Bob seems kind of bad. I don't like him when he has no hope of getting through with his two damage Does he have no hope here of getting through with his damage, I don't I'm not sure I'm also looking at obviously world wipe As a thing but the decks not running aether vile. So I feel like smallpox is better than than the world wipe So we'll go we'll go we'll do this Did I get away with one there or did I played my arts? I don't know. Oh Yes Okay, we've got one. Yeah, I'm gonna keep this I think black males Yeah, it's we need some help, but I'm gonna keep this just because I really feel like I Really feel like he's gonna really be unhappy to see this card Him going to five is nothing. We're too upset about either. Yep. There we go. Do your worst Yeah, we're just killing that. Oh No rage quit Well, okay, sorry. I'm trying to try to make this fun for a fun watch But I think the game one was a pretty fun watch I'm surprised that you rage quit there. It's a pretty good hand His username is like it wrecks the flow. It's hard to follow This looks interesting Uh, right, I think this hand plays itself. We're we're thought season.  So Oh, it's humans. Oh my goodness Oh, I'll get ready for fun Oh, this is horrendous. Okay humans no eighth of vile. There is a cavern that doesn't affect us Take the mage. I'm not sure if that's right. I'll find out Sorry, I keep coughing everyone. I tickle in my throat here Okay, there's lieutenant as expected She's just gonna get in so I think that's the best thing we could have hoped for um Yeah wrench yikes So next turn is he's got those are his three cards. So what we could do is Just wrench hope that he doesn't You know if he if he ditches his two lands hope that he doesn't draw a fourth one That's probably our best bet at this point if we play Bob he's gonna have four creatures Uh with a three three attacking as a four four and you know some other huge guys here. So I think if he draws a land here he wins Um, otherwise we have a chance Oh, hang on. What have I I've got it wrong reflector mage and cavern. Oh, and he's played the planes. Oh, sorry And my wires crossed. So I think the maths are still the same Draw a land to win the game Okay Didn't draw it If he names lily he's In decent shape. I'll keep it simple. Um So he's going to hit a land drop and win the game about 40 of the time I think it's just there's too many awesome cards. He can yeah, I'm just gonna I'm sailing by the breeze here um Okay, he missed land again. So Well, all right Smallpox, okay I won't jump because I'm looking for in desperation for answers All right, bob be kind Yeah, okay, and we'll just thin his deck a little bit here first before we cast a wrench mind I I think I will switch to bond to um And actually, I mean there's an argument as well for um So, which one am I going to cast here smallpox or lily he's got other stuff Sure far out. That's all four of them. We saw this game. That's not going to do it. Okay Yep, so I think we do pivot over to Uh, the very last reckoning that he ever reckoned We go down on smallpox in order to accommodate that Bob was bad there Um not quite what we want We obviously want all of this More so than we want just member. I think we'll go first Now I'll keep it's a beautiful looking hand if only we Yeah, if we were in the dark and we didn't know who our opponent was but uh, Who knows you might draw into some good removal Image champion middle. Oh this guy You see the uh, oh cool Uh, so I think it's just champion here. It's pretty obvious unclaimed nothing unclaimed nothing so I'll do this first slight thing on that like in that he doesn't know that the thought these is coming so you force him to guess A little bit in the dark as to what you're planning to do two buglers and an image And the bugler is value. I'll I'll I'll take a bugler Uh, and we'll see There's almost nothing in his deck that he wouldn't be happy drawing. Okay So I have He sacks it to lily Three cards in it now Maybe I don't make him sack it. Maybe I um If I draw say another swamp just make him discard three cards one Well, we've done our thing We've done what we was what we came here to do So oh that stinks Yeah Okay, take the noble high rock off him and now we're just praying Humans is tough humans is tough. It's not over yet though. We've got bond two in our deck. We've still got some smallpox I don't think you don't even think I'm gonna. Yeah, no, I'm not even gonna play it just in case You know that would all that would continue to be true. I also thin my deck by pulling a swamp out of it Probably should have done that on his upkeep or something. I think technically but yeah, and that's why I should have done on his upkeep Too good. It's gotta be bond two I'm gonna do um much though from one life. I don't think And that's kind of true actually of tribally mid-rangey Sort of decks. So tough one But you gotta take the good with the bad Yeah All right, I think we'll keep this Oh my goodness. I don't know. Field's useful Wrench is bad And I'm just wondering if we don't want to play wrench having a well breaker in the graveyard. No Nothing bad for me. They just has a sack of land to get it back Yep, so Why don't we be interesting to see here if I mean, obviously He might not have tron on turn three and as a result Um We might be able to field of ruin his party Ruined his party is what I was trying to say. I mean very snappy clever way, but didn't really come off that way And it was part of the reason I wanted field of ruin. I wanted to try two even in the main deck I mucked around with three In the main deck. He's not doing it this turn. Okay, that's good. That's useful Um There it is. So he's got two mana To do what what are you gonna do? nothing Nada So what should we do here? Should we empty his hand and risk him top decking a khan? I don't think so No way Not on your life I think we We ruin his day He went to find the mine.  We don't have a lot to bring in really We just need to hope that our stuff beats his stuff. Just members. No good So we switch into this Not on a good run here. I don't think it's good Smallpox isn't bad because it makes him sacrifice a land Um I don't think I can support two without just dying myself.  He has no lands. You have no lands Uh, he usually recovers faster because of all the ridiculous This stuff Into ancient stirrings into whatever Um Smallpox is pretty mean smallpox is pretty mean here Discard ravens crime lose the smallpox lose that I've still got these two cards in hand Yeah I think we're gonna just fire it off ravens crime Was a bad draw but No worse than say swamp and then we just hope that bob has what it takes spatial contortion.  It's tempting to force him to discard two cards Um Tempting to force him to discard two cards here, isn't it? Yeah, I think I play her. I just I'm not sure of So if I don't plus her um I have to discard this card to make him discard a card anyway So if I you if I do it by casting ravens crime I haven't worked this out, but it might be that it's just not ever true that you should Leave her on three there No, I think no I was no hang on. Yeah, you could have I could have left her on three And then made him discard an extra card by waiting for a whole extra turn Which maybe was the right thing to do Um, but the card, you know, he's got five in hand. So the stuff he's discarding isn't going to be that Meaningful we're hoping to kill him, but he'll probably still have a fistful of cards in his hand at the time we kill him So She's a long way from being oblivion ringed oblivion stoned Still searching for land. He found it Oh Can you believe that can you believe in the position we're in with Like we're still probably going to lose this game I'm speak.  So if he throws away is Yeah, has she activated yet? She hasn't Oh, hang on. There's hope. Sorry. There's hope. There's hope. Sorry. I was despairing I had an extra discard up my sleeve, right? So he's got tron And he's hoping to just draw another carn liberator. Well, it's still pretty bad, isn't it? I mean He just plays tron kills lily Plays carn. I mean I don't know. That was the card we knew about. All right. Okay. Okay. Hang on I'm getting ahead of myself here right Now the question is Do we wait it? Do we blow up tron with lily now? or do we Wait an extra turn. So if he top decks it has to be I think exactly carn liberated And there's only one more of them in his deck. He's got three in his graveyard He could top deck worm coil engine if that happened We would be very unhappy There's one of them in his graveyard as well though Um, let's find out what's in his hand. Let's get that into the graveyard juicy um Whatever I do is going to be the wrong thing.  So I think it's correct to disrupt I think it's correct to to do this um Mine Is in the yard mine it might be uh Like that because we've already put a mine in the yard So his chances of drawing Might be the right thing to do and then like Yeah, I I don't know He could kill bob if he draws a spatial contortion He can just find tron again With expedition map Yep, so In hindsight if we'd plus oneed Well her plus one ability isn't even that great after the ultimate So I don't feel that bad And he might not even have time because I know he does yeah, so he goes finds mine if he top decks khan or ugon here um You know, then he's golden. He's just golden And that's just the way it goes and that'll help against the rack as well Yeah, it only takes two so He has to win this turn basically. What was that card you drew? That won't do it. Okay Game three. I'll be right back everyone just pause the video here. All right, we are back Um Yeah I still I mean I'm still not um Very happy going into game three in terms of confidence This isn't bad another bob. That's useful It will keep um and really he he won us that game. He won us game two without him there would have been no hope He dealt about eight damage assembly worker. What there? Oh, what does that mean? I can't I can't I can't raven's crime anymore Party is over. I can do it once But then that's it Please have something Sylvan or expedition map. It's got to be See if they banned expedition map, you don't have to ban tron just ban that card expedition map It's the one thing that just makes them so Consistent, you know Did he top deck that forest or did he have it? He went and found a power plant for his trouble.  What does this even do? Uh urza's factory Is that even modern? I didn't even know that was in modern for seven money. You can make a A token. Wow Maybe that's why you never see it because it just seems kind of useless. Um I'm dissing my opponent here. I'm sorry bro into I know it's a well celebrated and loved deck, you know around the world green tron I just love it. I hate it so much So what I'm contemplating here everyone is dark confident instead of making him discard those two threats My rationale being that I'll then have three mana He he'll only have three mana on his turn And I'll have three mana and I'll have three discard spells. I'll have bang bang bang We can assume Inquisition is no good So let's give that a try normally the doctrine should be empty his hand and then play bob, but I feel in this particular combination of circumstances. We know exactly what these three cards are We think we're safe from thought not seer The old drowsy temple here it comes. No, okay And there you go. Okay, so we're we're we get paid we get an extra card for our trouble And what a card it is Yeah, no, this is good. This is very very good. All right, so This is going about as well as Anyone could reasonably hope So he's he pitches Khan Um, maybe I did that the wrong way around in case that's a land in his hand No, okay. They're both just gone Gone gone gone So he's got work to do And we have a dark confidant on the table. Let's start Good job Can't play raven's crime anyway, so There's no sense holding back on lands Look at this. He's drawing us an extra card each turn and putting him on a on a clock. Okay. It's a 10 turn clock, but but that's He's so good. Look at him He's giving us a chance to win the game and Nice get in you beauty. We beat Tron. We actually beat them Fantastic, I'm really happy with that everyone um And what a wicked cool.  I mean we we destroy ursa's mine proactively while she ticks up to six or seven So he's not getting to tron anytime soon except by doing it honestly One thing you can do is get to an honest oblivion stone just cast the oblivion stone and then the following turn blow it up But I would say we would win this sort of 75 80 percent of the time from this board state Um So, yeah, that's awesome. I'm really really happy with that. Um, let's go one more Okay, he kept Let's start off with the thoughtsies And we have a little tension here the classic tension between bob and smallpox Oh careful what you wish for Wow Yeah, um Very very juicy but Okay, we take the serum visions and we'll just need to be very aware that he he does still have the grape shot in his hand So I have lost to this before. I mean storm is it should be in general a favorable matchup, but I don't want to be too Bullish He's just going to cast his other one What did he do? He put two cards on top So he might have found land land on top, which means we can assume he's going to Uh have mana for grape shot next turn. How sad are we if he grape shots bob? I think pretty sad because then he's just a one for one Um, I could also smallpox here, which just feels Mean although he's probably found a land. He plays that land passes the turn We lose quite a lot of momentum by doing that. I'd rather see a barral Or an electro amounts of first So I'm just going to play a straight bat with this one Desperate Okay There it is. Okay, cool. So that opens the path for bob I don't think this thing runs lightning bolt He's in two mines as well Given that I've drawn the dismember. I think it's just bob and don't play the land Uh, well, maybe more so if I play the land I can dismember on during his turn He can also remand Yep, he's got remand. Okay. Must be what he drew off the serum visions He liked what he saw So given that he liked what he saw, I think we play the land we can dismember barral I don't really want a smallpox anymore. Obviously There's electro amounts, huh? Sure Do you want to try and go off because now's the time He does Go for it man Good man. Good man So I think the way to to play against storm is to kill them right now Uh, while the first piece of the combo is on the stack I think I read that somewhere Now he just needs to just desperately hope that he can make enough momentum, but I think it's it's almost impossible Yeah, no, it's it's not possible. Oh brutal Bob again. Look at this doubling down Just like he did for us against tron Gifts un-given They're going to stay un-given Those gifts ain't going anywhere They can stay on the bear the blue lady and keep them to yourself. All right, whatever's in those four little thingies We have no idea what that last card is I still don't have rack or shriek But I got twice as many chances of finding him Like he's literally doing all the work for us Field does practically nothing So I'll save it just on the off chance that he tries to hoard Okay, we're gonna see if we can back this up. So what does he bring in out of the board? What do we want to do? I think we want to layline of the void Um to stop passing flames I think Yep, he's a goner. Hopefully you'll concede here Just give it away man. That's it Yeah, so layline of the void definitely makes sense Um Past and flames is his main route to victory and to happiness Fatal push is obviously better than dismember How many removal spells do we want? Bob He's so good Wasn't he good there? Just so good so good So so good. Yeah, one of the reasons why you play a kind of a tier two deck like this Is for the joy of taking down Something like Tron something like human something like storm That's exactly where we want to be So we're faced with a similar problem to what we had against the Tron guy We can play bob or we can keep up the discard pressure now My default is to actually continue the pressure so Looking at this though That is a bit problematic because We would lose Two lands and put lily out of reach But I think I'm still okay with that We can bob the following turn I think you want to be conservative. This is more of like this is the classic eight rack line You would take you so like don't get fancy. Don't be a hero Make sure as painful as what you're doing feels to yourself make sure You do it anyway because as as painful as it is It's it's it's the whole mission of the deck is to degenerate And we're not afraid of hurting ourselves And our own game plan in order to disrupt theirs And there we go. We haven't yet. We've get we've put we've Okay non land permanent with converted mana x to its owner's hand So for two mana he can yeah, and then he draws a card off that I think Yeah, he can bounce the rack and draw a card off his repeal But I just don't think three mana and three cards is enough to go off And this is all totally fine Not a problem. Okay. Well, we are just going to play him now He still needs to find stuff I'm going to do gifts here. Maybe Okay, there he is Two cards isn't enough is it? It is all right. Okay Yeah, if you can do it, that's fine man So you basically put him in a position where he feels he has to go for it And maybe you can I mean it's it's an incredible deck storm the way it can just It can literally just Come from absolutely nowhere and ruin your day Okay, so I think we'll just play it. We'll play it on face value.  Sorry Make you discard a card Should have done that first. That was a bad mistake Get in and we begin A much faster clock So weird little bug there We're bog doing overtime with these field of ruins like this is just Actually, it's weird now because I feel like we're actually a little bit vulnerable to blood moon.  I'm not too worried about it, but Um Okay, well I don't want to cast it. Yeah, I don't really want you to have two cards So I'm going to do this and the card I will pitch is Oh going for it Yeah And it's my oh and mana morpheus. Okay put two into the graveyard. So passing flames costs Five from the yard He's got one two if I put if I was to put that in the yard Along with mana morpheus. He gets one two three four five six mana casts it then has one mana left over to Do what? Nothing. He fizzles So have the rituals into your yard. How's that sound and then discard one of the cards in your hand See what he picks Oh So now it's even harder for him because he has to He has to feel like he's still got at least another turn though. I can't deal 11 to him Okay, sure I don't think you can do it yet though I'm just gonna try I'm just gonna f6 here see what he can do It's not easy He's not actually adding any mana by doing this he needs to find rich. Oh he is Should have made it maybe waited there Yeah, he needs to get up to He needs like six mana to be able to cast past and flames Yeah, no, okay Well, we live to fight another turn Because the smallpox makes him pitch that card Lily goes to five Smallpox is brutal smallpox is brutal because it hits his land base as well So Let's fight first. No reason not to Yeah, smallpox is sweet here Horbitran That's one of the things that I slay line of the void.  He's got one turn left good games He didn't it wasn't a complete pushover either. He'd be we had we had a bit of a Bit of a scary moment there. Yeah, the game has ended All right, sweet go first I think we can keep um We can keep I don't love There's a little bit of a risk Of thought sees coming back to bite us if he has thought sees But we'll keep And and take that risk Wow again Two storms. It's just got to be certain visions. It just feels right. I hope he hasn't found a remand here I doubt very strongly he has a lightning mold or anything like that in his main deck. He could grape shot Our lily although He'd be using a lot of resources to do that That's a nice draw. I wonder if I want to activate first here. I think I'll thought sees first I think I'm going to take the ritual here Not saying a lot here everyone because uh, there's not really a lot to say it's uh It's all pretty much just playing out Playing itself out So we'll do that Get his land based down to two Okay, so you can have The electromagnets, uh And if you keep the electromagnets where I'm going to play lily honor and make you sack it I think that's I think these are the piles Just need to draw a rack effect obviously Wow How about that? Okay I actually didn't expect that that's array So if this is remand, I don't care Cool. Okay. Well, that's all right That's fine. So what did we do last time against storm? I think we definitely brought in our graveyard hate Well, I don't nine seconds left Okay, so he's going first Pretty thin looking hand. Um, not much discard pressure Fatal push is useful, but we do need some help Um I don't I really don't like this hand very much at all. I think it's just a keep We're on the draw. So he's also mulliganed I think it's just barely a keep One card on the bottom. Okay Pieces of the puzzle is quite bad for us those pieces That's a pretty powerful hand actually if he can get up to formana Uh without us interrupting him, which as you can see from our choice to keep he can Uh, it may have been a mulligan. It may have been the right thing to do. Oh, thank goodness. All right It's an awesome draw for us. It's just spectacular. Probably the best card we could have possibly draw I think I like erborg Go again So empty the warrens is no joke. It's he could cast it for You know with the storm count of two or three very easily and then we're facing down six power and toughness um Yep monomorphos Oh ritual What if I what's he knows discarded the thingy? Okay. Yep. Here we go. Okay, so there's four of them um right Okay, so what am I going to do here should I fatal push? I don't think I do fatal push We're obviously going to win the race So I think we just let the race happen so If people aren't used to playing against eight rack, sometimes what they'll do is hoard cards Uh to defend themselves against the rack effects And that generally is Is is is a bad thing um For them to do so we have an interesting question here we can Ravens crime and hold up fatal push We can lily and while it might be tempting to swamp play lily. I think I'd like to play around remand um specifically Uh, she also isn't doing anything more than the Ravens crime is doing So as sexy as she is I think Uh, I think the crime is actually the right play here Yeah We really needed eight goblins to make it uh Make it a thing this could be pieces of the puzzle sure Top five put two into your hand and the rest of your graveyard. Okay, so what did he take? He took serum and sleight of hand So we could fatal push here to take the clock down. I'm not going to be able to get rid of both of those cards Um Or am I if I draw a swamp I can make him pitch both of them How worried am I about the clock So I think if he finds barral and plays it he's just going to die to the to the rack effects. So I think I'm okay with Just changing the clock This is all right Our land is fine here. Oh inquisitions. Just it's fine. That's just absolutely fine Very um very one side of these games have been Um Okay, good games man good games. So not bad overall pretty happy with that for one um Yeah Storm is a is a matchup. We were happy to see so Um, we got a little bit lucky uh coming up against them twice As I said, I think in a previous video I have lost a storm before um You know in a competitive environment it is possible of them to come back but Uh, yeah, I think pretty happy with the new build that the tweaks we made and Yeah, so look, I hope you guys enjoyed the video and I'll see you next time. Cheers


In this video, we're going to replicate these scratch custom my blocks over in Python. It's going to become a little bit redundant, which means we don't really need to do it this way. But we're going to get some practice in creating some functions and some more lists here as variables. And then I'm going to show you how to do it in a one liner towards the end of the video. Hey crew, it's The Serving Scratcher here, teacher-server programmer, and on this channel I help curious learners just like you along on your learning journeys. And welcome back to the From Scratch to Python series, where we're trying to wriggle you along into a text-based programming language. And in our case, it's Python. We're translating a scratch project into some Python language. We're about halfway through this series, so go check out the card in the top right-hand corner right now for some early videos. Otherwise, let's get stuck into it. So we need to go in and start with our splitline function. So let's go and create a function definition, call it splitline, and it's going to take a line as a parameter. Don't forget to put that colon there. Now let's store the colon position as a variable. This is a local variable. And we have a nice function that we could use for this. Let's go get it. So now we can just call that other function just by writing the function and passing in that same line. And this is going to give us the colon position because we did that in an earlier video. Now we need to go and implement these next two functions, but they don't exist yet. You can see we've got some comments here to create those function definitions. So let's go ahead and do that. So I've just written that first one on the screen. Extract the word from the line, and we need to pass it some parameters. We have two over here in our custom block, one of them is line. And the other one is the position of the colon in that line. Now this function, it just calls that slice custom block that we created in the previous, the slice between block. And remember, we want to slice from the start, which is the index of zero up until that colon position. So we can just create a new variable here, and we're going to call it word. This is a local variable that belongs to this function. And we're just going to call this function that we created earlier. We can paste that in there. And you'll see that we'll get some hints here about what we can pass into that function. So let's pass in the line. We need to pass in the first index because we want to start at it. And we're going to go up until the colon position. And the colon position, remember, we're just getting from the split line here. The last thing that we want to do here is we're going to return the word. It's a little bit of a deviation from what we're doing over here. And I'll explain why that is in a moment. But for now, let's go back up into our split line function here. And now, in our split line function, we can go get that word. And that word is just going to be equal to extracting the word from the line. This function that we just created, we're going to pass into it the line. That split line is going to get. And we're going to pass in that colon position of that line. Okay, before we get too far ahead of ourselves, let's go ahead and test this out. So you'll see down here in the console, I've just created a variable called line. And I've assigned it this string here. And I've just created that variable colon position that would exist here in split line. So what we can do is just test these functions to make sure they are working. So let's now call extract word from line. Remember, I've just pressed the run button here to make this all working. So I've got to type the function name. I'll pass in the line here. And then we're also going to pass in the colon position. And with any luck, we'll get the word dash. Great, we've got the word dash there. Now while we're here, we'll just call the function split line. We're not going to get a return value, but we just want to check to see if there are any errors. It's always good to test your work as you're working along just to see how you're going. And good, nothing happened there. If we want to see some output, we can either return a value or we could print a value here. Remember, returning a value will return something similar to dash here. And printing it will just print the output to the console screen. Okay, so we've just successfully extracted a word from the line. Now we want to extract the sentence from the line. And why not pause the video now and have a crack at doing this yourself? Because it's very similar to what we did for the word. We're going to be reusing a lot of this code and only a couple of things have changed. Go ahead and pause the video and try it for yourself. Okay, so I've just highlighted all this code and I'm going to paste it. And a couple of things I'm going to change. I'm going to change word wherever I see that. I'm going to call it the sentence. I'll change the local variable name as well. And I will change the return value. Now we no longer want to start at the zero index, the first position. We actually want to start where the colon position is. But it isn't the colon position because if we go up and check out one of our lines, if we were to slice our sentence from the colon position, we're also going to get the colon and the space. So the starting position is actually whatever the colon is plus two. So we're going to scroll back down and our starting position, yes, will be the colon position. But we can just in line, just add it two to it. And this will take that colon position assuming it's an integer value and we'll add it two to it. Okay. And this colon position plus two, the equivalent in scratch, just grabbing that operator block, the addition operator block and getting the variable and just adding two to it. That's the equivalent of how you do it in Python or the translation from scratch to Python. Now how'd you go with the final position here? There's a function that we've used earlier in the series that can return an integer value for the end of the line. Remember, it is to get the length of the line and we use our friend Len. And we can just get the length of the line here and that will give us the final value. Let's press the run button and let's test it out. Okay. So I just pressed the run button and I've got out two variables here. We need to extract the sentence from a line. So I'm just going to paste that. Let's put in our brackets. We'll pass in that line and we're going to pass in that colon position. Let's press enter and fantastic. We're getting should she try to make it dash for the car as our sentence. Let's scroll back up to our split line function as well. We've got our word. Now we want our sentence. We need to extract the sentence from the line. We're going to feed it the line and also the column position. So now we have a word and a sentence to use. We've got these greens quickly lines because we're not actually using them yet. So let's go about changing that. And what we're going to be doing is taking these variables and adding them to new lists. But you know what? We're going to save that for the next tutorial because it's not the right place to do it here. And I'll explain why that is in that next tutorial. But for now, let's go back up here to our split line. And we need to come up with our one liner and the one liner is going to replace actually all the work that we've done here in creating these functions. And yeah, you'll be saying, man, why'd you get me to do all that? Well, again, we're just getting practices with our function definitions, creating our local variables and feeding it in parameters. So it's just building up the repetitions here. But there is a way that we can do this all in one line and it's pretty neat. So you'll see here in Python how we can use a variable assignment. Remember, here's a variable with that assignment equal sign. It's not the maths equal sign. And we're assigning it to whatever is on the right hand side. And we know that when we extract a word from the line, we're assigning it whatever that word is that we extract or we slice it. There's a cool thing in Python where you can do multiple assignment at the same time. So I can do word and sentence. And we're going to call a function on line, the line that we're feeding to split line here. And the function we're going to call is split. Yeah, there's a built-in function called split. And what we can do with this built-in function is pass it what's called a delimiter. And the delimiter is the column that we've been using. We're just manually doing that in scratch. But yeah, there's a really cool automated way that we can do it in Python. So we're going to pass it that column character. And then I'm going to pass a number one. And the number one here is just telling us that we only want the first instance. So if I had multiple column characters in our line, well, it's only going to get the first one. And we'll split that line into before that delimiter and after that delimiter. If there were multiple columns, then it would take every column character would become a new chunk. So what this will return, whatever is on the left-hand side of the line, well, that's going to become our word. And whatever is on the right-hand side of the line, that is going to become our sentence. If we look down here at the console, we know whatever to the left of the column is our word. And whatever to the right is that space character and that sentence. We're probably going to have an extra space character there, but we can clean that up down the track. Now, we can just actually return that word and sentence. And to test out what that return value looks like, let's just run the program. Okay, so I'm just going to get our handy little variable here, our line. And now we're going to call split line that function. We're going to pass in the line, going to hit enter. And you can see that we've gotten our word here and we've gotten our sentence, but it's wrapped it in these brackets here or these parentheses. It looks a little bit like a list, doesn't it, from earlier tutorials. Now, this is actually just called a tuple. It's a special type of list. And a tuple is just a list basically that you can't change anymore. So I can't add anything to this. I can only read the values. But we can read these values and add them to a words list and a sentences list, which is what we'll do in the next tutorial. Now, just a couple of last things before we wrap up. Back to our delimiters here. I've used the colon character as a delimiter, but any character can be used. You could use a comma as a delimiter. You could use the number seven. You could use three sevens in a row if you really wanted to. So a delimiter is just something that you want to use to separate two chunks of text. The last thing is that I've got some links down in the description to these functions here. So the split function, the string function, and also our multiple variable assignment. And I'll also chuck some info down there on some tuples to give you some follow-up reading. And hey, if I've gotten around to it, there might even be a video of someone else's done in the top right hand corner. Well, awesome work on getting up to this stage. You are powering through this series on Python. There's only a few more videos left. I can't wait to catch you in the next one. But until then, I'll have to go find a wave and I'll see you then.