Transcript #3: Python 3.6 is coming, and it's awesome plus superior text processing with Pynini
Return to episode page view on github00:00 This is Python Bytes, Python headlines and news delivered directly to your earbuds.
00:04 Episode number three, recorded November 21st, 2016.
00:08 Hey Brian, hello everyone.
00:10 >> Hey.
00:10 >> Hey.
00:11 >> What's up?
00:12 >> Hey man, great to chat with you.
00:13 I'm really loving this show we're putting on.
00:15 This is so much fun.
00:17 But before I get to the headlines, actually I have some good news about the show.
00:19 >> What's that Michael?
00:20 >> Python Bytes is now brought to you by Rollbar.
00:23 They take the pain out of errors and we'll hear from them later.
00:27 But thank you Rollbar for sponsoring the show.
00:28 That's really awesome. We appreciate it.
00:29 That's really awesome. Thank you, Robar.
00:31 Yeah, definitely. All right, let's get to the headlines.
00:33 Every week there's so much cool stuff happening, right?
00:37 Well, yeah, and this last week I just made a huge list of articles I read, Python-related, and I really enjoyed.
00:44 It was a hard time picking out which one to talk about.
00:47 Yeah, it really was.
00:48 Yeah.
00:49 All right, well, but you had to pick, right?
00:50 Because we're only doing three each.
00:52 We're trying to keep this short and on topic.
00:54 Yeah, and I thought maybe we'd pick the same three, but we didn't.
00:57 First up, I've got an article titled, "How to Get Superior Text Processing in Python with PyNini." I think I'm pronouncing that right.
01:05 PyNini.
01:06 Or maybe it's "Nee-Nee." I'm not sure.
01:08 PyNini?
01:09 Like the Knights of Nee from Monty Python.
01:13 Yeah, you're probably right about that.
01:14 This is from the O'Reilly blog, and it was written by Kyle Gorman and Richard Sprott, I think.
01:21 Yeah, both who are PhDs in linguistics of some variety or other, right?
01:25 Yeah, and actually because of that and also because of the title, I was afraid this was going to be sort of a hard thing to get into.
01:37 But it's a really easy article.
01:39 And my interest in it is mostly because when I read the Pragmatic Programmer a long time ago, it introduced me to the concept of mini-languages to solve simple problems with, "This is the data I have, and how to change it into the data I need." And often I used regular expressions for things like that, but sometimes that's not enough.
01:57 And the next step always seemed to be to build up a parser or an abstract syntax tree.
02:02 And that's way too far that I want to go.
02:05 I think this article produces a nice halfway ground talking about what they call finite state transducers, which sounds like something in a Back to the Future movie.
02:17 movie. But it's a... Quick Marty, connect to Finite State Introducer. Yeah, exactly. But I like working with finite state machines and apparently this is a finite state machine turned into something else. But the article starts with a small introduction to what finite state machines are and they're really easy to get the grasp of. If you look at the article, there's some nice pictures. And then they talk about how that applies to text processing and then introduces a concept of a finite state acceptor, which I think just accepts things, and then transducer spits things out.
02:54 I believe I'm getting this right.
02:56 How this applies to how to translate your thinking from regular expressions to these.
03:01 And anyway, it goes through some of this, gives an example using cheese names, which I love the Python tradition of using cheese names and examples, and then introduces a a library called PyNini from Google to help build these things up.
03:18 At the end, I kind of got a little bit lost, but I wasn't working through the examples myself.
03:23 It is something that I think I might spend an afternoon poking through.
03:26 Yeah, it is quite interesting, right?
03:29 One of the things that makes me really happy about looking at this is, one, it's not too complicated and two, it gets you away from regular expressions, which anything that gets me away from regular expressions puts a smile on my face.
03:40 Well, I actually really like regular expressions, although it is true that there's oftentimes with text processing where it doesn't work when you can't do it line by line.
03:55 I'm probably not going to use this right away, but I appreciate this tool introduction so I can put it in my tool chest and next time I have a problem like this, I might look this thing up.
04:05 Right, you guys will be looking at something, some data, and you're like, "Oh, you know what we need?
04:06 "A finite state transducer.
04:07 "We're gonna solve this." - And I totally wanna do that in a meeting.
04:12 I think we should put a finite state transducer in here.
04:16 - Fantastic.
04:17 Now, it does things like pluralized stuff.
04:21 You can teach it, like for example, you taught it what all the cheeses were, and then it could locate sentences that were talking about cheese, and do lots of interesting processing, not just pattern matching.
04:32 It's cool.
04:33 - It isn't, but it does start out with a simple example of if I tell it all the cheeses, to look through some code and find the cheeses and add a cheese tag around it or something.
04:46 There are simple solutions, simple problems that it can solve as well.
04:51 - Yeah, it's great to have it in your toolbox.
04:53 Well, you know where I would like to run it, though?
04:55 I don't really want to run it on Python 3.5 or definitely not on 2.7 anymore.
05:00 - Oh, yeah, nice transition there.
05:02 - Thank you, yeah, I want to run that on Python 3.6.
05:02 And you guys, there is amazing stuff coming in Python 3.6.
05:07 And they just released beta 4.
05:09 - Beta 4, wow.
05:10 - So yeah, I don't know what the exact release schedule of the final release is, but I think it's coming up pretty quickly.
05:15 These things are looking pretty solid.
05:17 Let me just give you a sense of some of the peps, Python enhancement proposals that are coming.
05:22 First up, it seems like no programming language of these days is content with their string formatting.
05:29 In Python, it's like, look, we only have like eight ways to format strings, we need another.
05:34 But this new way is actually pretty good.
05:35 There's a pep498.
05:37 And what is about is formatting string literals.
05:41 So imagine you've got a string and normally you'd like, there's a variety of ways to do it.
05:45 Maybe the newer way would to be to do something like say, I wanna say, "Hi, my name is," and you have a variable called name, right?
05:52 So you might say, quote, "Hi, my name is curly bracket zero, quote, dot format name." Yeah?
05:59 Well, it kind of takes this idea and just says, well, why do you have to do the dot format and use arguments and orders and the number of them?
06:06 Why don't you just put the name of the variable in the string?
06:09 So now you could say, hello, my name is curly name.
06:12 And now whatever the value of name is, if there's a variable that will be put into the string as if you did the first thing I said.
06:17 But that's really cool.
06:18 Yeah, it's pretty cool.
06:19 The only bummer is you have to indicate that it's this new format string.
06:25 I think it's an F prefix on the string.
06:28 But you know, because otherwise you'd have like dictionary stuff mixing in.
06:32 Just for compatibility. It's got to have a little identifier. But other than that, yeah, it's a really cool way to format stuff. Alright, so we also have another easy to understand but really nice one, PEP 515, which will let you put underscores in numerical literals. So if you have a number like 1 0 0 0 0 0 and and you look at it, is that a million?
06:56 Is that 100,000?
06:57 Is it 10 million?
06:59 It's hard to know what the separators are.
07:01 So now you can put underscores.
07:02 So you could have like one underscore zero, zero, zero, underscore zero, zero, zero.
07:07 And that would, it basically just ignores the underscores, but it allows you to visually see, oh, that's a million, not 100,000, something like that.
07:14 - Oh, that's pretty cool.
07:15 - Yeah, that's pretty cool.
07:16 No, it's not gonna be world changing.
07:18 One thing that is more significant, I guess, is in Python 3.5, we have type annotations, right?
07:25 So I could have a function, I could have function, I could say it takes a, let's say it says create, function's name's create, and it has a thing called entity.
07:35 Well, if you were given that function, you could be like, I have no idea what this does.
07:39 Like entity, maybe that has to do with databases.
07:42 But in Python 3.5, you could say colon customer, where customer's like a class or something.
07:47 And then the tooling and whatnot would know to give you the right auto-completion and various type checking and whatnot for that type, right?
07:55 But that only applied to functions.
07:57 You couldn't put it on like variables and other types of class fields and other things that are outside of functions.
08:04 So this PEP 526 brings that to functions.
08:08 - That seems like obvious.
08:09 I don't know why they didn't have that at the start.
08:12 - Yeah, it definitely seems obvious.
08:13 So, you know, maybe you don't care too much, but tooling will care, linters might care.
08:18 So like the tools you use could possibly get better because of this.
08:21 All right, so we have 525 asynchronous generators.
08:24 Async and away is awesome.
08:25 Yield, yield from are awesome, but they were not friends previously.
08:30 Now, you couldn't use them together.
08:31 So you could either have a async coroutine or you could have a generator, but you couldn't have both.
08:35 Now you can have both.
08:37 And similarly, we have asynchronous comprehensions.
08:40 And you know, actually one of the biggest things is the change to dictionaries coming in Python 3.6.
08:47 - What?
08:48 - Yeah, so you might think, - Yeah, right.
08:50 - Python has had dictionaries since, from the very beginning.
08:53 When you add fields or attributes to a class, it's actually stored in dunder dict.
08:58 I mean, dictionaries are, it's keyword values, like all over the place, dictionaries play a super important role.
09:04 Well, in this release from 3.5 to 3.6, dictionaries are now 20 to 25% more memory efficient.
09:13 They should be a little faster.
09:16 They are ordered.
09:17 So the order that you put things in, they remember that, right?
09:21 Like if when you first started working with dictionaries, you're like, multiple dictionaries can have the fields show up at different times and different orders.
09:29 It's bizarre, right?
09:30 You can keep switching.
09:31 Now, it's always consistent.
09:32 - The order dict part and making them fast is good.
09:36 So it's all good stuff.
09:37 - Yeah, it's all good stuff.
09:38 We've got a new secrets module coming.
09:40 So you have cryptographically strong random number generators.
09:44 Windows, they've now marked the Python executable as long path aware.
09:49 So I don't know if you guys are aware, but Windows typically has like crummy 260 character path limits for a long time.
09:56 There's a lot of legacy stuff that applies that to like newer code.
09:59 So now long path limitations are gone in Windows, which if you write code that has to run on Windows, you'll care a lot about that.
10:05 - Well, yeah, actually I try to write code that I don't have to care about Windows, but.
10:10 - Yes, exactly.
10:11 So if you go look through the link, the release notes, the documentation there, there's a lot more stuff.
10:18 I'm scratching the surface on all the cool stuff coming in 3.6.
10:22 So if people need one more reason to upgrade from two to three, well, here's like 20 or 30 more reasons.
10:28 - Yeah, and I like the peps that you talked about.
10:30 You left the links to those particular peps in the show notes, so that's great.
10:35 - Yeah, yeah, definitely check them out.
10:36 - Okay.
10:37 - Hey, Brian.
10:38 - Hey.
10:39 - Before we get to the next headline, let me tell you about Rollbar.
10:41 Well tell me about Rollbar.
10:42 - Alright man, so Rollbar's sponsoring Python Bytes and we're really excited about it.
10:46 I use Rollbar for my website.
10:48 Rollbar is a package you install in your Python web app, Pyramid, Flash, Django, whatever, and any time there's an error, you get an immediate notification and detailed error reports.
10:56 So, you know, even though the Talk Python websites handle almost two million dynamic HTTP requests per month and they transfer like four to five terabytes of data, I'm not worried about 'em.
11:05 - Really?
11:05 - No, not really, 'cause if something goes wrong, my Slack, my email, my phone, everything will be blown up with notifications and you know I don't get many but when they come in like all the info is there so I often don't even to debug it I just go and fix the problem it's pretty awesome right that's very awesome yeah I love her bar so and the Python bytes listeners all you guys out there you can have the same peace of mind just visit roll bar calm slash Python bytes and sign up for the free tier you get like 300,000 free errors tracked although I really hope you don't have that many yeah definitely you should do more testing if you do you definitely should Well, next up for me, I am a sucker for, I really like efficiency, developer efficiency.
11:47 It's always kind of been important to me.
11:50 And part of that is being able to set up your personal development environment to help you succeed.
11:54 And I know it's different from everybody, and I'm always tweaking mine.
12:00 I like articles when people write about them.
12:02 So there's an article by Dougal, I think, Dougal Matthews, called "Create an Excellent Python Dev Environment." And he goes through installing Python, but everybody knows how to do that.
12:15 But he's got some goals of, don't muck with the system Python, and set up virtual environments easy.
12:20 And it's interesting, one of the things I think is interesting about this article is to start off the bat saying why he has particular goals for why he's chosen things.
12:30 And that's kind of neat.
12:28 - Yeah, that's cool, because you might look at it and go, I would never do that, but maybe your goals are different than his, and you can really understand where he's coming from because of that, that's cool.
12:36 - Yeah, actually the first part confused me because he was covering a project that I'd never heard of called Pyenv, or P-Y-E-N-V.
12:45 I'm more used to V-E-N-V, which just comes in 3.6 or virtual environment, so this is something different, and I just will have to check it out, But it's something like virtual environments, but it's independent of Python, sets them up separate, I guess.
13:03 I don't know.
13:04 - Yeah, I haven't used it much either, so I might be a little off here, but I think it's kind of like for managing and creating and activating different virtual environments.
13:11 It's like your virtual environment manager.
13:14 - Okay.
13:15 - I think.
13:16 - Yeah, next is a PyEnv virtualenv, which is apparently similar to virtualenv-wrapper, which a lot of people use.
13:25 I don't use either of those, but I still don't get what they're for.
13:31 Straight virtual environments work fine.
13:34 I don't understand what I need more for.
13:36 You have different goals.
13:39 Yeah, that's probably it.
13:41 The next thing he talks about is a thing called PIPC, which I hadn't heard of, and I just used it today.
13:44 It's a tool to let you install Python-based command line utilities in their own virtual environments so that you can just set your path to them so you can use them on the command line from anywhere.
13:57 That's really cool, just to have these little virtual environments just for a command line utility.
14:02 That's really cool.
14:05 I'd never really thought of doing it that way.
14:05 That's great.
14:07 When I was talking in one of the interviews I've done, I heard about more people using Atom than before.
14:11 And I tried to set up Atom, and I needed to give it a path to Flake 8.
14:17 And I'm like, "Oh, I'll use Pipsi to set up this so that he can see Flake 8.
14:23 I've done that.
14:25 No, nice.
14:25 But he does talk about, with Pipsi, he usually includes talks for testing multiple environments, which I highly recommend.
14:34 Make docs, which is a, I think it's a static site generator documentation thingy.
14:39 I've never used it.
14:41 Git review, which I would totally use.
14:42 It's a Gerrit integration for Git, but I don't use Git right now, but at work.
14:44 and my personal, I actually do code reviews on my own code in my free time.
14:52 And then Flake 8, of course, which is my favorite, recommended way to static and analyze stuff.
14:57 And then as a side note, one of the things he was talking about for this PyANV is because it's compatible with Phish, which is a different shell that I've never heard of.
15:09 I use Bash, I tried Zshell for a while.
15:13 I'm always used, I think it's fun to try new shells, so maybe I'll give it a shot.
15:18 - Yeah, definitely I wanna check out Phish, that sounds cool.
15:20 I use Zshell as well, I just actually formatted my computer and I'm like, you know, I might try a different shell this time when I set everything up, so that's cool.
15:28 I'll check out Phish.
15:29 I do love to see the way people put these environments together and I think it really can help people who are new, it can help you discover things that you don't know about, like Pipsi, that's really great.
15:39 I was just stuck in traffic today this morning and was thinking for some reason about this stuff.
15:45 You know, other people, I don't know what they do, they do him about, but this is what I was daydreaming about.
15:49 I was thinking, you know, I might try switching to conda instead of pip and try using conda for managing all these environments.
15:57 I really like the way that conda like vets the packages and pre compiles them for you.
16:02 I was reading about something.
16:03 It was like, well, as long as you have this compiler set up, it'll probably be fine, but it might not work so well. I'm like, you know what, maybe I should just use conda and like all those problems are solved by the continuum guys. And so I'm also doing a lot of virtual environments with Python 3 v and v. And the one thing that I like that I've stopped using the the main Python rebel and I'm using PT Python. Do you know PT Python?
16:28 PT Python? No, I don't.
16:31 PT Python is, it's basically the the regular rebel, but it has a lot better editing and history and auto completion and all sorts of stuff for what you can do. So like, for example, if you type in a function in the regular REPL, you know, it's like three lines with indentation or whatever. If you want to edit it, you got to remember to like always replay them in the right order, you know, up arrow four times, enter up arrow three times, make the change, you know, that kind of stuff. This will like, if you hit up arrow for code suites, it'll bring the whole thing back and you can edit it, stuff like that.
17:02 Oh, okay. Do you work in the REPL very much?
17:05 Not too much. Usually I'm in some kind of editor.
17:07 But when I am there, I've been moving to PT Python.
17:10 That's pretty cool.
17:11 I think I'll check it out.
17:12 Yeah, yeah, check it out.
17:13 So what do you got next?
17:14 Well, a lot of people have been checking out Python lately.
17:16 And there was an interesting article.
17:19 Is it an article?
17:20 It was an article that's posted as a GitHub repository, which is accompanied by a Go program that's generated a bunch of statistics and graphs.
17:28 And the thing I'm actually linking to is a Reddit article with like 350 upvotes and tons of comments.
17:37 You can check out the conversation.
17:40 But the headline is awesome.
17:43 GitHub language statistics.
17:45 Python is the second most popular language on GitHub for active repositories.
17:50 - That's awesome.
17:52 - Yeah.
17:52 I mean, Python's growth is just continuing and expanding and it's such a cool time to be involved in the language.
17:57 And here's just one more stat to back that up.
17:58 >> Yeah, looks like the graphs you have to click through from the Reddit to the GitHub page.
18:03 >> Yeah, yeah.
18:04 So I'm linking to both.
18:06 So they say we're going to study active repositories because it doesn't make any sense to think about GitHub statistics if something was put there five years ago and hasn't been touched.
18:15 All right, so they said let's consider the set of active repositories.
18:19 Those are created or updated during the period and the period is like a bunch of dates like throughout the last three years, you'll see when you get there. And it has to have at least one star so people have to... somebody has to care about it.
18:32 Somebody has to care enough about it to have forked it. And it must be more than 10k, right? So it can't just be like, "Well, I put up this one file and somebody forked it." Or you know something silly like that. It's got to be like a real project. So if you take all of those together, JavaScript turns out to be the most popular. But JavaScript, I'm sure, is highly over-counted. I'm pretty sure that's generally true on GitHub statistics because almost every one of my Python projects has some JavaScript. You know what I mean? Yeah, I mean, since it's the front end, it's almost every project has it. Right, almost any web project in any language is going to be counted as JavaScript to some degree in the language category. And so I feel like JavaScript, while it is extremely popular, I think it's massively overcounted in these types of stats and it seems to appear that way in the graph But so Python displaced Java which we can all cheer for that, right? That's awesome Yeah, but let me give you some stats that are pretty interesting that will I think it's might blow your mind So back in November 2014, there were one thousand seven hundred ninety Active repositories by the four criteria above you know that were Python. This is just Python November 2015 there was And if you look throughout the year of 2015 and early 2016, it would vary, but it's like 2000 to 2500, 2600.
19:59 By November 2016, there's 10,944 active repositories.
20:05 It's just like, it's growing like crazy.
20:07 Yeah.
20:08 I love seeing that.
20:09 And I think one of the things I like, I think has changed in that timeframe is the, I don't I don't know if it can be attributed to this, but the Cookie Cutter project has made it a lot easier for people to set up something to share on GitHub.
20:24 Yeah, Cookie Cutter is really awesome.
20:29 If you guys don't know about Cookie Cutter, check it out, it's a cool project.
20:32 I'm sure it's not hurting.
20:34 Yeah, anyway, that's good.
20:35 Also, it makes me think that I spent the right time learning a new language.
20:40 I started from C++.
20:41 Yeah, absolutely.
20:43 It's good to be in a place that's growing.
20:41 I mean, obviously take these stats.
20:43 They're at the grain of salt.
20:45 They're sliced in all these various criteria and so on.
20:48 So they might not be perfect, but they give a glimpse into a world that is doing very well and is very fun to be part of.
20:56 So I'm happy to see it.
20:57 Okay, we're up to my number three pick, which is handling Unicode strings in Python.
21:04 It is from, I know I'm going to get this name wrong, Wan-Li Song, I think, but we'll link it of course in the show notes.
21:11 I like it because it's a nice article to introduce people about the concepts of text representation in Python.
21:21 And this comes up, at least, it hurts my head sometimes because I came up with the 2.7 Python world and I think anybody that learned with 2.7 and had to switch to a more recent 3X version, sometimes it's hard to understand how the switch happens.
21:37 And there's a nice table for some of the things that are different.
21:42 And then it goes through specifics of dealing with Unicode in things like I/O boundaries to databases or services.
21:51 And then also a few other examples are dealing with it, with logging, with JSON encoding, and with Redis even.
21:58 A nice pointer to a 2012 article from Nat Batchelder called "Pragmatic Unicode," which I hadn't read before.
22:04 So I learned a lot about Unicode in this last week.
22:07 - Oh yeah, that's great.
22:08 If you have to juggle that stuff, it can be tricky.
22:11 I remember talking to some of the web foundation guys, think it was Kenneth Wrights and requests, but it could have been Armin Roediger and Flask.
22:22 I'm not sure, I think it was Kenneth.
22:24 Anyway, seeing that one of the most challenging things of upgrading their projects from two to three or supporting three, let's say, is the dramatically different way that bytes go to strings and all of this kind of stuff.
22:39 So yeah, if you've got to upgrade something that's two to support three, be really careful with the strings.
22:45 - Yeah, and this is another one of those, I'm gonna bookmark it, and if the next time I come up with an issue, I'll look through this, see if I can help me figure out how to fix it.
22:56 - Yeah, awesome.
22:57 - All right, what do you got as your last one, Michael?
22:59 My last one, I think this one might be a little surprising for you.
23:02 Let's see.
23:03 So I've asked many people what their favorite editor is over at Talk Python.
23:08 I've heard many answers.
23:11 It would be fun to go back and actually do some data analysis and graphs or whatever, right?
23:16 But I would say Sublime Text, extremely popular.
23:19 Emacs, very popular.
23:22 Vim, I think Vim might be slightly beating Emacs.
23:26 PyCharm is pretty popular.
23:27 People hear me go on and on about PyCharm.
23:29 I love PyCharm.
23:30 Really?
23:30 I didn't know that.
23:31 Yeah.
23:32 Yeah.
23:32 Most people don't know this about me, but I actually do use it now.
23:36 I do love it a lot.
23:37 But one thing I came across with was I was fooling around with Visual Studio Code.
23:43 And this is not like Visual Studio from Windows, the big .NET thing.
23:47 This is like a lightweight editor.
23:50 It's based on, I think, the same underlying stuff as Atom.
23:54 It's using the Chrome as its underlying engine, and it's based on some client-side HTML stuff.
24:01 Anyway, it's a free editor that's pretty cool and it's growing quite a bit in terms of its extensions you can get for it.
24:08 It's got like cool Git integration and now it's getting better Python integration.
24:13 So my pick is this thing called the Python extension for Visual Studio Code and it runs on Mac and Windows and Linux and so on.
24:22 And I have a link to the one there.
24:24 And what's really interesting is, Well, the bunch of features, which I'll tell you, but if I had to ask you, Brian, how many times do you think this thing has been downloaded?
24:34 23, 23 is good.
24:37 Well, I would guess thousands, maybe 20, 30,000 times, something like this, right?
24:43 Like, okay.
24:43 How many people are installing full Python support?
24:46 This is like, not just standard completion, but it like reads.
24:50 If you were writing a package that like understands your package and will tell you exactly what all the names of all the elements symbolically in your package, it'll do like AST based refactoring, like really cool stuff, right? Anyway, 850,000 installs. That's actually incredible. Now I want to go try it.
25:10 Yeah. I mean, when you think of thinking Python editors, eight, almost a million people installed this Python support for their editor. Now, of course, not every one of them is doing Python all the time. And there's not a one to one mapping between developers and editors, but this is like way more popular than I realized.
25:28 And so I thought, well, why don't I play with it?
25:29 So I played with it this week and I'm pretty impressed for like lightweight stuff.
25:32 I think this is my new editor.
25:34 Oh, okay.
25:35 I was just actually picking it.
25:36 I installed Adam this morning.
25:39 Maybe I'll try this one out as well.
25:40 Yeah, it's really similar to Adam actually.
25:42 So it's worth giving it a try.
25:43 So it has linting, including a bunch of linters you can configure, including Flake 8.
25:49 It has full on auto completion as well as support for PEP 484.
25:53 I think that's the type hints.
25:55 It has Jupyter support, indenting, code formatting, refactoring, like I said, code navigation, debugging.
26:04 You can remotely debug over SSH to like a flask app.
26:09 I mean, that's pretty serious for this little plugin, right?
26:11 That's awesome.
26:12 Unit tests, all the various tests you're talking about, lots of good stuff.
26:16 So anyway, I thought this is kind of one of the unsung heroes of the editors.
26:21 So I thought I'd highlight it.
26:23 - Yeah, cool. And maybe the next time you ask somebody, they'll say, "I use code." - Oh, yeah, I use Visual Studio Code all the time. Anyway, yeah, it's pretty cool.
26:32 So I'm excited to try it out, at least.
26:34 - Okay, well, I think I'll try it out, too.
26:36 And that brings us to the end, but we do like to catch up with what both of us are up to.
26:41 So, Michael, what are you up to lately?
26:44 - Well, I've been continuing to crank out the Talk Python to Me episodes.
26:48 So the last one I just released was "Parsing Horrible Things with Python," I wanted to make sure I pointed out here because I think that's a really interesting tie into your first pick of the week because It's another way to parse horrible things that I think is really actually quite powerful and interesting So anyway, I released that with Eric Rose and that was cool. That was a really interesting episode I really enjoyed it. Eric is obviously a brilliant guy. So that was good. Yeah. Thanks a lot Yeah, he was he's a great guest and definitely enjoyed talking to him You last week had asked me if awesome Python the GitHub thing was the same as the awesome Python newsletter And I said I think so And now I think now I think I might be wrong No fact that the awesome Python newsletter comes from Python dot lib hunt calm Which is a really cool place for Python news and I think one or two of the news items throughout the podcast I've not this one, but over all of them. I've gotten from that place. Okay, so yeah, that's my picks. What's up with me?
27:46 Python is so awesome It's awesome, we like to slap it on everything.
27:52 It's awesome, yeah.
27:56 How about you, what are you up to?
27:57 Man, I've been doing a lot of writing.
27:58 I've got an editor deadline in about a week, actually, exactly a week from today, because I'm trying to put on full steam, and it's the pytest book, and I'm trying to get it ready so that it can be printable, and I can take a stack of copies with me to PyCon in 2017 in May.
28:14 So that's what I've been working on.
28:15 The last episode of Test and Code is recorded and partly edited.
28:21 This was number 25 with Dave Hunt about selenium.
28:25 And there's some really good content mixed in with some really stupid questions that I've asked.
28:30 So I need to go and cut out the stupid questions and then it'll be good to go.
28:35 Hopefully we'll get that out in the next couple of days.
28:37 And then I'm really excited about an interview tomorrow scheduled.
28:42 it goes through with a person called David Hussman.
28:47 He runs a place called Dev Jam Studios, and he talks about Agile and goes around and speaks to people.
28:54 He's a really good speaker, so looking forward to talking to him.
28:59 Yeah, that'd be awesome.
29:02 Kind of a slightly above the code talk about all the testing and whatnot, right?
29:05 Yeah, and I don't even know if he'll get into testing.
29:07 One of the things he likes to talk about lately is story mapping, which is sort of a high-level planning for an entire project above the writing stories level and that's pretty neat. Yeah that's cool, definitely precedes code. Yeah, well anyway I really enjoyed talking with you this week and look forward to seeing what cool stuff people put out in the upcoming week. Yeah, thanks Brian, I enjoyed it as well and like always I learned about some cool new things. I'm definitely checking out Pipsy and thank you everyone for listening and we will see you next week. Bye-bye.