Python Bytes - #207 FastAPI as a web platform (not just APIs)

Episode Date: November 13, 2020

Topics covered in this episode: fastapi-chameleon (and fastapi-jinja) Django REST API in a single file, without using DRF 2020 StackOverflow survey results A Visual Guide to Regular Expression Taki...ng credit Raspberry Pi 400 Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/207

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds. This is episode 207, recorded November 4th, 2020. I'm Michael Kennedy. And I'm Brian Ocken. And this episode is brought to you by us. We'll tell you more about that later. Brian, how you been? I am excellent today.
Starting point is 00:00:17 A little tired. How about you? Yeah, quite tired, actually. Quite tired, but I'm doing all right. Life goes on, and we continue to work from home and all those things. And luckily, our industry and our tools were built for that world. Yes, I'm very fortunate. Yeah, absolutely.
Starting point is 00:00:35 So speaking of fortunate, I think we're fortunate that Sebastian Ramirez created FastAPI because we've talked about FastAPI before. It's super neat. We've talked about Pydantic before, which is a really cool way to take data class like things and automatically bind them with automatic conversion, validation and whatnot for data that just comes from a JSON dictionary somewhere or just a Python dictionary. But it often is JSON being submitted to a web, some sort of web API. The reason I bring up fast API is I've been doing a lot of stuff with it,
Starting point is 00:01:07 actually working on a series of courses around FastAPI as well, which is super exciting, and maybe I'll mention that briefly later. But one of the things that bugs me about FastAPI is it's so API-oriented that it's tricky to know what to do when you just say, I just want to create a website that has like a couple of pages and then some APIs. So for example, if you just create a couple of APIs now and they're like, say it's about weather, it'd be like slash API slash weather slash report API slash weather slash latest or whatever right well if you just click the you know and you run
Starting point is 00:01:46 it you just click the little link in your ide or vs code or whatever and open it what do you get 404 probably not the best response that you could imagine is that like the default behavior is just to like open up the site and it says not found so you got to like type in this stuff anyway it supports jinja in like a sort of manual way the same way that flask does i guess more or less but i wanted a better way to have html pages inside of my fast api app because if you're going to build an api there's a very good chance there's like two or three pages that you need, right? Yeah. Yeah.
Starting point is 00:02:26 So I wanted to have a couple of things. I would like to be able to have a simple function that is a view method. It could be something that is like a HTTP endpoint for an API, but more likely it's going to be one of these pages. And I want to just be able to have it return dictionaries and say that it takes some kind of template. So put a little decorator and say, this one has the template home slash index.html and it's automatically going to take that dictionary, send it over to whatever template engine you choose,
Starting point is 00:02:58 turn it into HTML and send it back. Set the content type to be HTML, all of those things because by default it's JSON. Okay, so you'd content type to be html all of those things because by default it's json okay so you'd like it to be the json data but have it be formatted like html so well often what with these templates what you need to do is like suppose you got a bookstore and you want to say here's the categories you have to somehow pass data over to like categories.html and it'll get like a list of categories and then you'll iterate over them and generate the html through that dictionary being passed over that's the data that you're basically providing to the dynamic html right so what i did is i went and i created this thing
Starting point is 00:03:34 called fast api dash chameleon if you want to use the chameleon template language which previously was not really in any direct way supported you could import all the libraries and just make it do it yourself but that's kind of painful now you can just put a decorator you know from fast api underscore chameleon import template and just say at template and point some file at it and boom you return a dictionary now you have chameleon as your template language that's neat right and it also i found a way to write a decorator that will automatically adapt, whether it's an asynchronous or a non-asynchronous method. Right? Because normally the decorator, what it does is it has like a wraps and has an inner,
Starting point is 00:04:12 and then like the inner function does stuff and then calls the actual thing it's decorating. Well, if the thing it's decorating is async, you got to do one thing. If it's not async, you got to do another thing. So how do you tell? There's a cool library called Inspect, which will let you actually look, even if it has a little wraps decorator that tries to lie to you about what it is,
Starting point is 00:04:31 it'll show you whether or not it's a coroutine, which is pretty cool. So on top of this, Mark Brooks saw this and said, that's awesome, but I don't really like, I don't use Chameleon, I like Jinja. So he forked my repo and created a fast API dash Jinja. So now you can do exactly the same thing if you like Jinja. And guess what,
Starting point is 00:04:51 if there's someone out there that really, really wants to use, I don't know, Django templates or Mako or whatever, right? That's like five lines of code away from doing that as well. The reason I think it's important to add these other template languages, not just say, well, it supports a Jinja, so you're good. The reason I think it's important is if you've got some web application that has APIs, it already has chameleon templates, or in the other example that doesn't exist yet, some Django thing, and you want to convert it to use mostly fast API, but you don't want to rewrite all the HTML, CSS, and JavaScript, if you can make it render those templates, then it's so much easier to move from some other
Starting point is 00:05:30 web framework over to FastAPI. Because you don't have to touch the HTML, you don't have to touch the CSS, you don't have to touch the JavaScript. There's just that middle part where you handle the requests, and that's actually pretty limited. So, that was my idea for creating this, was hopefully to make it possible for people
Starting point is 00:05:45 who have other stuff written in Chameleon to move to FastAPI really easily and then also just to like sort of inspire a cleaner programming model.
Starting point is 00:05:53 Yeah, I actually was going to ask you if it was possible to do something like that with Jinja and you already answered that. Yeah, yeah. Actually it's built in
Starting point is 00:06:00 but the way it's built into FastAPI is not with like a template decorator. It's, you know, you actually go in and you say the actual file name and then you pass a bunch of it's like it's not super clean so it is it is quite clean the other way around which is cool yeah nice cool nice carrying on about apis yeah maybe a little less clean of a way yeah, we've been very excited about FastAPI recently for APIs. And in the Django world there's the Django REST framework is quite popular.
Starting point is 00:06:32 But what if you just want to use vanilla Django and write a REST API? Adam Johnson took that on and said, yeah, of course you can do it but you can also do it in one file. So we're going to link to a little article where he has a simple REST API completely written in one file as a one file application. It's a little API that gives you information on the characters from Rick and Morty, specifically just Rick and Morty, and that's it. But it's a good example. I like it. It shows you how you can do redirects. And so like, for instance, the endpoint, one of his endpoints is characters. So if you type your
Starting point is 00:07:14 application slash characters with a slash at the end, it should return JSON data with the information about Rick and Morty. Now, what if you just don't put anything? If you put characters without the slash or don't put characters at all, like your homepage thing, he shows you how to do redirect. So you can redirect two characters. And, you know, it's a pretty simple example, but it is kind of neat that you can do it off the shelf, Jason, or off the shelf, Django.
Starting point is 00:07:44 He also shows he's got some hard-coded data classes within the application, but it's not that difficult to imagine that you can extend that to something that reads it out of a database. Yeah, absolutely. And it's like 63 lines of code, which is not too much for a non-trivial little example API. You know, I'm not necessarily on board with putting this in one file, but I am on board with this idea of these simplified things. When you hear about Django, you always think, okay, if I want an API, I'm going to have to add Django REST framework and all these other things to it.
Starting point is 00:08:15 If, say, you're in Flask and you want to work with users, well, I've got to add the Flask SQL Alchemy add-in. I've got to add the Flask users add-in extension. And maybe I want session, so I've got to add flask session. None of those things are necessary, per se, especially on the flask side. There's so much of it. It adds one or two lines of code
Starting point is 00:08:34 that you don't have to write. And now you have all the overhead of depending on making sure that that thing works right. And the way you work with it is the way you want. And so having just a here's the bare bones view and you can add in stuff if you like, I'm a fan of that. I'm also thinking, let's the bare bones view and you can add in stuff if you like, I'm a fan of that. Yeah. I'm also thinking like, let's say you have a Django application already and you built it, not intending anybody to use it as an API. And somebody says, like maybe an internal application, your business or something. And somebody says,
Starting point is 00:08:58 oh, this data here where this graph is, can we get that as an API so that we can, you know, use it in something else and this would be you know a good example to be able to just add you can use django rest framework of course but if there's just something simple you need to add as an api this is a way to do it yeah no it's cool and like i do feel like these add-ons and these extra layers that you add they better add a ton of value because they're also adding overhead and dependencies and breaking changes and all that. So if you've got something working
Starting point is 00:09:30 and you want to just add a little bit of, here's a few JSON endpoints, let's do that. And for people that really enjoy this article and want to hear more from Adam, I've had him on Test and Code a couple times so we'll drop links to those episodes in the show notes. Right on. Now before we get to the next one,
Starting point is 00:09:45 which is a pretty big item, I just want to say this episode is brought to you by us, courses over at TalkPython Training, Test & Code Podcasts, and something to do with PyTest. Do you do anything with PyTest? I heard that PyTest is a thing that people use. Do you do anything with that?
Starting point is 00:10:00 Yeah. So, yep. Wrote a book on PyTest. I still think, and I still get call outs on twitter saying that's the best book they read read to get started with testing and they got excited about testing with reading python testing with pytest so it's a good book yeah awesome yeah and over at talk python training i'm now working on a three-part series so like three four hour sections or so on building fast ap APIs and also testing them
Starting point is 00:10:28 and putting them in production and fun stuff like that. Oh, that's exciting. Can't wait to watch that. Yeah, that'll be fun. Yeah, yeah, it'll be super fun. So anyway, that's coming. People can go over there to training.hawkpython.fm, sign up to get notified and visit Testing Code
Starting point is 00:10:42 and listen over there as well. We also have Patreon, right? Oh, yeah. So had somebody reach out to us for the patreon and say hey you guys mentioned that a whole bunch of people sponsor you for a buck a month but they said that's the only tier you have and so michael and i are definitely going to talk about in the future whether we should add some more tiers however there is an option even if you sign up for $1 a month, if you want to send us more, you can change that within the Patreon thing.
Starting point is 00:11:10 So we'd appreciate it. Yeah, much appreciated to everyone who supports us in all the ways. Every way is valuable and appreciated. Speaking of valuable and appreciated, we often talk about the Stack Overflow Developer Survey. I mean, in my mind, there's two major surveys
Starting point is 00:11:23 that take the pulse of the developer community one is the stack overflow developer survey the other is the psf survey which by the way just got extended to three more days by the time this comes out that'll be already in the past but you know that's hopefully people have taken that we've talked about it before and we talked about the 2020 stack overflowflow survey coming out, I believe, and I told folks to go take it, or you did, and then we just didn't follow up, right? But the survey results are out, so I thought it might be fun to run through the survey results.
Starting point is 00:11:53 Yeah. Yeah, and I just want to be clear. I kind of lost track of this. I don't know exactly when this came out, but it's not brand new. It's like four, five, six months ago, but we didn't we didn't talk about the results we just talked about the survey so let's run through some of
Starting point is 00:12:10 the things that are here now the 2020 stackoverflow survey is focused a lot on demographics and background and education and all those sorts of things and if you're interested in that definitely go check it out a lot to see there just because of the format i'm going to focus mostly on the tech side that they covered here okay so not whether we have a full-time job how many of us work from home none of that so some of the most popular technologies and i just want to point out i think the psf survey and the jet brains folks who worked with them to put that together isn't a much better place there's this is a wacky wack wacky, wacky survey, but it does have some good questions.
Starting point is 00:12:48 I'll expand on the wackiest sec. But if we look at the most popular languages, most popular technologies, web frameworks, databases, and so on, certain languages, we have JavaScript, Python, and Java. And JavaScript has 68%,
Starting point is 00:13:03 Python has 44%, Java has 40 that's good right i mean like everyone knows javascript's pretty popular so what's wacky here why is this weird and i'm not necessarily saying there's not 68 of the people doing node.js they may well be but do you know what language is between javascript and python css dude i know no application that is shipped running on css i can't even compile css i could probably compile sass or less over to it but i can't compile css to a running application it's not a programming language yeah and sql perhaps it's true and complete but no yeah and sql sql is a thing you use within a language yeah it is not a programming language that builds things right
Starting point is 00:13:45 so they have this this is what i was talking about where it's wacky and javascript is in this world right they needed to ask very very clearly do you work exclusively in javascript as a node.js developer or a pure front-end developer or did you check i also use javascript and css and python i also use javascript and css and java right and so the javascript one has like bundled up all these i do anything in the web on any language plus the node.js developers right so i i think the contention there is a little bit closer but it still wouldn't surprise me if javascript was actually in the lead i don't know i feel like i'm all hyped up on like percentages and trajectories given all this election talk that we just went through well i remember checking the box for javascript once and like yes i use
Starting point is 00:14:34 javascript yeah exactly what does that mean i have an app that does use a little bit of javascript and i looked at the code once right did you do you do $document.ready? Good. You're a JavaScript developer. Like, not really. Yeah. So, yeah. On the other hand, if you built an app with Vue.js or Angular, you're a JavaScript developer. If you built something with Express and Node, you're a JavaScript developer.
Starting point is 00:14:55 So, I think it's a little bit weird that they didn't, like, really clearly make that distinction because you can't put two buckets and add up those numbers next to other buckets and make that make sense right css is the same thing like no one would check it if you said i primarily code in css to build apps and ship on the css platform anyway okay so web web frameworks you know what the most popular web framework is well i do now that i just looked do you believe it but i wouldn't have guessed this do you you believe it? No. It's jQuery. Nobody. How could jQuery be in the same category as like Django?
Starting point is 00:15:30 Yeah, yeah, yeah. It's even on the front end side of the JavaScript front end frameworks. There's Vue, there's Angular. All those are really legitimate things. jQuery is not the primary way in which people write web applications, but a lot of people use it. So it's in there. All right. So anyway, those two are a little bit weird.
Starting point is 00:15:45 Takeaway, Python is really quite popular and up there. The Python web frameworks, I think there's just so many, they don't filter very high to the top individually. Databases is much clearer. You don't have to talk about other funky stuff. So for the most popular ones, we have
Starting point is 00:16:02 MySQL at 56%, PostgreSQL at 36%, Microsoft SQL Server at 33%, and MongoDB at 26%, which is actually pretty high in my understanding of the world, but that's pretty cool. For platforms, as a developer I work on, not I deploy
Starting point is 00:16:18 my code to, we have Windows at 46%, macOS at 28%, and Linux at 27%. So, again, the most common platform for development is windows so we can't forget them when we build our packages and whatnot right steve dower goes on and on about that yeah just good my favorite part of this these surveys though that these are legitimately good is the most loved and the most dreaded the most wanted section so the most loved languages are rust typescriptScript, and Python.
Starting point is 00:16:47 Those are neat. TypeScript personally drives me a little bit crazy because it's like so picky. It's like the type annotations, but you don't get it exactly right. It's not going to work. Anyway, it's still pretty neat. Rust, I would like to learn. Python, I know something about. The most wanted languages I think is also interesting.
Starting point is 00:17:03 So most loved is I work with it and I love it versus I dread it or i don't get to work with it very often i'd like to do more is the number one python number two javascript number three go go figure it out yeah most dreaded vba and objective c does that surprise you well in pearls in Perl's number three, it's still interesting. It still brings dread. So that's the languages. And then the databases, most loved, Redis, Postgres, Elasticsearch. Again, Elasticsearch is like CSS a little bit to me. Is that really a database?
Starting point is 00:17:37 Anyway, and MongoDB. So those are all quite high. Most wanted database is MongoDB and Postgres are neck and neck at the top. Okay. And you still do both you do a lot of manga right oh yeah i love manga i think it's sweet it's so clean and easy to work with it's been years since i've had to do a database migration and production i love it as in like i change my schema now the app won't run unless i apply this script yeah yeah so anyway uh rounded out most dreaded database, IBM DB2.
Starting point is 00:18:06 Doesn't surprise at all. Anyway, that's the survey. I just want to give a shout out or like a call to the community. If you have any influence on this, find a way to separate things that are unequal, right? Don't put just I do some JavaScript from I do some C++. Those are not equivalent. Or I do some jQuery and are not equivalent or i do some jquery and angular and i do django those are just not even in the same category and it really drives me crazy that they're put this way and it just makes me appreciate the python software foundation
Starting point is 00:18:35 survey more because it had less of this weirdness yeah yeah there's some weird things that get bucketed together but yeah interesting i would say the psf one is more regular wouldn't you say more regular oh yeah nice transition thank you but before we move on there was another and nobody else will care about this but me but what was the other survey that is closing in a couple days uh the psf survey the one at python.org i believe that sees it still okay i don't know where it went see, is it still up there? I don't know where it went, but yeah, it's right there in the middle. Can I mail in my ballot and get it as long as it's postmarked in time?
Starting point is 00:19:14 Well, if you postmark it at the right time, yeah. Sorry, couldn't resist. So, regular expressions. So, I'm sure we've talked about regular expressions before, but they occasionally crop up in my work. I always forget them. I learn them, and then I forget them. I have to learn them all over again. So this is going to be helpful.
Starting point is 00:19:30 Yeah, so Amit Chaudhry, I think, wrote a visual guide to regular expressions. And this came out recently. And this is kind of a very nice, gentle introduction to regular expressions by building up. And I think it helps you build up a correct mental model of how they work. He utilizes visual highlighting, as if he kind of went through with a highlighter pen and highlighted the different things that could be matched. So it goes through a whole bunch of stuff.
Starting point is 00:19:56 It starts with just a specific character. So if you have a string and you're matching the character A or something like that, what would it hit and then moves on to white space and digits and word characters and a lot of these gentle introduction type things come to go through some of the basics and then sort of stop there and what i really love about this is um he talks about some of the more advanced things like pattern negations so like the and why they're why they're weird like slash lowercase d is digits slash uppercase d is everything that's not a digit and some of these uh exclusions talking about anchors like beginning at the end of the line
Starting point is 00:20:37 character sets with brackets and then ranges with a dash within the ranges you talking about repetition and this is kind of something that threw me off when I first learned about them. Using curly brackets. I was used to using star for zero or more items and plus for one or more item, I think, or maybe it's the other way around. Yeah, that's right.
Starting point is 00:20:58 And then, but you can use a question mark for, it only can be one, but it can be there or it doesn't have to be. And then, if it has to be a certain it can be there or it doesn't have to be and then uh the if it has to be a certain number of times you can use curly brackets for saying it needs to be two of these or something like that and then uh goes on and says okay well now you've learned all this stuff how do you put it in place with python and with python you use the one of the ways is the re module for regular expressions so it goes through a quick example of using find all, match and match group, and search.
Starting point is 00:21:29 So if you're a Python developer and you have to deal with some regular expressions, I think this is definitely something to check out. Yeah, it's really nice, and it's a very gentle introduction, so people can just go through the coloring and stuff. Yeah, because normally a lot of these presentations of regular expressions man it's like right only you know you look at like whoa that is a mess and then you know then it's gone like you could write it but you could go back and read it again type of thing yeah yeah yeah so this is nice this is good so yeah cool nice one yeah i can't take credit for that one
Starting point is 00:22:03 though uh somebody else wrote it you probably shouldn't take credit for that one, though. Somebody else wrote it. You probably shouldn't take credit for it. Did you create it? I mean, you probably shouldn't. No, I just brought it up. So I don't really know the whole story with this next one, but I entitled it Taking Credit. And this was based on a GitHub project and a tweet by Tim Nolet.
Starting point is 00:22:21 Tim Nolet, I'm not entirely sure how to say his name. Hopefully one of those works. And he created this project, which is called, let me check it out, Headless Recorder over at Playwright, I believe. Let's see. It is, yeah, it's called Headless Recorder. And so what it does is it allows, it's a Chrome extension that allows you to create scripts that interact with either Puppeteer or Playwright that do just like web automation. A little bit like non-programmatic Selenium or those types of things, right? Yeah. Fine. That's all cool.
Starting point is 00:22:55 So there's a bunch of JavaScript that you write in there. That's pretty interesting. And the tweet says, I'll just read the tweet and then we'll go from there. It says, oh, AWS Cloud, I really do love you. But next time you fork my open source project and present it as your new service, please give the maintainers a short, nice, good job, kids, or something. I mean, it doesn't necessarily have to follow the APL version 2 license and stuff, but at least a little credit would be great.
Starting point is 00:23:19 Wow. So there's also a linked announcement about this thing called AWS CloudWatch Synthetics launches a recorder to generate user flow scripts for canaries, which is you look at the syntax in the examples. It does now say credits based on headless recorder at the bottom, but I'm pretty certain that it didn't say that in the beginning. I mean, I don't have like a diff of the web page but it would not be surprising i wouldn't think he would put that up there if at the bottom it said that so now it does anyway this is not relevant to this project really at all it's more just a conversation about what do you do when big companies adopt your open source project but but don't give you credit i think that's lame well i think it should be even more than that. I mean, I think anybody that,
Starting point is 00:24:06 personally, if somebody else, if I had, like, let's say, I've got a couple small projects that I don't really do much with, and if somebody else took that and forked it and then, like, did something big with it and started making a startup or some money with it, fine, good for them.
Starting point is 00:24:22 But if it's a big company like Amazon? It's a Google, Microsoft, Apple, AWS sort of thing. Anytime, I think credit is due. If you're not the one that came up with it, if you just forked it and ran with it, I think giving some, and that's typical. I mean, we often give credit to say, hey, I ran with it, it started here,
Starting point is 00:24:41 but I did a whole bunch, that's fine. But a big company, I think they should both give credit, and I think some cash should go to the original idea starter. Yeah. Yeah, I hear you. If it's not cash, which, you know, that might be a hard sell, how about as we maintain this project, we sort of forked from your stuff, we'll push changes back to make yours better.
Starting point is 00:25:04 At least some sort of, hey, we've based this on your thing, but by doing so, we're going to make that thing better because we've made a commitment to at least do a little bit of give back, PRs, improvements, right? And also, I don't know, like, I don't know this guy, but at the AWS reIn reinvent conference when they announced this if they said hey this is based on this cool project by tim you know that would raise his profile and i'm sure he would really appreciate it personally a lot of my stuff's under mit and so people don't
Starting point is 00:25:35 have to mention me do anything say anything whatever a few things are not but it's you know a lot of it's just example code and people are like well can i use this example in my commercial application i'm like yes i really don't care if you like recreate my random sample in your project that's fine right i don't don't want anybody to have those feelings but every if i was building something useful i'd at least want you know a shout out i guess that's all he's asking for as well yeah anyway and they did it so that's good they did come around and do it yeah they did i'm pretty sure that was not the beginning situation but now it is and so that's good. They did come around and do it. Yeah, they did. I'm pretty sure that was not the beginning situation, but now it is. And so that's quite good.
Starting point is 00:26:08 And just given the amount of people who are in the Python space, who listen to the podcast, that do open source, I thought this story would be interesting, even though it's technically JavaScript. Yeah. Yeah. I bet you could even run that JavaScript on a Raspberry Pi, Brian. Maybe. So I was just curious, what was the first computer you programmed on so the first
Starting point is 00:26:26 computer that i programmed on was one of those apple 2e's that was beige and had a green screen i believe okay you started on a 2e as well yeah but i that was like in middle school or now maybe maybe even elementary school where it was just you something I went for class. The very first thing that I actually got to sort of sit down and program on, my brother had a Commodore 64, but I didn't really use it for anything constructive. I would say a 286, IBM 286. Okay.
Starting point is 00:26:57 I programmed an Apple IIe at school, but it was confusing enough to me that I didn't run with it right away i kind of dropped programming after that but but anyway i bring this up because i um there's a new computer out and it reminded me of this about the those early computers so or the commodore 64 is kind of the same category so apple 2e was kind of like cool was yeah it was a higher end i had to or commodore 64 was a little bit lower than 2e i guess i would think and then below that is the trs80 from radio shack that's what i had i had my but anyway so the the raspberry pi 400 is out now or it's announced and
Starting point is 00:27:42 it's going to be out by the holidays apparently it's really cool it's like it kind of reminds me of these apple 2es because it's the it's the computer in the keyboard so the the keyboard is the computer and you can even hook up two large monitors to it because it does it supports two displays 4k video it'll do uh two 4k monitors out of your keyboard yeah and uh that's cool this one's got four gigabytes of ram you both do wi-fi and lands it has a hard landline entry point which is good four core 64-bit processor it just looks fun they're telling it as a whole kit for like 100 bucks so you get like you can start somebody up on a computer um i'm covering this because yeah that's super because I was thinking,
Starting point is 00:28:26 geez, do I want to get this for my kid or do I want to get it for me? Yeah, exactly. And it comes with a beginner's guide and shows you how to get started and even includes getting people a little bit started on Python, apparently. So that's good. Yeah. It seems super neat. And the processor is pretty good, actually.
Starting point is 00:28:43 Four core, four gigs of RAM. And it looks like just one of these little, you know, Wi-Fi, USB, like over the little RF radio frequency dongle thing, keyboards that you would get. But that's the whole computer. On the back of the keyboard, it's got the HDMI ports, it's got the other ports, the power, everything. Yeah, so you got to get your own monitor, of course,
Starting point is 00:29:03 but plug it in and you can get started and there's videos on the on the raspberry pi site that are amazing watching this thing go it's it's powering two big monitors and it just feels looks like it's as zippy as a normal computer so i think it'd be cool for educational use and lots of uses uh so it's pretty nice even for just a travel computer a travel computer yeah right imagine when remember when people left their house so imagine it were like that again and then you could go places but if you were just going on a trip and you're like maybe i'll just like need a computer i want to plug in you know bring a hdmi cord plug it into the the tv at the hotel plug it into a some sort of monitor at like some office you're dropping in
Starting point is 00:29:45 on you could just take that and have you know do presentations and stuff oh it's cool yeah because oh like that's true because the hdmi output it's a lot of tvs just take that now too so yeah exactly just bring a little short hdmi cable with you if you need to and then you're good i'm including a linking to a video from Limor Fried from Adafruit. In there she says that it reminds her of the Apple IIe as well. Nice. I'll check that out.
Starting point is 00:30:09 Super cool. So that's our main items. That's quite an adventure. Brian, you got any other things you want to just throw out there real quick? One quick thing
Starting point is 00:30:17 I got reminded I ran across this a while ago and somebody reminded me of it on Twitter recently is Vim Adventures. It's vim-adventures.com Remember the dash? But it's kind of like this adventure game
Starting point is 00:30:32 like these old going through a dungeon sort of thing and picking up treasure and things like that. And you just, it's to help you practice your Vim keybindings while playing an adventure game. So if you're having trouble getting learning Vim, maybe try this try this yeah that looks quite cool actually it's a neat little adventure game now i just want to throw out something i got from tyler petterson just a little bit ago and this kind of comes back to what the language talk around stack overflow that i mentioned. And this is an update for the TOB index, T-I-O-B-E index for November, 2020. And my feeling and my theory is that things like Stack Overflow and whatnot,
Starting point is 00:31:17 those places are often measuring like the pulse of the industry right now. Whereas TOB seems to have a little bit of a latency like how many legacy apps of this style are you working on and this technology and whatnot right so it's a little bit of a a longer term moving average well anyway the headline is november headline python is unstoppable and surpasses java for the first time since the start of the toby index nearly 20 years java and c don't make up the top two positions okay in 20 years wow so python's not a top but it's right below c it's right below c and it's you know it's been a long time coming right so anyway i think this is pretty neat and
Starting point is 00:31:57 tyler thanks for sending that along people can check it out yeah cool ain't no joke but how about a joke a joke would be great all right so uh we've got a cartoon but this one is uh super simple and i think just the the words will do it so this is from geek and poke which has some fun things and the title is you build it you run it it's all about microservices okay okay so there's a woman developer and a guy developer just kind of staring at each other and it says when we decide to create a new microservice we just need 30 seconds to get a blank microservice running in that kubernetes cluster so amazing and they kind of stared each other for blankly for a minute then the woman says
Starting point is 00:32:37 and what you just need a another week to come up for with a funny name for it, two weeks. Two weeks, says the guy. Yeah. Anyway, I thought people running funky named microservices would definitely appreciate that one. Naming's the hardest thing in programming. That's right. It sure is. But not this podcast. That was a lot of fun. Thanks for being here. It was. Yeah, thank you.
Starting point is 00:33:01 You bet. Bye. Bye. Thank you for listening to Python Bytes. Follow the show on Twitter via at Python Bytes. That's Python Bytes was. Yeah, thank you. Bye.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.