Transcript #62: Wooey and Gooey are simple Python GUIs
Return to episode page view on github00:00 Hello and welcome to Python Bytes where we deliver Python news and headlines directly to your earbuds. This is episode 62 recorded on January 25th 2018 I'm Michael Kennedy and I'm Brian Okken and We have a bit of a surprise and some pretty excellent news to share with you all this week So before we get to that, let's say thank you to data dog Python bytes FM slash data dog. Check them out They're doing really cool stuff. We'll tell you more about it later Hey Brian, what's the surprise? Actually, this is funny because you told me that Dan was gonna be on the show with us We've got Dan Bader here. Hey guys, how's it going? Hey Dan. Hey Dan, welcome to the show I also wanted to bring up some news with him because Dan is taking over real Python. That's awesome Let's jump right into that. So Dan is just coincidentally gonna be on the show I was supposed to meet with him like Dan just you know We're doing the recording now. We got to move it or you can just stick around and be part of it. So Dan Nicely agreed to be here. Yeah, I literally picked up the Skype call and it was Brian and Michael on the call No, no, we had some pre-planned That's what it feels like a little warning Yeah, but coincidentally the very first thing that you chose brian also has to do with dan bader has nothing to do with why he's here Though it doesn't make sense for me to tell anything about it. So dan, what's going on with you taking over real python?
01:15 Yeah, well, that's pretty much what's going on moving forward I'll i'll run real python.com and you know all the social media stuff the newsletter And it's just been a pretty crazy couple of weeks for me to, you know, get like work myself into the site and like understand what all the content is there and actually also rewrote the whole thing and put it on Django.
01:35 And that was a lot of fun and a lot of work too.
01:39 And yeah, so basically, you know, I, at some point, a couple of months ago, I reached out to to Michael Fletcher and Jeremy, and just asked them if they were interested in potentially selling the site.
01:51 and we worked out some deal over the last couple of weeks.
01:54 And yeah, so moving forward, I'll be running realpython.com.
01:58 And I think it can grow into a really, really fantastic resource for Python developers on the internet.
02:04 There's a ton of really, really good guides and solid tutorials, and it's just a treasure trove of content.
02:11 Yeah, I think it's a great thing, because I'm going to link the announcement email that the previous Michael, I think Michael sent out.
02:19 But the reason why they're letting this go is not because of anything bad.
02:24 They're they're being successful in their own careers and need to move on and do other things.
02:29 So I'm glad somebody's going to take it over and I'm excited that it's you.
02:33 Yes, I'm here. Yeah, that's really awesome. Dan, what's the plans? Where are you going with this?
02:36 With that sort of transition? It's always I think it's always really easy to break something that fundamentally worked well.
02:44 And I don't want to do that, right?
02:46 So I'm working really closely with everyone on the team.
02:50 Like actually, Michael just published a fantastic Docker and Python wheels tutorial on realpython.com.
02:57 And so I'm sort of more like the managing director, and I'm working with a bunch of authors to put really, really awesome content on the site.
03:03 And I think that's also where the biggest value is on the site, right?
03:07 Just a lot of free, really, really good content.
03:10 I mean, it's getting more, It's getting close to a half a million page views a month.
03:14 So it's a really, really popular resource for Python.
03:17 And I think I want to grow on top of that, you know, and just have it grow even further and have like really, really awesome tutorials and guides that people can go to and learn about Python, learn how to program Python, learn about web development with Python, and just turn it into a really, really awesome and nice community that people love going to and like a really good resource that they enjoy learning from.
03:39 That's cool. I know you've done it before and I think you can do it.
03:42 Does this mean that any of your other stuff is going to slow down?
03:44 Are you going to slow down activities on any of your other projects that you're working on?
03:49 Or do you just sleep less?
03:50 Probably means I need to grow a couple more arms so I can, you know, write more, more content, record more videos.
03:57 I don't plan to, like I haven't really fully made up my mind yet.
04:00 I mean, to be honest, like one of the challenges with my stuff was that it was all under a personal brand of sorts.
04:06 And I think that's really, really great.
04:09 But the challenge is that it's very hard to kind of bring in some other people and say like, "Hey, you know, this person is an expert at web scraping." Like, I don't know a whole lot about web scraping, for example, but it always felt like a little bit...
04:22 I didn't really feel supernatural, you know, to put that on my own, like, private blog.
04:26 You know, that's how I started out, like, just started blogging on my own, like, private portfolio site.
04:31 And now it's turned into something bigger, and I'm offering courses and stuff.
04:35 But the challenge was always like you're getting, I don't know, you're buying a ticket for some to see some some show like some band play and it's like some someone completely different there.
04:43 And a lot of cases like these tutorials were actually better than my own stuff.
04:46 But it just didn't really feel natural.
04:48 And I think with real Python, the expectation is much more that, hey, this is everything about Python, and not necessarily from any one single person that's kind of driving all of that content.
05:00 And I think, you know, it could go either way.
05:03 Like maybe in the long term, I'll actually merge my own stuff with like merge it 100% together with real python.
05:08 And I'm just another author on real python or I'll actually keep it separate.
05:13 I think in the beginning I don't want to, you know, move too quickly because it's again, it's very easy to break something that works, but it could happen. I don't know yet.
05:20 Okay. Well moving on.
05:23 Yeah, congrats, Dan. That's cool. I'm looking forward to more nice stuff coming from there.
05:28 So, Brian, you know that I've kind of somehow put us out there as like carrying the torch for Python GUIs with my, "This is a weakness we need to work on," and then we got a lot of feedback and both, you know, a lot of people agreed with that.
05:41 We had a lot of feedback and a lot of people agreeing, but also a lot of people saying, "Hey, it's working great for me and this is what I use." So that's wonderful.
05:48 I really appreciated that because there were some things that I didn't know about, and some of them are really interesting and simple.
05:55 Some of them are more full-featured.
05:56 I still stand behind that. I think this is actually a place where there needs to be a lot of reinforcement to make it more solid in the world.
06:04 But I want to introduce you to two things I'd never heard of and they're surprisingly similar in their name.
06:11 One is called WUI and one is called GUI. Have you either of you heard of WUI or GUI?
06:16 No, but both seem like horrible names to find on Google, although the projects themselves are awesome.
06:24 Brian? Yeah, well I get, I mean I wonder if they're related because I get GUI that it's like GUI but it's spelled G-O-O-E-Y but maybe WUI is just a, I don't know, it's, who knows. So here, yeah, I think there's maybe a relationship between these. So let me tell you what WUI is and while I'm at it, why don't you guys click through the link and go to the demo server which is at the bottom of that page and just like run one of those. So what WUI is, is it's a Django app that that creates an automatic web UI for Python scripts.
06:58 So if you have some sort of command line script, then, but you somehow want to expose this to people who maybe don't want to run it on their own computer, but you don't want to write a full web application, what you can do is you can basically give it the command line arguments that it needs, and say like, one of the examples of solving like a chess problem or something like that, and one of the command line arguments is a number, And so there's just a numerical dropdown for that.
07:25 And you press go and it runs on the web server instead.
07:29 And so there's a cool app on Heroku that you can go check out and play with.
07:33 And that's pretty cool.
07:34 What do you guys think of it?
07:35 - I think it's a fantastic idea.
07:36 Like the last job I had, we were working with a data science team and they were producing all of these scripts that were in some case like running like really important like processes for that business.
07:48 And it was always a challenge to get that stuff to run, like just as a one-off job.
07:53 And I feel like this Wooly thing, I mean, it would be amazing, you know, if you could just host that in the cloud somewhere and you have this interface to kick off these jobs.
08:01 And then, I mean, I like what it's doing with the outputs as well.
08:04 Like this cat picture example, like it actually gives you these downloadable images.
08:09 So it's not just throwing a bunch of text back at you.
08:12 And I think that's pretty cool.
08:13 - Yeah, yeah, yeah.
08:14 It's pretty cool.
08:14 Brian, do you see a use for this?
08:15 - Yeah, like a lot of times we'll, for things like this, we've been actually doing small Jenkins jobs that you just push to start, but this seems pretty much a lot easier.
08:27 It's pretty neat.
08:28 - Yeah, it's pretty cool.
08:29 Okay, so, I think the WUI part must be for web GUI, and then GUI is just a GUI.
08:35 So this one is similar.
08:37 It'll turn almost any Python command line program into a full GUI application with one line.
08:44 So if you check out the screenshots here, this one is really cool.
08:47 So it'll create these sort of full desktop applications.
08:51 Like the example that they have in the screenshot is really like a Windows application.
08:57 And it has a nice little header with a description.
09:01 It's got the arguments that you can, they're either like options, selects, or places you type.
09:07 It's really, really similar in the same idea, but this is actually, you could package this up with say, Was it briefcase from Toga or from B-Ware guys?
09:18 Or you could package up with CX freeze or something like that and just say, "Here, we built an application." The word Python doesn't have to appear in that statement, right?
09:26 What do you think, Brian?
09:27 - Of course, I'm often building tools for development teams.
09:32 And for something like that, I think that's a great idea.
09:35 So instead of having somebody that's not used to working on the command line so much, be able to give them a command line tool where it describes all of the input.
09:44 - Yeah, yeah, it's cool.
09:45 - Again, these aren't like generic, you can build any application with this.
09:50 These are still sort of shims that bridge command line programs to user interfaces, but it's not, this isn't the final solution.
09:58 - No, this certainly doesn't cover everything, but this covers like a really quick, hey, I want to take some arguments from a user and I want to be able to click a button, but I don't want the, you know, you're not going to go to like the secretary at a dental office and say, okay, you're gonna need to pip install the requirements and then run the CLI command and then the thing is gonna work, right?
10:17 But you could give them this and like the same effect would basically happen, right?
10:21 - You know what it reminds me of?
10:23 There's this GUI version of curl, like the C URL, the download command.
10:29 And that's something that somebody had to build around CURL or like, you know, recompile it and add all of that GUI stuff.
10:35 And with this GUI framework or tool here, it looks like you could just take any Python script and basically have something really similar, like some kind of Windows front end, or I feel like this is cross platform.
10:47 - I think so, yeah.
10:48 - And just have that within a couple of minutes potentially.
10:51 So this is really cool.
10:52 - It's really tricky.
10:53 Really a sweet trick for a nice, small CLI.
10:57 What would be the GUI equivalent of a CLI app?
10:59 Yeah, for sure.
11:01 And one more shout out I wanna give to you.
11:02 I can't remember if I already did this, 'cause this is like week three or four that we've been on this journey, but Toga as well from the Beware guys.
11:10 So they're doing pretty good stuff.
11:12 This is like a framework that lets you build truly native apps, which is really cool, but I feel like it's not quite polished enough for people to be building full on things with.
11:23 And mostly what I mean around that is there's, the two things you're like, oh, these are really awesome, let me check the, you know, like the two we had the conversation around where you were able to run the demo server and get the cat pictures, or you were able to see these awesome screenshots of like all these examples.
11:38 And I feel like the Toga project could totally use some like showcase of what people have built because right now there's like really none.
11:47 And so if anyone's built anything cool, I try to work with the guys over there to showcase what you've already built 'cause I think that would make a big difference in the adoption of that.
11:55 - Yeah, and I think they're super receptive to that.
11:58 They have a really good first time contributors guide and how to get your pull request reviewed and stuff like that.
12:05 So I think it's a really welcoming project too.
12:06 - Yeah, absolutely.
12:08 Brian, you think that Python's readability might be a little misleading.
12:11 It lulls people into believing this is just a simple little thing.
12:15 Right. Like a lot of times we've said that the way to convert a pseudocode to working Python is to change the extension from txt to py.
12:26 Exactly.
12:27 I wish.
12:28 Yeah, I fixed it.
12:29 Here's an article from Ned Batchelder, who I hold in highest regard, but he's got an article called Python's misleading readability.
12:38 And I wanted to point it out because it's something I didn't even really think about, is that often we're sharing script, you know, bringing new people up on a team and teaching them Python, or at least enough to run some code that you've got or some test code.
12:51 And some of the pieces of it are so readable that they are misleadingly wrong.
12:58 So one of the couple of the examples are is and or.
13:02 We use those and they almost read like English.
13:05 Like if name is Ned, well, that's not going to work because, you know, it's, we really need equality there, not is.
13:12 And then a similar thing with or.
13:15 It's something interesting that I wanted to point out because, yeah, a lot of people get this messed up.
13:20 I think that's a really interesting angle and I feel like it also means that people don't fully commit to learning Python when they come from another language.
13:28 So I know Java, I got dropped into a Python project, I did some tutorials over the weekend.
13:34 I now know Python in my mind, right?
13:37 But it's actually, you know, the whole Pythonic code, the proper idioms, the 125,000 PyPI package libraries that you don't know to use.
13:46 Like, there's so much to learn, but it doesn't feel like it at first glance.
13:49 You can read somebody else's code and understand it easily, but you may not be able to reproduce it, right?
13:56 So anyway, I think that's a good...
13:58 So go out, if you're learning Python, make sure you learn, don't get afraid of it, but make sure you learn what all the operators do and what the core data structures are like.
14:09 And one of the things that I've seen, so I see I have a lot of co-workers that switched our learning Python from coming from C. So one of the things that we don't do in C is if you're like, Ned puts an example at the end of his article of if you've got a possibility like you should, if a variable could be many different values and a common thing in C would be well if x is three or if x is seven or if x is eight and the pythonic way is to just say if x in and then a list of the possible options and that's a that's a mind shift that it freaks people out when they first see it if they're coming from c or something else a lot of this stuff could be caught by a linter good job yeah really really enjoying the the article that net put together because it's yeah i definitely agree like it's it's a double-edged sword right if you have a a language that's relatively easy to get into or just learn enough to be dangerous with it. But it kind of creates this false impression that you already know everything right if you if you can write a bit of Python. And yeah, it's definitely not like that.
15:15 Yeah, I totally agree. There was a great talk at PyCascades, which I'll talk about later.
15:19 That was just this week, actually. I literally got back last night by a guy named Thomas Bollinger called Python is not Java or C++.
15:28 And it was really, really interesting. He's a Python developer, I think, at Google. I can't remember.
15:34 But somewhere like that.
15:35 And basically he said, look, a bunch of people are coming into this company and then getting into these projects that are Python projects, but they have maybe Java or C++ experience.
15:44 And so these are the common pitfalls Java developers have when coming to Python.
15:47 These are the common pitfalls that C++ developers have.
15:50 If you're aware of them, you can help shepherd them along and make the transition easier.
15:54 So that's also worth checking out.
15:56 I'll link to that in the show notes.
15:58 All right, before we move on, let's talk about Datadog really quick because they are making this show possible.
16:04 So thanks for supporting the show, Datadog.
16:06 They, if you don't know about them, they are a monitoring solution that provides deep visibility and lets you track down issues for distributed Python applications.
16:16 So not just your Python code, but deep down into the systems like inside MongoDB or inside Linux and things like that.
16:23 So you can quickly investigate bottlenecks in your code and actually explore them in rich dashboards, which is really cool.
16:30 You can visualize your Python performance today and get started with a free trial.
16:35 And if you go through their little tutorial, you can even get a free t-shirt.
16:39 So it's got a cute little dog on it.
16:41 So at pythonbytes.fm/datadog, check that out.
16:44 It helps support the show.
16:45 And, you know, check out a cool product.
16:47 So I mentioned that I was at this conference, PyCascades, which was the first time it was ever run.
16:53 It was a big success, very fun.
16:55 Like I said, I'll talk more about that later.
16:56 But one of the big messages really was around Python 3.
17:00 And I think this whole legacy Python versus Python thing is starting to have an effect, right?
17:04 - Yeah, I think it definitely.
17:07 - Yeah, we've heard from a number of people that said, "Hey, you guys, I've heard it enough.
17:11 "I've switched and here's my commit "that makes my project actually Python 3." I've seen that more than once for us.
17:16 - Yeah, it's kind of a neat, we didn't really ask people to, but I've been enjoying having people contact us and say, "I've switched, I love Python 3 now." - That's right, that's right, it's awesome.
17:26 So one of the ways that I think people get stuck is there's some particular package they depend on.
17:32 This is less and less and less, but it still is the case.
17:34 Or there's some part of code, they're like, "I really just don't wanna touch that." The person who wrote it left, nobody knows how it works.
17:41 I don't wanna break it 'cause that makes it mine.
17:43 So we're just gonna leave that alone.
17:44 So one of those interesting projects that I ran across is this thing called a Warp2.
17:50 Have you guys heard about this?
17:51 - No. - Nope.
17:52 - I hadn't either.
17:53 So it says you can use this project called Warp2 to access Python 2 code from Python 3.
18:00 - Brilliant.
18:01 - Yeah, so you've got a subset of your app that's running in Python 2.
18:04 That can stay in Python 2 and the modern part of your app can be upgraded to Python 3.
18:09 - That's really nice.
18:10 I mean, that must be great for if you have a lot of legacy code and you don't want to tackle everything at once, you can sort of use this divide and conquer strategy and just like fork out some work to Python 2 and then ferry data back and forth.
18:22 That's really cool.
18:23 - It's really interesting and I think it might be a solution for certain situations.
18:27 At PyCascades, the keynote was given by Guido van Rossum, which is really great.
18:30 It was awesome to have him there.
18:32 And basically, the keynote subject was Python 3, a retrospective, what went right, what went wrong.
18:39 One of the things that he talked about that he wished they would have done would have been enabled Python 2 and 3 code to execute in the same runtime somehow, right?
18:49 And so this kind of makes that possible.
18:51 And the way it works is it communicates, it basically creates a Python 2 subprocess and the main Python 3 app runs and then anything that needs to run in Python 2 runs in the subprocess and then they're communicated with using pickle.
19:05 So it kind of serializes the objects in a binary form back and forth, which is not totally amazing, right?
19:12 But, you know, for people who are out there looking to migrate, maybe new features in Python 3, or they need to keep some small section of their app in Python 2, check out warp2. This is pretty interesting.
19:24 It's just a very tiny example of, it does show that there's, you can have this, like, create a Python 2 object that the Python 3 world can reference object methods and stuff.
19:36 - Yeah. - Interesting.
19:37 It's a really cool idea, and so I had never heard of it, and I think it could be...
19:42 We've got a couple of pillars making this Python migration really even better.
19:47 So one of them is mypy and PyAnnotate and all the stuff around there, which is also a huge subject at the conference.
19:55 And then this warp2 is just another tool to make this smoother.
19:59 Yeah, cool.
20:00 All right, so you're having a problem with your tests and they can't see your code, Brian.
20:04 So what's up?
20:04 Well, I wanted to bring this up because, okay, so I wrote that pytest book, and probably the number one question I get from people is, "Okay, I love this stuff, but my test code can't see my code under test with pytest.
20:19 It could with unit tests, and now I'm running pytest and I can't see it." And so I wanted to highlight it here, talk about it a little bit.
20:25 I really probably should cover this on testing code also, but I'll try to make this quick.
20:29 But the gist is that pytest, on purpose, this isn't a bug, it doesn't add the current directory to the Python path.
20:38 But Python does.
20:39 And when you're running unit tests, you run unit tests with Python-M unit test.
20:45 And so you're getting the current directory added to your Python path.
20:49 So as long as you can see your code under test from your Python path, and let's say you have all your test code in a test directory, you'll be able to import stuff in your test code because your current directory is in the Python path.
21:02 Now, pytest takes that away from you.
21:04 And how do you get back at it?
21:06 Well, the real answer is you write a setup file and use pip install -e for your project, which makes it so you can keep writing your code, but your test code can see it also.
21:20 That's sometimes a hurdle that people aren't willing to do.
21:23 So there's two quick answers.
21:25 That's run pytest just like you would unit test, do it as Python - M pytest, that adds your current directory.
21:33 - That's interesting, so you still run Python as the main thing, but then you just tell it to run pytest.
21:40 And it does the path alteration?
21:41 - And if that is a cringe-worthy for you, there's a little package called pytest, it's a plugin for pytest that's called pytest-pythonpath that does it for you.
21:52 So it just modifies, it's a very small plugin that modifies the search path to add your current directory.
22:00 It also adds a couple extra hooks so you can include your test code in your code under test or completely in different, way different directories.
22:08 You can specify where that stuff is with that.
22:11 So I just wanted to highlight those here.
22:14 So if people are having trouble with that, go check that out.
22:16 - Yeah, those look really cool.
22:17 Brian, do you use in pytest?
22:19 - Yeah, every day.
22:20 - Sorry.
22:21 I mean, Dan, are you using pytest?
22:23 - Yeah, I am using.
22:24 - I'm looking at your picture, Brian, - I'm talking to Dan, it's hard.
22:28 - I'm using it, I think it's a really great, yeah, just testing framework, test runner.
22:32 And I mean, Nose, I also like Nose, and I think there's a benefit to using what's built into the standard library as well, but usually for my projects, all of them are in pytest.
22:43 And I know it's just so frustrating when you run into an issue like that, when you just wanna try out a new tool, or even get started adding tests to your app in the first place, and then you run into a roadblock like that.
22:56 I mean, you know, Brian, like what you just described, like that could take someone almost like a day to figure out, right?
23:02 Like if they had to dig through the depths of the internet to find that.
23:06 And so, yeah, I feel like resources, you know, like your book and what you just said, I think that can be a real lifesaver if you're just getting started with pytest for sure.
23:14 - Right, and if it's the first roadblock you hit, a lot of people are gonna go, "Oh, this just sucks, I hate pytest." - Why is it hard?
23:22 I'm out of here.
23:23 - Yeah, for sure.
23:24 All right, last official thing, at least, I want to talk about Cement.
23:28 But not, you know, like buildings, but the framework for building CLIs.
23:33 So it's a yet another CLI application framework for Python, which is pretty cool.
23:39 So others are like argpars and click and these types of things.
23:44 And it tries to provide like a full featured platform, but also, you know, allow you to just have like a nice simple way to work on it.
23:52 And it has this idea of extensions and handlers.
23:56 So you can build these plugins that you hook into your CLI application, which is pretty cool.
24:03 So people can check it out.
24:04 Even has things like built-in logging, caching for improved performance, lots of cool stuff.
24:11 - Yeah, wow.
24:12 I'm looking at the examples right now.
24:14 This seems really, really intense, I wanted to say.
24:17 This seems really powerful.
24:18 This is more like the, I don't know, like the Django framework of Python CLI frameworks.
24:25 (laughs)
24:26 - Pretty in-depth.
24:27 - Yeah, it did feel a lot like that.
24:29 So just one more thing to put on people's radar for building CLIs, if WUI and GUI weren't enough.
24:34 - Yeah, so I usually use Click, so I'll be interested to try this and see how it compares.
24:41 - Yeah, Click's got its very own special way of working, doesn't it?
24:44 - Yeah.
24:45 - I mean, what I like about this Cement thing is that it seems to have a really nicely designed object-oriented interface.
24:54 So it looks like it's maybe a little bit more boilerplate to get set up, but then it's probably more maintainable in the long run, like if you can really, you know, factor things out nicely and split up your app.
25:07 - Right, like I like the idea of these extensions and handlers you can plug in and stuff.
25:11 They're probably pretty testable too, if pytest can see them.
25:14 - All right, well, I think that's it for our items.
25:19 Dan, we already heard your news, very, very big news with real Python, congratulations.
25:23 - Thanks.
25:24 - Yeah, Brian, how about you?
25:25 Any personal news to share?
25:27 - A couple of test and code interviews coming up, the recording, and so I'll be excited to get those out.
25:33 - Awesome, what are the topics?
25:34 - Actually, one of the topics is whether or not you should consider continuing education through a university versus learning online and other things.
25:44 - Oh, very nice.
25:46 Yeah, cool.
25:47 All right, well, I mostly want to talk about conferences today because I feel like conference season is either here or nearly upon us.
25:54 So like I said, I was just in PyCascades and that conference was really fun.
25:59 It was, I don't know, maybe 250 people, something like that, but really nice conference.
26:04 A lot of luminaries there.
26:06 Get to spend some time talking with them.
26:07 The talks were really well done.
26:09 I think they're going to be online, but I'm not sure if they are yet.
26:12 So the next one, they're gonna have in Seattle in about the same time next year, which is gonna be cool.
26:18 And I think even after that, it comes to Portland.
26:21 Woo-hoo!
26:22 - Yay!
26:23 - And we're trying to plan some sort of outdoor adventure around it, like a skiing or a snowshoe adventure like before or after the conference.
26:31 It's like a part of the conference.
26:32 It'll be fun.
26:33 So anyway, check that out next year.
26:34 It's in the past, so you missed it this year, but you can probably see the videos online.
26:37 It was really good.
26:38 I wanna give a shout out to Pi Columbia.
26:40 That's coming in February 9th, 10th, and 11th in Medellin, Colombia.
26:44 I'm not gonna be able to make it, but if you're in South America, that would be awesome.
26:48 There's PyCon--
26:50 - Oh, before we move on, I just need to shout out to PyColumbia that you guys need to send me a T-shirt 'cause your logo's really cool.
26:56 - Yes, it is definitely cool.
26:58 PyCon Slovakia, March 9th to 11th in Bratislava.
27:02 And I'm actually gonna be speaking there.
27:04 I'm gonna be doing a workshop, and that's gonna be super fun.
27:07 And then there's the big one.
27:09 PyCon US Cleveland, Ohio, May 10th.
27:11 Tickets sell out.
27:12 I don't think they're sold out yet, but do not wait if you're going to go to this, right guys?
27:16 - Definitely.
27:17 I missed out on one PyCon and I'm not gonna do it again.
27:21 - Yeah, I already got my ticket.
27:22 - Are you both gonna be there?
27:23 You got your ticket?
27:23 - Yeah. - Yeah.
27:24 - Awesome, awesome.
27:25 And finally, this just in, this morning, PyCaribbean, Santo Domingo, Dominican Republic, 17th and 18th of February.
27:33 So a lot of cool stuff coming up in February and then a little bit later as well.
27:37 Also, there is a new Python podcast that gave a shout out to both you and me, Brian, our various podcasts in the intersection here, as well called Python Out Loud.
27:49 So that's pythonoutloud.com, check that out.
27:52 And yeah, that's about it for the news this week.
27:56 A lot of good stuff going on.
27:58 And so Dan, thank you for making our meeting a podcast.
28:02 The podcast episode.
28:03 - Yeah, thanks for inviting me on the show.
28:05 - Yeah, yeah, thanks for joining us.
28:06 - Nice surprise.
28:07 Brian, as always, thanks for sharing the news with everyone. It's great.
28:11 Yeah, thank you.
28:11 Yep, you bet.
28:12 Talk to you next week.
28:13 Yep, bye everyone.
28:14 Thank you for listening to Python Bytes. Follow the show on Twitter via @pythonbytes. That's Python Bytes as in B-Y-T-E-S. And get the full show notes at pythonbytes.fm. If you have a news item you want featured, just visit pythonbytes.fm and send it our way. We're always on the lookout for sharing something cool. On behalf of myself and Brian Okken, this is Michael Kennedy. Thank you for listening and sharing this podcast with your friends and colleagues.