Python Bytes - #207 FastAPI as a web platform (not just APIs)
Episode Date: November 13, 2020Topics 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)
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.
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.
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,
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
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.
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,
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
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,
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,
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,
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
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
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.
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
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.
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
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.
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.
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
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,
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
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,
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?
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
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
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.
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
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.
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
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.
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%,
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
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
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.
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?
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.
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
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
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.
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.
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?
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.
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
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?
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.
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.
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
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.
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.
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
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.
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.
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.
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,
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.
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,
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.
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
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.
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
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.
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
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,
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.
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,
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
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.
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
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
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,
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
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
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.
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.