Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book


Transcript #156: All the programming LOLs

Return to episode page view on github
Recorded on Wednesday, Nov 6, 2019.

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:04 This is episode 156, recorded November 6, 2019.

00:10 And we're recording from a special place here at Microsoft Ignite in Florida, live.

00:15 We might be able to hear some background noise, and that's because it's right here.

00:19 And Brian is not here because he couldn't get away. He should have come to the conference.

00:23 So I have not one but two special guests. Dan Bader. Hey, Dan.

00:26 Hey, how's it going, Mike?

00:27 Great to have you here. And Cecil Phillip.

00:28 Hey, what's going on, everybody?

00:30 Hey, welcome back, both of you. Been on independently now together, very quite close together in this little recording area we put together.

00:36 Cecil and I were sharing a mic, so we get to like snuggle up here on the couch.

00:40 You guys will be fast friends after this.

00:42 Yeah, we're getting some intimate time together while we record this podcast.

00:45 All right, awesome. Well, let's start by thanking DigitalOcean for sponsoring the show.

00:50 Check them out at pythonbytes.fm/DigitalOcean. More on that later.

00:54 Dan, there's a lot of debate about how you create a virtual environment.

00:58 I know both of you guys are fans of virtual environment, but there's VE and V.

01:02 There's virtual environment.

01:04 There's poetry.

01:05 There's all these things.

01:05 You've got a recommendation for us, huh?

01:07 Yeah.

01:07 So I wanted to call out or showcase an article that Brett Cannon published recently.

01:14 And so basically, it's about a best practice you can apply when you're running commands like pip install.

01:21 So what Brett recommends in his article is instead of running pip space install in whatever library you want to install, instead you can run python dash m space pip and then run whatever command you want to run.

01:34 Because Brett likes to type a lot or what?

01:37 Because he enjoys typing so much.

01:38 And that's probably why we should all use that.

01:42 So the reason is that if you use this other form, like dash m will basically load a module and execute it.

01:49 You know exactly which Python environment this will affect.

01:53 So if you just go pip install, it would be possible that pip actually points to a different environment.

01:58 Maybe not the one that you think it does point to.

02:01 So maybe, you know, you're accidentally installing something into your Python 2 environment, but you wanted to go into your Python 3 environment.

02:06 That happened to me when I was new.

02:08 I'm like, why is request not here?

02:09 I don't understand what is going on.

02:11 So frustrating.

02:11 Yeah, I think I typed pip instead of pip 3 or something silly.

02:14 I was new and young.

02:16 I didn't know what I was doing.

02:16 I just really like this article because it gave some like pretty clear recommendations.

02:20 And I'm pretty much on board with all of them.

02:23 And, you know, if you follow this format whenever you run pip install, you will always just be 100% sure that you're actually installing stuff into the right environment.

02:33 Because if you hit the wrong environment, you know, you have to go and like uninstall stuff.

02:36 Maybe you end up upgrading something that you didn't want to upgrade.

02:39 And it can get messy.

02:40 And so I just felt like, yeah, that's a good recommendation there.

02:44 And then article worth reading because Brett goes into a lot of the backstory and like why this is a good idea.

02:49 That's really cool.

02:49 My first thought is like, I need to alias this so that pip just means Python 3-mpip.

02:56 Cecil, I know that you are a fan of virtual environments.

02:58 Do you do anything special or do you just run Python 3 or do you just do pip directly or do you do something like poetry or something else like that?

03:06 I'm actually a big fan of pip env, actually.

03:09 Okay.

03:09 And so we do this live stream randomly.

03:12 And we actually showed that off at our last episode, how you could use pip env and pip env.

03:17 For our students, it was really important for us to have like that background information.

03:21 But now they know how like these little bits and pieces go together.

03:25 And having like one command line tool that'll be able to like orchestrate all of that stuff for us like this is like a game changer.

03:31 Yeah, that's awesome.

03:32 So you're doing with Brian Clark, you're doing a Twitch live stream programming series, which is really fun.

03:38 We're going to talk about on Talk Python further down the road, like pretty much in real time close, but in release time far apart sort of thing.

03:46 But yeah, so it seems like there's a lot of beginners in that world.

03:50 And so this is probably a tricky concept for them.

03:52 Yeah, it totally is.

03:53 And so using something like it so much less for them to worry about in terms of like installing and setting up and like what's the right combination of commands they need to use?

04:02 What order I need to run them in?

04:03 If I made a mistake, like how do I back out of it and like restart over?

04:06 That one command, it just kind of allows us to manage environments and manage packages and it just makes it so much easier.

04:12 Super cool.

04:12 Well, we are here at Microsoft Ignite, which is, I had no sense of the scale of this place until I came here.

04:19 29,000 people.

04:20 Yep.

04:21 Ignite is massive, man.

04:22 Because Ignite is so much more than just a developer audience.

04:25 It's developers, it's IT folks, it's CTOs and, you know, all these different types of folks.

04:30 Right.

04:31 All at one conference.

04:32 So, you know, when you bring all those people together, you get a pretty massive turnout.

04:35 And you get a lot of steps in.

04:37 You get a lot of steps in, man.

04:38 So as you can imagine, the conference center is humongous.

04:41 Yeah.

04:41 And so there's sessions all across the conference center, there's sessions across the street and down the street.

04:47 So, I mean, sometimes you got to do a little bit of walking.

04:49 That's right.

04:49 The reason I bring all this up is there was a pretty big announcement here that's quite close to Visual Studio Code, which is one of the most popular Python code editors these days.

05:00 So, you know, tell us about it.

05:01 Yeah, yeah.

05:02 So, like you said, like Visual Studio Code that runs on our desktop runs on Linux, Mac, Windows.

05:06 And then the Python extension has something like, I don't know, like 24 million?

05:10 Yeah, I don't know.

05:11 It's got a mini, mini, mini, mini.

05:12 It's tons of millions of downloads.

05:14 So, 2x is the most popular thing for Visual Studio Code, way over C#, way over C++.

05:18 It's massive.

05:19 Right, definitely.

05:19 And so the Python extension is easily like the most popular extension for Visual Studio Code by like leaps and bounds.

05:25 But one of the big things that we had announced this week was our new Visual Studio Online environment.

05:32 And this is like the real Visual Studio Online and not the old one.

05:35 And when I say that, I mean, so we used to have a product called Visual Studio Online, but that was essentially what turned into Azure DevOps.

05:42 Okay.

05:42 So, Visual Studio Online used to be our CI, CD.

05:45 Yeah, it was hardly even Visual Studio.

05:46 It was like the continuous integration story and like TFS and like all the source control bits.

05:51 It was source control.

05:52 It was ticket management.

05:53 It was bills and those types of things.

05:54 That name was hijacked.

05:56 Yeah, and so, you know, now we're repurposing the name and now Visual Studio Online is exactly what you think it is, right?

06:01 It's Visual Studio Online.

06:03 More specifically, it's Visual Studio Code Online.

06:05 Right.

06:06 Which is so interesting because Visual Studio Code is an Electron JS app.

06:09 So, it's got like this front end and this back end already on your machine, like got Node and then Chrome, like packaged into one thing.

06:17 But now you just put like lots of distance and stuck part of it in the cloud, right?

06:20 Yeah, totally.

06:21 And so, the background of it is a little bit of, so we had Visual Studio Code.

06:25 And we also have some extensions that allow you to do what we call like remote sessions and remote debugging into different environments.

06:32 So, for instance, I could have Visual Studio Code in my machine and I could debug into a Docker container.

06:37 I could debug into a Linux machine.

06:39 I could debug into a workspace that's not on my local machine.

06:42 But then not only can I do that, I can have my environment-specific settings and tools I have installed, extensions and those types of things on that environment and not on my machine.

06:51 So, all that happens is that when I start to remotely connect to that machine,

06:55 I'll just have all those additional things just added to my currently working workspace.

06:59 So, we're like, okay, well, if we can do that, what if we just created like a completely online experience for that?

07:04 So, kind of like what you said, right?

07:06 Like, you know, Visual Studio Code is built on web technology.

07:08 It's, you know, JavaScript and CSS and, you know, those types of things.

07:12 And essentially, they just, they took the editor and they took all the tooling and they put it in a web browser.

07:16 Yeah, it's so cool.

07:17 It's really a nice experience.

07:19 And you get basically an Ubuntu machine and like, you get like a little Docker.

07:23 Is it Docker or just straight VM or what do you get?

07:26 Honestly, I have no idea what type of machine is running on.

07:28 But you get some machine with a terminal that like your stuff lives on, right?

07:31 Yeah, you get a machine with a terminal.

07:33 So, essentially, what you do is you go in and you could like create a new environment.

07:36 Or if you have an already existing Git repo, there's some markup that you could add to your markdown file that'll add like a button in your markdown.

07:43 Oh, is it like the launch binder for notebooks, but instead you like launch in VS Code?

07:48 Right, like, you know, you see launch binder or if you might have seen the thing that says like build succeeded or something like that.

07:53 Like those little tabs, those little buttons you can add into your Git repo.

07:56 So, you can add one of those that just says create environment.

07:59 And what will happen is per person, right?

08:02 Like you'll get an individualized environment for yourself, right?

08:05 So, if I have my GitHub repo and, you know, Dan can click the button and you can click the button and I can click the button.

08:11 But we'll have three different environments pointing to the same repository.

08:14 I see.

08:15 So, it's like spin up a little dev machine, but it links back to the source control.

08:18 Right, which is great, right?

08:20 Because when you think about companies that have situations where it takes really long time for us to do setup, but I got to install dependencies and I, you know, like there's multiple things that need to happen before I can be even started to become productive, right?

08:32 I got to install this OSS thing and I got to install like SSL and like stuff has to happen, right?

08:37 Before work can actually happen.

08:39 Now we could have these predefined environments where I could just be like, hey, let's just create this environment for this particular code project.

08:45 And now we could just get to work.

08:46 And it's running in the browser.

08:47 I don't have to install anything on my machine if I don't want to.

08:50 And I have everything I want like right there.

08:53 Yeah.

08:53 Like just running inside of the cloud.

08:54 That's super cool.

08:55 You could use it from an iPad.

08:56 You could use it from like a Chromebook, other places where it's hard to run code, right?

08:59 I've had teammates that have run it from iPads, from their cell phones, from all over the place.

09:04 Hey Siri, refactor this.

09:06 What was really cool, if you remember the keynote, Amanda Silva was telling us a story about how she ran it from inside the airplane.

09:13 Like she was debugging the demo that she showed using the project for the demo.

09:19 On the airplane Wi-Fi?

09:20 On the airplane, which is an airplane Wi-Fi.

09:22 And if anybody's used airplane Wi-Fi, we know that's not like the most.

09:25 Yeah, that's sipping through a straw.

09:26 The most high bandwidth situation.

09:28 That's cool, man.

09:29 But it was super cool.

09:29 So people can try this now, right?

09:31 And the link is in the show notes.

09:32 Yeah, people can definitely try it out now.

09:34 Let us know what you think about it.

09:35 I ran it myself personally just the other day.

09:37 The Ubuntu machine that it comes with comes with Python 3.8 by default.

09:41 Yeah.

09:42 Which is great.

09:42 So I didn't have to install it or do anything with it.

09:44 And I think that's also really cool because Python 3.8 is like what?

09:47 Like two or three weeks old as of today.

09:49 Yeah, it's brand new.

09:51 Yeah, it still has that new Python smell.

09:52 These are brand new, fresh machines and images that you get to run your code on.

09:58 So I think this is really cool.

09:58 That's a great one.

09:59 Thanks for sharing that.

10:00 Now, before we get on to another one, let me tell you about DigitalOcean.

10:03 They're sponsoring the show.

10:04 All of our infrastructure runs on DigitalOcean.

10:07 Super, super happy.

10:08 We ship like 15 terabytes of data through there.

10:11 We have millions of requests and just love, love using it.

10:15 So if you want something like we got going on here, check them out at pythonbytes.fm

10:18 slash DigitalOcean.

10:20 Now, this last one, speaking of Python 3.8 and 3.9, the next version of Python should

10:26 come a lot quicker because we've now switched from an 18-month release cycle to a 12-month

10:32 release cycle.

10:33 This is a project that Lucas Link has been working on for a long time trying to make this

10:36 happen now that he's in charge of the release management.

10:40 And so Brett Cannon, speaking of Brett Cannon from earlier, he sent out a message from officially

10:45 from the steering council, which is a cool way to announce thing, that after a long discussion

10:48 on changing the cycle, we've decided to accept HEP 602.

10:53 And it's now yearly, which I think is great because it's just weird to have like alternating

10:58 times of the year or like this.

11:00 It just seemed one, really long and two, kind of weird.

11:03 Like, what do you guys think about this?

11:04 I think this is a good change because it kind of puts everything on a very regular cadence

11:10 in the year.

11:11 So, you know, when you think about when Python is, PyCon is happening in the year, I guess

11:16 if you have the sort of 18-month release cycle, you're always kind of in a different phase

11:20 of development and preparing that release.

11:22 But if it's on a 12-month fixed cycle, then you can always say, okay, you know, we're going

11:25 to get ready to, I don't know, finalize or we're like in this phase, you know, getting

11:29 ready to a beta version or whatever during that time, which I think makes planning a lot

11:34 easier for everyone.

11:35 And yeah, I can understand like the rationale for that going to a 12-month cycle.

11:42 Makes sense to me.

11:43 Yeah.

11:43 I'm actually pretty happy to see this.

11:44 I think what I hope to see out of this is just, you know, we'll be able to see new features

11:49 faster, try them out faster.

11:50 And, you know, you won't have to wait until like those official releases come out on that

11:55 longer cadence.

11:55 I think it's the same with like most development environments is, you know, unless it's an official

12:00 release, most people really don't play around with like the betas and the alphas as much.

12:04 Yeah.

12:04 And so it's only when like the official releases come out where you get like most of the developers

12:08 and companies really jumping on new features.

12:10 So I think with this shorter cadence now, we should be able to get, you know, more feedback

12:14 and I guess, you know, people to be able to iterate faster and like some of these new cool

12:18 things that are coming out in the language.

12:20 Yeah.

12:20 We don't have to have as much patience.

12:21 We can get right to the cool new features that are coming out.

12:23 Yeah, exactly.

12:24 Yeah.

12:24 So I'm really excited about this.

12:25 I actually linked not to the official announcement directly, but to a Reddit thread because the Reddit

12:30 thread has a bunch of feedback and it's, I would say it's pretty mixed.

12:34 It's like 50, 50 positive, negative.

12:36 It's really, it's an interesting look and it's just side of what people are thinking

12:40 intersected with the weirdo Reddit world.

12:42 So that's, that's pretty cool.

12:44 But my, you know, that people are saying, well, it's going to be shorter.

12:47 So there's not as much time for testing.

12:48 So I'm concerned about quality, but there was a lot of pressure on that 16th and 17th month

12:54 to get your feature in.

12:56 Cause if you don't get it, it's a year and a half.

12:58 You got to wait if you miss that deadline.

12:59 So you're going to scramble, get that in.

13:01 Now it's takes the pressure off a little bit.

13:03 So I think it's actually a pretty positive thing.

13:05 Dan, you want to tell us about this next one?

13:07 Another release story?

13:08 Yeah, sure.

13:09 So I feel like this is the Brett Cannon and Lukasz Lange episode of Python.

13:13 Yeah, I got to those guys.

13:14 So yeah, I've got another cool announcement.

13:17 So Black, which is the uncompromising code formatter for Python code, just had a new release.

13:23 So this version is called 1910 beta 0 or B0.

13:28 And the way I understand it or the way I interpret Lukasz's Twitter feed, they're actually getting

13:34 ready for releasing a stable version or stable release of Black, the first actual stable release

13:40 for Black Friday this year, which is kind of a beautiful thing, how the naming scheme is

13:46 working out there.

13:47 And so maybe if you're listening, you don't know what Black, the uncompromising code formatter

13:52 is.

13:53 So it is essentially a tool that enforces a certain Python formatting standard or like a

13:59 style guide.

14:00 So it will reformat your code to be PEP 8 compliant.

14:04 And it, well, the great thing is it will reformat your code and it would also call you out on any

14:10 sort of, you know, anything that's misformatted or not following the standard.

14:13 So it's a really great way to kind of establish a consistent code style in a large code base and then

14:19 put that in place on a CI system, you know, continuous integration.

14:23 And it just makes sure that you never have to argue about code formatting in a pull request again,

14:27 ever again.

14:28 You know, if there's ever a problem, you just run Black again and it's great.

14:31 And it's honestly, it's one of my favorite tools.

14:33 Like I put it into every Python code base that I work with.

14:35 It's been super stable, even though it's, it is still in beta technically, but I've been running

14:41 it in production, if you will, very happily pretty much since it came out.

14:44 And if you just want to try it out, there's also a interactive playground on the web at

14:49 black.now.sh.

14:51 That's really cool.

14:52 I didn't know about that.

14:52 Yeah, it's pretty cool.

14:53 Like you can just copy and paste a bunch of code there or just enter code and it will show

14:57 you what Black would do to the code and how it would reformat it.

15:00 And yeah, highly recommend it.

15:02 It's honestly one of my favorite, most favorite tools there.

15:04 Yeah, super cool.

15:05 It'd be great to have that come out and be basically totally stable.

15:08 Cecil, do you guys use that on your live stream?

15:10 I think by default, we use this thing called Auto PEP 8.

15:13 So when I say by default, we use Visual Studio Code, as you can imagine.

15:16 Yeah.

15:17 And the extension, when you save it, auto formats it, you know, based on if you have that setting

15:22 turned on or not.

15:22 And if you don't have like a formatter installed, it'll ask you at the bottom, which one you want

15:28 to use and then it'll install one, right?

15:30 So it's Black is an option.

15:31 I think there's one called YAPF, YAPF, or I'm not quite sure how you pronounce that one,

15:37 but there's that one.

15:38 Yet another formatter or something.

15:40 Right, right, right.

15:40 And then I think the default one that it uses is Auto PEP 8, right?

15:44 So if you just like click OK, it'll just use Auto PEP 8.

15:47 Or you could like select one of the other options as well.

15:49 Cool.

15:50 But I'm kind of interested to try this out.

15:51 And I want to kind of see like what does the configuration look like and like how can

15:54 you tweak the settings and those types of things.

15:56 Yeah, cool.

15:57 I think it takes away a lot of the debate.

15:58 My understanding is like it's kind of like the Model T.

16:01 You can have it in color you want as long as you want it in black, right?

16:05 So there's like not a lot of debate about the format.

16:07 It's just like it does what it does.

16:08 Exactly.

16:08 So speaking of like formatting options, there's, it's basically none.

16:12 So which is kind of cool because it prevents any arguments that you otherwise might have

16:17 with a team about, you know, preferences.

16:19 So yeah, it's like a philosophical choice there that you're making with this tool, I guess.

16:24 Pretty cool.

16:25 Cecil, you also talked when you talked about Visual Studio Code, you just start by pointing

16:29 to GitHub repo.

16:29 Yeah.

16:30 And you can like, once you load it up, you can navigate around within Visual Studio Code,

16:33 right?

16:33 Yep.

16:34 So, I mean, I think everything that we do as developers, like at one point in time, like

16:39 touches GitHub.

16:40 Like, I think it's almost impossible today to write code that wasn't on GitHub or touched

16:45 GitHub or use something like that was associated with GitHub at some point.

16:48 If it wasn't for the weekends, imagine the streaks.

16:50 Right?

16:51 Exactly.

16:52 So, you know, so GitHub is obviously a super important tool for us, for our industry.

16:55 And, you know, they've been releasing tons of cool features like over the past couple

16:59 of months.

17:00 And one of the features I want to highlight today is their code navigation.

17:04 So inside of it, what you could do now is, you know, if you go to their, if you click on

17:08 a file and you go to like a code view, you could essentially like, you know, click on functions

17:12 and you could see things like, where was it referenced and where the definitions of the,

17:16 where the definition of the function was.

17:18 And so you can imagine if I had like one super huge code file that I have open and

17:22 I'm just looking at it in the default browser inside of github.com, it makes it so much easier

17:26 now for me to like jump and see where was that defined and whatever the case is.

17:30 And so now navigation within the browser is super easy.

17:32 That click and go to definition is so cool because otherwise it'll even go cross file,

17:36 I think within a repo.

17:38 It's pretty killer.

17:39 It's really cool.

17:40 And not only it supports Python, obviously, but it supports tons of other languages.

17:43 Like I think it supports Go, it supports JavaScript, Ruby, PHP, again, like there's tons of language

17:49 support, right?

17:50 But obviously like we're going to be a little bit biased and we're going to, you know, make

17:53 sure we try out the Python support inside later.

17:55 Yeah, that's right.

17:56 We tried it out.

17:56 I even linked to a file where we know that it works from one of my courses.

18:00 So this last one I want to talk about, it's going to sound like a joke, but I really

18:04 mean it as like a legitimate thing.

18:07 I got a joke for you later.

18:09 This thing I want to highlight is called LOL commits, like laugh out loud commits.

18:13 And the subtitle is selfies for software developers.

18:16 So the idea is you install this thing and whenever you do a git commit, it will take the git commit

18:23 message.

18:23 It will take a screenshot or take a shot of you with your webcam and then it'll generate

18:28 like a meme like in picture with your commit message on there.

18:33 So it will give you like this crazy, you know, like you could make a face like you're

18:38 happy or sad.

18:39 Did it work out?

18:39 Did it not?

18:40 Why?

18:40 You know, are you fixing a bug?

18:41 Is it a fun new feature?

18:42 And so you can do this really cool like sort of meme looking picture here.

18:46 And then you can get plugins for like Slack and Twitter and stuff.

18:49 And you'd like, you know, like post these pictures back up to like say your team Slack.

18:53 So someone not just knows there's a commit, but they can see how you felt about it.

18:56 They can see the message.

18:57 What do you guys think about this?

18:59 I don't know how I'd never heard about this until you mentioned it, but this is like the

19:03 coolest thing ever.

19:04 This is going to make like committing codes so much fun.

19:06 I know.

19:06 I'm going to pay so much attention to the git commit message now.

19:09 You're just going to be committing like all day, every day.

19:11 And I'm like, I got to get this committed.

19:12 I got to get this committed.

19:13 But I think this is super cool, man.

19:15 I definitely want to try this out.

19:16 Yeah, it looks pretty fun.

19:17 It's very understated.

19:19 Like, you know, it describes itself as being like the single most useful piece of software

19:25 known to mankind and stuff.

19:27 But no, in all seriousness, it's fun.

19:29 It talks about like a low repository where you commit these or like you can create animated

19:33 GIFs of like your commits over time and like all sorts of weirdness.

19:36 So it's pretty fun.

19:37 I just thought, you know, maybe this will like make working in teams a little more fun.

19:40 Dan, what do you think?

19:41 I think this is awesome.

19:42 Like just looking at the website there, you apparently can have little, you can write your own

19:46 plugins or there's different filter options so you can get like a unique style for your

19:50 commits.

19:51 I'm wondering if, you know, how frustrating this could be if you're accidentally maybe

19:55 lol committing something where, I don't know, you know, you're waking up in the middle of

19:59 the night and just got to get some code out and maybe sitting there not really dressed yet

20:03 or whatever.

20:04 Oh no, I forgot about the walkman.

20:06 Okay, I'm not going to go into details of how I like to work, but awesome.

20:12 This is great.

20:12 Yeah, yeah, it's pretty funny.

20:14 But yeah, it seems like it actually could foster a little bit of team humor, but also

20:18 connection.

20:19 Oh yeah.

20:19 Right?

20:19 Rather than just adult commit logs.

20:20 Looks fun.

20:21 That's it for our main items.

20:23 Dan, anything else you want to just throw out there quick?

20:24 I would love to, you know, speaking of the latest release of Python 3.8, which just happened

20:29 two weeks ago, I think.

20:30 So at RealPython, we've just released an article highlighting all the new features in Python

20:36 3.8 and kind of going over the, you know, all the nice and interesting new features that

20:40 are in there, like the walrus assignment expressions and also stuff like the syntax warning that's

20:45 going to, you know, it's a new type of warning that's going to tell you about maybe some cases

20:48 where you're using the is comparison instead of the double equals sign and stuff like that,

20:53 where previously you would need a linter to highlight that.

20:55 Now actually Python is going to call you out on that stuff, which is pretty cool.

20:58 And yeah, that's something we just published on RealPython.

21:01 Gerard and Achiella did a fantastic job there.

21:03 And I found that personally also very helpful, just getting up to speed with the latest changes.

21:07 Yeah.

21:08 Awesome.

21:08 Your articles are great.

21:09 Bookicles, like we got to give them like a proper name.

21:12 They're a little bit longer than our...

21:13 Bookicle.

21:13 Yeah.

21:13 I like that.

21:14 Yeah.

21:15 Of course too.

21:15 That's great.

21:16 So very nice there.

21:17 Cecil, anything for you?

21:18 What are you up to these days?

21:20 Sure.

21:20 I definitely want to call out the weekly stream that we do.

21:23 Me and my buddy Brian Clark do a very introductory learning Python stream every Wednesday.

21:28 It's at 11 a.m. Eastern Standard Time.

21:31 And essentially we've just been going from the very bare bones all the way up to, you know,

21:36 carving different features of Python and things like, you know, what's a function and what's

21:40 a for loop and like, you know, some of those types of things.

21:43 Again, we just try to be very beginner friendly, try to be just open to everyone.

21:47 But it's a really fun time, right?

21:48 Because it's not just me and Brian like going back and forth, talking to each other about

21:52 Python, but we get tons of questions from the community, tons of questions from folks

21:56 inside of the stream.

21:57 Yeah.

21:57 It's super interactive, like way more than even webcasts or something like that.

22:00 It's really cool.

22:00 Yeah.

22:01 Super interactive.

22:01 You know, it's really cool when they ask a question like, oh, hey, what if I change this

22:06 to this thing?

22:06 Or what if I remove this line?

22:08 Or what if we try to do things a different way?

22:10 You know, we could do all of that on stream.

22:11 It gets recorded.

22:12 And then now not only are they learning from us teaching them, but we're also learning

22:16 too, because now there's just all of these different perspectives and scenarios that we're

22:20 trying out live.

22:21 Have you heard about this library?

22:22 Does it all together or whatever?

22:23 Yeah, exactly.

22:24 Exactly.

22:24 Awesome.

22:25 Yeah.

22:25 So I'll definitely throw a link to that in the show notes.

22:26 All right.

22:27 Last for me, the Python Software Foundation yearly survey is out.

22:32 So this is the biggest survey that gives us a look inside the trends.

22:36 And it's in partnership probably with JetBrains.

22:37 It was last year.

22:38 I don't know if it is this year, but I'm guessing that's the case.

22:40 And they just do a super good analysis.

22:44 And yeah, please go fill it out because it lets us know what the world's up to.

22:49 We already did ours.

22:50 So it's your turn now.

22:52 Be sure to get to that.

22:53 And also, I want to announce a new course on Anvil.

22:56 I don't know if you all are familiar with Anvil.

22:57 Anvil is a web framework, but it's not like Flask or Django.

23:00 Some people think, should I do Anvil?

23:02 Should I do a Flask or Django?

23:03 This is really different.

23:04 If you've ever tried to build web apps and you're like, I don't want to do JavaScript,

23:08 CSS is like a nightmare.

23:10 I don't really want to work with databases.

23:12 All this deployment is a challenge.

23:14 All that kind of stuff.

23:15 I just want to do Python, maybe for an internal app or something cool like that for your company.

23:19 This is a framework that will run in the cloud.

23:23 It will let you write server-side Python code, design the UI with a drag-and-drop widget-y type

23:29 thing, pretty much like ASP.NET Web Forms, actually, way back in the day.

23:33 And the big deal is the front end runs Python in the browser super well.

23:39 It is ridiculously cool.

23:40 You build a spa, a single-page app, in Python, which is actually kind of a dream.

23:45 So check it out at talkpython.fm.

23:47 The course is free.

23:48 You can play around with it.

23:49 I thought I just put this one out here for people to get exposure to the courses.

23:52 That actually sounds pretty cool.

23:54 Do you know if it's doing like a WebAssembly thing or is it like translating Python to...

23:57 I had a Meredith, the guy behind the show, and another guy on the show, and I'm so sorry,

24:02 I forgot his name, to talk Python, to talk about Sculpt.

24:05 They're using Sculpt.

24:06 Okay.

24:06 Which is a JavaScript implementation of the interpreter.

24:09 So it doesn't compile it to JavaScript.

24:10 It has like a JavaScript runtime that is like CPython, I believe.

24:15 Okay.

24:16 But it's not using WebAssembly.

24:17 The reason it's not using WebAssembly is the interaction between the DOM and WebAssembly

24:21 is actually very slow.

24:23 And this is like a super chatty communication between the Python bits and the web UI.

24:28 And it's actually slower in WebAssembly until they can improve that cross WebAssembly DOM

24:34 story.

24:34 Okay.

24:35 But it's primed for like a good WebAssembly story, isn't it?

24:37 It kind of feels like that's what it would be.

24:39 It should be.

24:39 But I guess I completely understand, right?

24:41 Because you'd go from Python to JavaScript and then JavaScript to WebAssembly.

24:46 To WebAssembly, yeah.

24:46 There's this whole interpreter on top of an interpreter on top of an interpreter thing

24:50 that's going on.

24:50 Yeah, yeah.

24:51 And so if you have like a fire and forget, like something happens in WebAssembly, it's

24:54 fast and good.

24:54 But if you're like doing super quick back and forth between the DOM, apparently that's slow.

24:58 All right.

24:59 So last thing, time for a joke.

25:01 Now, I told you my LOL commits was legit.

25:03 I got another LOL for you, LOL code.

25:06 So LOL code is this official language specification.

25:10 Last time I checked, it was on level, it was level two.

25:13 Like 1.2 was, no, no.

25:15 Hold on, I think it's at a different level now.

25:17 Anyway, it's an official language based on LOL code.

25:20 So this meme is passing a little bit in time.

25:23 But, you know, there's like the LOL cats with all the weird like cat speak on the images with

25:28 like a funny cat, like high world with HAI world, you know, and like weird stuff.

25:33 So this is like a programming language derived out of that.

25:36 And it's a joke, but you can literally run it.

25:40 Like there's a command for getting started.

25:41 You get clone the repository, you see, make it, and then you're ready to log cat it, log code it.

25:47 So I just want to call out a few things of the language features here because they're pretty incredible.

25:51 Yeah, we're on the spec 1.2 right now for the language.

25:54 So if you have like a comment, you'd have something like, I has a var.

25:58 And then if you want to have a comment, you say, btw, by the way, var is null and untyped.

26:03 Things like that.

26:04 It has some really funny like error handling.

26:08 So you have try, catch, but you don't say try and catch.

26:10 You like do the good part.

26:12 And then the good part is awesome, thanks.

26:15 And then the catch part or the accept part is no, oh no.

26:19 Let's see, the ifs statements are pretty awesome.

26:24 Like, oh really?

26:26 Yeah, really?

26:27 And then else if is maybe.

26:29 And then else is no way.

26:31 But the best I think really has got to be the switch statement.

26:35 So maybe a little not safe work, but it's just letters.

26:39 So I'll just say them out.

26:40 So if you want to like do a switch statement where maybe you have R or Y or G or B as colors,

26:45 like as strings, you could say color, WTF, question mark.

26:49 Oh my God, quote R.

26:51 And then you have your block.

26:53 Oh my God, quote Y.

26:55 You have your block of code.

26:56 And then the default case is OMG, WTF.

26:59 That's the default in the switch.

27:00 So this is just such a crazy language.

27:02 But the thing that's even more crazy is somebody built an interpreter or a compiler for it.

27:06 I think what's even crazier is that there's a spec here.

27:08 And as we're looking at this spec, we're literally like scrolling and scrolling and scrolling.

27:12 Like there is 507 lines of specification here that defines how this language even works.

27:19 I think I got to try this out, man.

27:20 Like this is crazy.

27:21 It's a joke, but you could, it's probably Turing complete as well.

27:24 Yeah, apparently this got started in 2007.

27:27 And it's the latest update to the spec is from 2014.

27:31 So it's super cool that this has been maintained and updated since then.

27:35 So how about that?

27:36 A practical joke for you all.

27:37 Yeah.

27:37 Is there a just-in-time compiler for that?

27:39 Oh yeah.

27:39 I don't know.

27:40 I actually don't even know what the performance looks for a lol code, but it's probably pretty

27:45 funny.

27:45 Are you going to port talkpython.fm to that, the lol code?

27:49 Yeah.

27:49 I'm thinking about rewriting the websites.

27:50 And this is a real strong contender right now.

27:52 Nice, nice.

27:53 Because I just be laughing every day.

27:55 I'm like, it's a bug, but it's hilarious.

27:56 Look at it.

27:56 All right, guys.

27:57 Well, thank you so much for being on the show.

27:59 It's been really good to have you both here.

28:00 It's been great.

28:00 Thank you.

28:01 Yeah.

28:01 Thank you, man.

28:02 This has been awesome.

28:02 Yeah.

28:02 Bye, guys.

28:03 Thank you for listening to Python Bytes.

28:05 Follow the show on Twitter via at Python Bytes.

28:07 That's Python Bytes as in B-Y-T-E-S.

28:10 And get the full show notes at pythonbytes.fm.

28:13 If you have a news item you want featured, just visit pythonbytes.fm and send it our way.

28:17 We're always on the lookout for sharing something cool.

28:20 On behalf of myself and Brian Okken, this is Michael Kennedy.

28:23 Thank you for listening and sharing this podcast with your friends and colleagues.

Back to show page