Summary
Dave Beazley has been using and teaching Python since the early days of the language. He has also been instrumental in spreading the gospel of asynchronous programming and the many ways that it can improve the performance of your programs. This week I had the pleasure of speaking with him about his history with the language and some of his favorite presentations and projects.
Brief Introduction
- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at pythonpodcast.com
- Linode is sponsoring us this week. Check them out at linode.com/podcastinit and get a $20 credit to try out their fast and reliable Linux virtual servers for your next project
- We are also sponsored by Sentry this week. Stop hoping your users will report bugs. Sentry’s real-time tracking gives you insight into production deployments and information to reproduce and fix crashes. Check them out at getsentry.com and use the code podcastinit at signup to get a $50 credit!
- Hired has also returned as a sponsor this week. If you’re looking for a job as a developer or designer then Hired will bring the opportunities to you. Sign up at hired.com/podcastinit to double your signing bonus.
- Visit our site to subscribe to our show, sign up for our newsletter, read the show notes, and get in touch.
- To help other people find the show you can leave a review on iTunes, or Google Play Music, and tell your friends and co-workers
- Join our community! Visit discourse.pythonpodcast.com for your opportunity to find out about upcoming guests, suggest questions, and propose show ideas.
- Your hosts as usual are Tobias Macey and Chris Patti
- Today we’re interviewing Dave Beazley about his career with Python
Interview with Dave Beazley
- Introductions
- How did you get introduced to Python? – Tobias
- How has Python and its community helped to shape your career? – Tobias
- What are some of the major themes that you have focused on in your work? – Tobias
- One of the things that you are known for is doing live-coding presentations, many of which are fairly advanced. What is it about that format that appeals to you? – Tobias
- What are some of your favorite stories about a presentation that didn’t quite go as planned? – Tobias
- You have given a large number of talks at various conferences. What are some of your favorites? – Tobias
- What impact do you think that asynchronous programming will have on the future of the Python language and ecosystem? – Tobias
- Are there any features that you see in other languages that you would like to have incorporated in Python? – Tobias
- On the about page for your website you talk about some of the low-level code and hardware knowledge that you picked up by working with computers as a kid. Do you think that people who are getting started with programming now are missing out by not getting exposed to the kinds of hardware and software that was present before computing became mainstream?
- You have had the opportunity to work on a large variety of projects, both on a hobby and professional level. What are some of your favorites? – Tobias
- What is it about Python that has managed to hold your interest for so many years? – Tobias
Keep In Touch
Picks
- Tobias
- Dave
Links
- Python Concurrency From The Ground Up
- XKCD compiling
- Clifford Stoll
- Superboard talk
- Curio
- PyOhio async talk
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Hello, and welcome to podcast. Init, the podcast about Python and the people who make it great. I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. Linode is sponsoring us this week. Check them out at linode.com/podcastinnit and get a $20 credit to try out their fast and reliable Linux virtual servers for your next project. We are also sponsored by Sentry this week. Stop hoping your users will report bugs. Sentry's real time tracking gives you insight into production deployments and information to reproduce and fix crashes. Check them out at get sentry.com and use the code podcast in it at sign up to get a $50 credit. Hired has also returned as a sponsor this week. If you're looking for a job as a developer or designer, then Hired will bring the opportunities to you. Sign up at hyards.com/podcast in it to double your signing bonus. You can also visit our site to subscribe to our show, sign up for our newsletter, read the show notes, and get in touch. And to help other people find the show, you can leave a review on Itunes or Google Play Music and tell your friends and coworkers.
Your host today is Tobias Macy, and I'm interviewing Dave Beasley about his career with Python. So, Dave, could you please introduce yourself?
[00:01:14] Unknown:
Hi, I'm Dave. How are you doing?
[00:01:17] Unknown:
So how did you first get introduced to Python?
[00:01:21] Unknown:
Well, I I first read about it in Computers and Physics in 1996. And I think I just sort of I don't know. Just kinda came across it by accident. I was working on a lot of physics, scientific software at the time. Had actually written my own programming language, probably a questionable activity, and then and sort of discovered Python and decided that I don't need to be writing my own programming language at this point. So
[00:01:46] Unknown:
was there any particular use case you had in mind, might I ask? Oh, for Python? For for your program language that you were creating.
[00:01:55] Unknown:
Well, I was trying to create my own version of MATLAB for, running on a supercomputer. So I was trying to, control physics, you know, big physics software. And, Python actually worked really well for that because you could interface it with c code. So a lot of my, first use of Python was was hooking it up to c programs running on, big supercomputers. Just just trying to kinda steer, you know, scientific software. So
[00:02:22] Unknown:
That's funny that that the course of history has proven that that was the right way to go. It's using Python as a potential replacement for MATLAB given the number of people who are using it for exactly that.
[00:02:33] Unknown:
Probably the the shocking thing is, you know, at the at the time so I I gave a a talk at a at the supercomputing conference in 1996 about this, you know, using Python with, supercomputing. And I remember being in a room, you know, with maybe 400 chairs and about 380 of them were empty. I mean, it was just like an empty room. It was it was it was amazing. So and then you you look at, like, the, you know, the stuff going on with the, you know, the data community and, you know, iPython notebook and all that stuff now, and it's just, you know, it's the rage. So it's changed a lot.
[00:03:07] Unknown:
Yeah. The, prevalence of big data and data mining has definitely put a bunch of different face on the overall view that people have on the whole area of inquiry.
[00:03:17] Unknown:
Yeah. At the at the time, you know, there's kind of an attitude that, you know, Python wasn't a real programming language. It was kinda like if you need to want to do real work, you'd use, you know, c and c plus plus or Fortran or something and, you know, Python, it's like that. You know, what's that? So
[00:03:34] Unknown:
So I guess, this is a good place to start with how Python and the community thereof has helped to shape your overall career.
[00:03:42] Unknown:
It's definitely been a big part of my career. I mean, I've been involved with Python for, for for a long time. A lot of my work is kinda focused around it. I think in I think in terms of shaping that, I think maybe, maybe an interesting part of the Python community is that it has brought together very disparate communities. I mean, I came out of the scientific side, you know, with, like, physicists and engineers and stuff, but you also have this big, you know, web programming side of Python, and you have, you know, people doing system admin kinds of things. And you would go to these Python conferences, and you'd get these groups kinda mingling together that would normally probably not meet each other in, like, their normal sort of day to day business. I think that's been kind of an awesome you know, an awesome thing about the community is just being exposed to different ideas and just seeing how those kind of intersect and and play off each other. So
[00:04:32] Unknown:
Yeah. The ease with which Python can be used to bind different libraries and functionality together is certainly given rise to a large number of applications that might not have been at least conceived of if you were only operating with c or only operating with, you know, Erlang or something because they work perfectly well for their originally intended use case. But because of the fact that they are not quite as flexible or easy to experiment with, you're less likely to put them to the uses that Python has been used for.
[00:05:03] Unknown:
Yeah. I think it's pretty pretty interesting. I I mean, actually, the first Python conference I went to in 96 was, held at Livermore National Lab. And I remember, you know, we, you know, go to the conference with people talking about web programming. And then, you know, right after the web programming section, we went and got a tour of some huge laser or somewhere. Like, all of a sudden, we're, like, you know, like, in the middle of a sci fi movie talking about physics and stuff. I mean, it was it was cool. I mean, it was really fun. So
[00:05:31] Unknown:
Sounds it. Wish wish I could have been there. So what are some of the major themes that you focused on in your work both with Python and
[00:05:38] Unknown:
network programming, dealing with operating systems, and things like that, but also kind of tying it into the, scientific world. So I'm a little bit of a I don't know. I've I always thought that I'm kind of in an odd place, mainly focusing more on, like, the like, maybe systems, more computer science side of, maybe the scientific programming world.
[00:05:58] Unknown:
Yeah. I noticed on your about page that you had the opportunity to use Python to program a massively parallel computing cluster. I don't know if you can talk a bit about that.
[00:06:08] Unknown:
Yes. I so far as I know, I might have been the the first person to, to do that. That was a that was a total hack. So, you know, so at the time, I was using Python 1.3 dates the the the the time of this and essentially hacked the source code to Python to make it run on a 512 processor, you know, parallel computer. And it was it was mainly a hack to some of the IO system of Python just to kinda glue the whole thing to whole thing together. And then and then what we were doing with that is actually running, like, the Python interactive REPL or the interactive shell remotely on these, like, 512 processor machines. Like, you type a command, and then it would, execute on all 512 processors at once.
And it it it really got people riled up. Not not necessarily in a good way either. I mean, some of the management, you know, kinda found out about this, and they're they're like, what? You're you're like hogging the supercomputer typing interactive commands? I mean, that's you know, like, you're not supposed to be doing that. So Right. And so in the in that sense, it was a it was a great success. So
[00:07:21] Unknown:
if you were to try and do the same thing today, do do you think that, the capabilities of Python have evolved to a point that would make it easier to do? Or are there any facilities in the language that have improved to the point that make that more plausible? Or also, are there any that you think are missing to make that job even easier?
[00:07:37] Unknown:
No. I think it's still good good at that. I mean, the, I mean, at at at the time, it was just such a radical idea that you would wanna interact with your program in that way. I mean, you know, people were writing just batch scripts where it's you just submit it overnight. You never interact with your data.
[00:07:55] Unknown:
And now everybody is about interacting with their data, so it's you know, I I don't know whether it would be hard to sort of sell that idea now. I think people would probably be into it. So Right. I mean, even some of the compiled languages these days are shipping with a compiled languages these days are shipping with a REPL because the compilation times have gotten so fast that you can actually have that rapid feedback cycle, and people have gotten so used to it. And, personally, I I do half of my development in the repo just to play with ideas and figure out how things actually work.
[00:08:20] Unknown:
Yeah. Actually, that fast compile time. I mean, at the time we were doing this, we had a there was a competing project at work. It was this giant c plus plus system that they they actually had a supercomputer being used to compile it because it was so big. I mean, they they they you know, I I I you know, 1 of the people on this project said, oh, yeah. It takes, like, 45 minutes to link the the executable. And then I I mean, we're like, well, how do you debug this thing? And they're like, oh, print statements and stuff. Just like, oh, god. It sounds terrible. Right? You know, you put a print statement in there, and you've gotta relink for 45 minutes or something. Yeah. You know, our interactive Python was was sort of so much more awesome than that. You know? So we've got a fair fair fair bit of attention. Yeah. It's the, perfect case of the, chair jousting comic from xkcd.
Yeah. Yeah.
[00:09:09] Unknown:
So 1 of the things that you're known for is doing live coding presentations, many of which are fairly advanced. What what is it about the live coding presentation format that appeals to you?
[00:09:19] Unknown:
Well, this this, you know, this is a tricky question. There might be multiple parts to this. I I I think 1 of the 1 of the things with live coding is I'm kind of playing around with maybe the form of presentation a little bit. There's kind of a a conventional wisdom that you never do a live demo in a talk. I don't know that you've heard that or seen that. Right? You know? And and, you know, and I I I know where that's coming from because I've been I've been at talks, and I've seen demos go horribly awry for all sorts of, you know, all sorts of reasons. So in in in some sense, the idea of doing a live demo is it's kind of a maybe a form of risk taking in a way where it's where it's like, I'm gonna do this really risky demo for fun, you know, just to see if you can kinda get away with it and just, you know, just see if you can see if you can make it work. Kinda kind of going counter to that conventional, conventional wisdom. I think part of what make maybe makes it possible on my end is I do a lot of teaching of Python. So the, you know, the idea of doing a live demo, that's not a that's not like an exceptional thing and only happens once in a while. And, you know, I'm doing that a lot in in the context of teaching classes and other other things. So it's not a not not a totally foreign thing to be doing, but I I I do enjoy it in conferences because it is this kind of high risk, you know, this high risk thing. And, you know, and and some of the advanced topics, it's it's more kind of playing with the idea of I don't know. Could you do a live demo on this, like, insane topic and and, like, put like, pull it off and and have it work? So
[00:10:51] Unknown:
Yeah. I remember watching your live presentation, from PyCon of 2015 last year where you were live coding generators and coroutines. And I was my mind was totally blown by that because, you know, as you said, doing live coding in a in a live presentation is generally frowned upon as a, a recipe for disaster. But you've managed to do it fairly seamlessly. All the while coding in emacs and from what I could tell, doing it all from memory. So it was quite impressive.
[00:11:18] Unknown:
Yeah. That was that I would say that was probably the most risky presentation I've done. I mean, there's no back there were no backup code or no backup slides on on that. I I will say on that presentation that well, actually, I mean, maybe the best way to think about that presentation would be as a jazz solo. I don't know if you're into music or not, but it's it's it's you know, with, like, a, you know, with, like, a jazz solo, there's an underlying structure, you know, of chords and the structure of the song, and you sort of know the structure and sort of where you're going. You saw you spend a lot of time kind of practicing, improvising on that structure Mhmm. You know, sort of over and over and over again. And and that was kind of the way that that talk was put together. I mean, I actually I I mean, I actually rehearsed that talk maybe 13, 14 times in advance.
Mhmm. And it was different every single time. In in slight in slight ways. I mean, it was more of like a, you know, like a like like a jazz solo, but it kind of knew where that talk was going. Right. And I'd kinda I was probably the number 1 concern was the timing, actually. It's you know, you're you're in this conference. You've got a 45 minute slot. And it's like, can you pull it off in the 45 minutes? And that's that that was there was a lot of practice kind of based on that, where it's like, okay. Let's start coding. Like, put a clock up on the wall Yep. And just see how far you can get in 45 minutes. So Yeah. If you accidentally take the wrong route or introduce a bug into your program, then just that 1 misstep could potentially throw off your entire timing and make you go over or not have enough time to complete. So Oh, yeah. Actually, on that, you know, I found that, like, any use of anything that would be considered good software would derail the whole talk. Like like, if you introduce, like, a class definition or anything like an object or something, it's like, oh god. It just go off the rails and you look at the look at the time, you realize, oh, I just spent, like, an hour and 20 minutes on this thing. And Right. It's not gonna Boiler plate was just eating up your time. Yeah. Yeah. Yeah. So you'd you have to you have to get rid of, like, all good software,
[00:13:15] Unknown:
you know, software practice with that. Hopefully hopefully, it wasn't too bad, but it's Well, I mean, I think that too that brings it down to the essentials and makes it easier for people to see the core concept that you're trying to present rather than getting bogged down in the details of the classes that aren't really fundamental to understanding the concept behind what you're trying to tell everyone about. Right. Right. I mean, you you get bogged down in kinda like the I don't know, more like the architecture of a larger program or something, then it's, you know, it's kinda getting away from kind of the topic. So So do you have any favorite stories about any presentations that didn't quite go as planned?
[00:13:49] Unknown:
Are you are you thinking of like my presentations or just any presentation?
[00:13:54] Unknown:
Well, yours in particular, but if you have other presentations that you've been a witness to that didn't quite go as planned, I'm happy to hear about that as well. Well, I I guess on my own,
[00:14:03] Unknown:
it's very easy to get nervous in a talk. 1 of the things I did in a talk once is I I was holding a, like a like a Sharpie pen. You know, like a, you know, you know, like, really like a Sharpie pen. And I was, like, like, fiddle like, fidgeting with it in the middle of the talk. And, realized, like, about halfway through the talk that I'd been spraying ink all over my shirt. So I, like, I looked down, and I've got, like, this shirt that's just, like, bleeding red or something like that, you know, this red ink. I'm like, just like, I mean, what can you do at that point? It's like you look utterly utterly ridiculous.
I I I think since then, I've always made a mental note to clear all pockets during talks. Like, no keys, no pens, no phones, just, like, empty the pockets, don't fidget with what you're, fidget with your stuff. Probably the most insane talk I've ever seen was, this this is not my talk, but it's worth it's it's kind of funny to mention. There's this, astronomer, Clifford Stoll, who, is kind of notable maybe 15 years ago because he tracked down some some hackers through a 75 cent accounting error and has this whole story about it. I saw him give a talk, you know, at a at a government site about that, and it was insane.
I mean, he he, like, stole somebody's candy bar, and he knocked the podium over. And he, like, broke he broke the projector, like, by pounding on it and then somehow managed to get himself locked out of the auditorium outside because he, like, walked out and, like, it it it was, like, the most amazing talk I think I've ever seen. I mean, it was it was it was so over the top, insane, and brilliant at the same time that, you you know, people were talking about it even, like, 20 years later. It's like, oh, do you remember that talk? And That's great. If you were there, it was insane. But enough about that, though.
[00:15:47] Unknown:
So do you have any of your talks that you consider a personal favorite?
[00:15:51] Unknown:
I think my favorite talk is the 1 I I did about the Superbore cloud thing. This is, I think when was that? Ficon 2011,
[00:15:59] Unknown:
maybe? It was Yes. That's 1 of my favorites as well, but, please tell the story. Well, I mean, that talk was so utterly ridiculous
[00:16:08] Unknown:
on all levels. I mean, like, the whole topic of this thing is just completely ridiculous. I mean, like, why would you take do this project? Which, I mean, it's just it it I mean, it was just it was so utterly just stupid, but so fun at the same time. And it was I I don't know. I've I've always kind of liked talks like that where there's there's not necessarily like a like a practical importance to it maybe, but it's it's just like a fun, just goofy, weird talk.
[00:16:36] Unknown:
Yeah. I remember when I first came across that, and I watched the talk, and my mind was blown. And I was like, that is 1 of the best talks I've ever seen because it's just, like you said, very entertaining. Not necessarily practical, but it still introduces a lot of useful concepts that could be extracted from it, like, you know, using Redis for clustering and how to reverse engineer things and just, it it really shows a very inquisitive nature and the the kinds of things that you can come up to if you, you know, let your creativity lose sometimes.
[00:17:05] Unknown:
I think a lot is actually learned by take undertaking just kind of weird, goofy projects like that. I mean, it's, you know, I really you know, I mean, just just in terms of, like, personal development and, like, learning new skills, you know, just just trying to do stuff like that is often really fun even if it's even if it's not, like, immediately practical. So
[00:17:24] Unknown:
And, continuing on a bit with the Super Board, on your website, it mentions when you were younger and first getting into the computers, you did a lot of work with low level code and some of the hardware knowledge that you picked up by packing on the different electronics. Wondering if you think that people who are getting started with programming now are missing out by not being exposed to the low level kinds of hardware and software that was present before computing became mainstream and some of the constraints that those imposed on people?
[00:17:51] Unknown:
Yeah. You know, I don't I don't know. I mean, that's kind of a it's kind of a it's kind of a tricky question. I I so so so I guess before I get into that, so I I actually got an invitation recently to, go visit 1 of Chicago public schools. We have a, you know, I guess, a magnet school near here, and somebody just found my name. They're like, hey, Dave. Why don't you come over and check out our magnet school and take a look at our technology, you know, just see what's going on. And I I I go over there not not really knowing what to expect. And, honestly, the experience I mean, I might as well have just walked into, like, a sci fi movie or something like that because I had kids at at pretty much all levels, you know, even from, like, pre kindergarten up, just doing all sorts of crazy stuff with iPads and, you know, tablets and computers. And, you know, I saw a lot of scratch programming and other things going on. And and and I have to be honest, it didn't I I would not have recognized anything in any of that that was even remotely similar to how I learned to program.
I mean, you know, nothing like, you know, interacting with basic or Python or anything. I mean, it would just look like this completely, completely foreign world to me. I mean, it where it looks like honestly, I was sitting there thinking it's like, god. I must be really old or ancient or, you know, some something like that. But then but, you know, this this, you know, this question, you know, do I look at that and think, you know, you know, are the kids missing something? I don't know. I mean, I I I kind of wonder maybe maybe the kids are learning maybe just in kind of the environment that's, you know, of their time, so to speak. Like, if I, you know, if I look at my own learning of computers, this would have been in late 19 seventies.
You know, had you got a lot of, like, mainframes, minicomputers, some personal computers and things like that. I mean, I remember, doing the stuff with, like, the Boy Scout. We would go to somebody's work, you know, 1 of the parents' work, and they would say, oh, here's this, you know, mainframe that we have at work, and then we would sit and play, like, adventure on the mainframe. Think it was, like, the coolest thing ever. You know? Like, we're seeing all this all this mainframe stuff. And it and, you know, and it and it resonated as a kid because you'd see that stuff on TV. Right? You'd you'd see, like, you know, some TV show, you know, like the $6, 000, 000 man or something. You've got all these mainframes with tape drives and cool stuff, and now you're seeing it. And it's like, oh, yeah. I wanna I wanna work on that. You know, the kids doing doing things today, I mean, they're they're not seeing that. They're seeing phones and tablets and other stuff. So maybe I don't know. Maybe I I don't know. I don't know that they're missing anything. I I do think the low level stuff is fun, though. I think, like, I think programming in, like, assembly code, doing things like device drivers, I mean, I think that's super fun kind of programming. But but, you know, whether I could, you know, convince the my kids to get excited about that, I don't know.
[00:20:38] Unknown:
Yeah. I think that sort of the fact that computing has become so mainstream and so commonplace that people aren't necessarily as likely to be excited by some of the lower level aspects of it because it just doesn't seem as striking or revelatory as it may have once been, particularly when computing was still a fairly new concept and hadn't made it into every aspect of our societies. And going back to your point about being able to do low level device work, I think it gives you 1 of the best phrases I've heard to describe that is mechanical sympathy. Because if you don't have the mechanical sympathy, then when you are working at a higher level, you're less likely to keep that in mind in how you're actually approaching problems. Because if you can understand what's happening down at the bit level even just in a very abstract way, you're much more likely to be able to write something that cooperates better with the actual machinery that it's running on.
[00:21:32] Unknown:
Yeah. I would I would definitely agree with that. I mean, in terms of in terms of my own learning, I mean, my, my dad was a chemist, and he was actually doing a lot with, lab automation. So this would have been in, like, you know, again, the late seventies. And I I remember him at home having these, you know, small board, basically, microcontroller, you know, computer systems where, you know, he's punching in actually machine code on a hex pad. I mean, you know, to control little pumps and things in his in his lab. You know? And I was sort of watching that as a kid, and I'm like, oh, that's really cool. You know, sort of, you know, learned through some of that. I was doing assembly programming in, you know, 7th grade or somewhere where it's you know, we had those books at home, and you could look at the book and kinda fiddle around with it. And, you know, the programs wouldn't necessarily do anything too exciting. You know? It's like, oh, blink an LED or something. And it Right. But it was it was kinda cool. You know, may maybe it's something you kinda pick up from your, you know, your parents, you know, watching your parents and Yeah. And seeing that. I I mean, I'm actually kind of wondering whether that's gonna happen with my own kids.
Recently, I've been working on writing a, a Minecraft server from scratch in Python just I don't know. Yep. For the hell of it, I guess. You know? You know? Like like like, why not? So, you know, the the you know, my oldest, you know, son comes over, sees me working on this. He's like, oh, what are you doing? I'm, like, writing a Minecraft server, and he's all of a sudden, he's, like, very excited about this this this possibility, but then he's he's looking at the screen. And, essentially, I've got, like, a giant e max window up, and I'm implementing a whole bunch of, like, cryptography authentication code. It's horrible. I mean, it's like all this, like, key exchange stuff that's up on the screen. And, you know, he's looking at that. He's like, you know, the the the, you know, the first question to his mind is, like, well, when can I place blocks?
Yeah. You know, I'm, like, you know, kid, we're we're we're not even remotely close to that. Yep. That that yeah. But, you know, may maybe the kids will kinda, you know, see that sort of thing where it's like, there's you know, dad is doing some crazy thing. I have no idea what it is. But if it if it manifests itself in Minecraft at some point, maybe it will spark some interest there. So
[00:23:46] Unknown:
Yeah. I think being able to tie it into the interests of kids is what's important. Like, personally, I'm, getting started up on a project with my son to use a Raspberry Pi to run a Jasper service, which is a voice computing package in Python. So So he wants to we're gonna build a Jarvis for our house. Yeah. Okay. Yeah. And, yeah, I think with Raspberry Pis and Arduinos and a lot of the single board computers, it's sort of bringing us back to some of the ethos that was present back in the, you know, sixties through the eighties of, you know, getting people interested in that lower level stuff and maybe getting more excited about, what computing is about and, you know, tying that too into some of the more recent developments in physical computing and robotics and voice activated computing. I think I think we're I think we're starting to come full circle. I mean, they're definitely pushing that stuff down. I mean, the,
[00:24:38] Unknown:
you know, the you know, my oldest child, I mean, in 2nd grade, they were doing some Raspberry Pi stuff. That wasn't, you know, it wasn't, you know, you know, super complicated things. I mean, they're doing a lot of stuff with scratch, you know, some of the visual Sure. Visual programming, but they're definitely definitely pushing it down. I mean, 1 1 of the dilemmas I'm having with it is just how much to get involved. Mhmm. Because I, you know, like, kids sometimes are a little resistant to their parents, you know, where it's like if, like, if I try to push too hard, I'm like, oh, you should learn how to program. You know, all of a sudden, it's gonna become uncool or, you know, it's like, oh, dad. You know? I I don't wanna I don't I don't wanna do that. So, I mean, I'm at the at the moment, I'm kinda taking sort of a hands off Mhmm. Approach to it and just kinda encouraging it, but not getting too actively involved. Like like, in terms of, like, like, micromanaging what they're doing at school and and stuff like that. I'm I'm kind of waiting, like, just to see whether they, you know, the kid comes home from school and asks, you know, Dan, do you know do you know anything about Python? And then then then I can jump in and say, well, yeah. I can know, you know, a couple things. And Actually, I wrote the book. Yeah. Right. Right. Right.
Yep. Well, 1 of them, anyway. I mean, the weird the weird thing is I'm not even sure I would know how to teach kids programming. Right. No. No. No. Honestly, like, you know, like, there are teachers at school who are doing the Raspberry Pi, I mean, they, you know, they have so much more insight about what people are doing on the education side than than me. I mean, what what would I am I gonna go in there and just teach the kid a bunch of hex codes or something? It's I would end up, like, damaging the child forever.
[00:26:09] Unknown:
So yeah. Yeah. I have a similar issue because, you know, having worked in industry for, you know, a number of years, it's hard to remember what it was like to actually get started and then even try to tie that into what a young kid would find relatable and how to get started with that. So, basically, I've been just been trying to tie it into his interests and not not focus on programming as an end in and of itself, but more as a means to a different end. So like the Jarvis project or, a little while ago, he wanted to write a, paint application. So I had him go through 1 of the tutorials for the Kibbe project and type that in, and he ended up with a functioning paint application that he could, you know, paint on with his touchscreen laptop. So Alright. Good. Yeah. Actually, kind of a fun fun I I have this book,
[00:26:53] Unknown:
I'm forgetting the author, but it's like learn to program with Minecraft Mhmm. For kids. And I I I bought that, and I just set it by the computer. I've just have never said anything about it. Just kinda just, like, see it there. And then, you know, the, my my 6 year old sort of ran off with the book. He was, like, very excited about the book, but then what he's doing is he's he's, like, he's not even paying any attention to the words in the book. He's just looking at the pictures that are inside, and he's, like, trying to create the things that are in the picture with just the game. You know? And it's just like, okay.
I'm fine with that. You know? Just maybe maybe they'll discover the word part of the book at some point. Right. It's interesting some of that tangential
[00:27:30] Unknown:
reasoning that kids can come up with where it seems like they're not necessarily grasping what you hope they're grasping. And then a little while later, they come up with some insight that you've never would have, never would have assumed that they would reach. Right. Right. Right. So 1 of the topics that you focus on a lot is asynchronous asynchronous programming. So I'm curious what kind of an impact do you think that that will have on the future of the Python language and ecosystem?
[00:27:54] Unknown:
Wow. That is an interesting question. So 1 of the things that's happened in Python recently is you've you've seen this kind of emergence of this async await feature in Python 3. It's kind of opened up sort of new thinking about, you know, sort of async programming and and possibilities there. I think that the impact of that might be even greater than async, because and you know, 1 1 1 of the things that that Python is used a lot for is is generally like network programming, systems programming. And people use threads for that. People use processes. People use use async. And, just just the emergence of that async away. I think it's having people it's it's getting people to maybe think about all of these things collectively, just like sort of what is the state of, like, network programming in Python. 1 of the things that's really interesting right now is this the fact that there's this async world and then there's the classic kind of thread programming world has got people thinking about, like, the relationship between those 2 sort of worlds of code. And, you know, are are like like, is each 1 of those gonna have its own implementation of different libraries or different protocols or different different you know, trying to trying to reconcile those 2 worlds in some way is something that, you know, people are thinking about. And 1 1 of the 1 of the I I guess 1 place where you see this is, so so Corey Benfield gave a talk at PyCon this year about how to implement protocols.
Basically, protocols without the IO being attached to it. So he's doing a lot of work with HTTP 2. And I think that is actually a really interesting project because what he's doing is implementing HTTP 2 with no, like, IO attached to it. And then it becomes this thing that's possible to maybe hook into through both async and maybe through thread programming. And that's and that's and that's actually I think that's, like, I mean, some I think that's a really interesting project. It's a really interesting thing to kinda think about. You know, what is going on there and sort of what are the state of these you know, what are the what is the state of, like, Python in this in in in this world? So I don't know. That might be a rambling answer. But
[00:30:00] Unknown:
I think it's a very good answer. And, I agree that the talk that Corey gave this year was very well put together and very well received. It was interesting some of the different places that he pointed out where the fact of the IO being tied in to the underlying logic of the program forced the implementation to be non compatible with other people who were trying to do the exact same thing. And the the focus of the talk was largely around HTTP parsing and how there are I don't even remember how many different projects he referenced, but every single 1 of them did HTTP parsing on its own, and most of them didn't quite do it right. And because of the fact that the IO was tied into the code that was doing the parsing, it made it impossible for all of these different projects to collaborate on 1 proper HTTP parser that they could all rely on and then handle the IO in their own separate ways.
[00:30:49] Unknown:
Yeah. I I wonder if some of that's gonna I I mean, I wonder if HTTP 2 is gonna be like like the like a catalyst that pushes a lot of that. Because, like, if I if I look at, like, my own coding, if you were to come to me and say, oh, Dave, can you implement HTTP protocol? I'd you know, you look at it and you say, oh, yeah. It's text. You have some headers. You got payloads. Yeah. I could probably bang out, like, an HTTP, like, 1.0 protocol in, like, an afternoon. It would probably be broken in various subtle ways, but it would it would basically work, though. Like, I mean, like, you could you could have something working in short order. Looking at this HTTP 2 stuff where it's, you know, it's all binary encoded, and you've got all these, like, interleaved streams and, like, all this stuff going on. I I mean, I look at that. No way. I mean, there's no way I would be able to hack something like that in the afternoon, let alone maybe a week. And even then, just trying to understand that, no way. No way. I mean and and and, you know, and and, like, the the fact that, you know, Corey has taken that protocol and put it in a library. I mean, I look at that, and I'm just like, that's awesome. Because then I don't have to think about, like, doing that. I mean, it's like, I don't even wanna think about how that works. I mean, just looking at the protocol and, like, you know, just just having that available, I think, is really cool. So
[00:32:05] Unknown:
Right. It's a very interesting point. The fact of how accessible the HTTP 1 protocol is makes it much more likely for people to implement it on their own because it is at first glance relatively simple until you start actually getting into the weeds of some of the edge cases and some of the lesser used pieces of the specification.
[00:32:21] Unknown:
Yeah. Yeah. I mean, 1 of 1 of the other things that I think, I mean, kinda ties into this too is this, you know, I I I hear about a lot of projects where they're, you know, they're on, like, Python 2. And then all of a sudden, they decide to go to they decide to just rewrite everything in Go. I mean, this is probably something that you've Yes. That you that you've heard. And and, you know, and it's you know? And I hear these stories, and and and 1 theme that comes out is is people are they're they're like, oh, well, we don't wanna port it to Python 3. And I I sort of hear that, and it kind of bugs me because it's like Python 3 is really not that different than Python 2. I mean, if you've, like, I've been programming in Python 3 for a while. It's like, okay. Come on. It's not it's not it's not different enough from Python 2 compared to an entirely different programming language. I mean, you know, it's Mhmm. Kind of the same thing. And I and I I I sort of wonder whether maybe the real reason that they're switching is that just Python is just not telling a good story when it comes to a lot of these things like async programming and, you know, concurrency and threads and processes and Sure. And and so forth. And, you know, I mean, maybe even, like, this protocol stuff is kind of entering the picture as well. You know, it's you know, you you you get in there. It's like, okay. What do you do for things like WebSockets? What do you do for HTTP 2? And it's a it's a it's like a real muddled I think it's a real muddled picture in Python 3. And I I think if, you know, I think if that problem can be addressed or simplified or, you know, a better story can be told there, you know, I think I think Python could still you know, maybe people wouldn't be wouldn't be switching. You know, maybe Python you know, I I don't know. I mean, that's that's Yeah. That's great. Just kinda kinda thinking out loud. But, you know, some of these things with the async await, the the protocol work, I think there's a really interesting kind of forward looking projects where it's you know, may maybe that whole side of Python could be reinvented or or or rethought. And I I think that would be a pretty exciting thing to see. So
[00:34:15] Unknown:
Yeah. And I think too part of the part of that could be the fact that because Python is so general purpose and broadly used for such a wide variety of things, whereas some particularly Go has a much more narrow application, and people who are looking for something that's easy to deploy and highly concurrent, they say, oh, well, that's exactly what Go is. Whereas Python can do all of those things, but it also has all these other, competing story lines. So it's not as clear to people who are looking for just the concurrency piece of it that Python is going to give them what they need. Right. Right.
[00:34:50] Unknown:
Well, I mean, like, you know, a big part of Python, you know, for for me I mean, I use a lot on the data analysis side, you know, just ripping apart files and things like that. I love features like list comprehensions and, you know, dictionary comprehensions and all the tools sort of surrounding that. I mean, it's it's like, oh, this is awesome. And I I sort of wish, you know, why couldn't it be awesome like that also in the async concurrent space? I mean, right now, I'm not sure it's so awesome. I mean, it seems kind of scattered and overly complicated or Yeah. Whatever. But it's you know, if, you know, if it could be made simple, I mean, that that would be pretty neat. So
[00:35:26] Unknown:
Yeah. It'll definitely be interesting to see how the APIs and libraries around that aspect of the Python ecosystem evolve over the next few years. You know, speaking about some of the other languages out there, are there any features that you see in other languages that you would like to see incorporated and brought into Python?
[00:35:42] Unknown:
Curly braces. No. I just yeah. Yeah. Yeah. Let's just leave it at that curly braids. That's a good that's a good, I don't know, like, trollish answer, I guess. Yes. Yeah. I mean, I mean, obviously, just the concurrency stuff. I don't know. May I mean, maybe you could get into some crazy pattern matching, you know, some of the functional language things, but, I I don't know. Okay.
[00:36:07] Unknown:
Fair enough. Leave leave it at curly braces there. Sounds good. So you, over the course of your career, have worked on a large number of different projects, both on a hobby and professional level. Wondering if you can pick out some of your favorites.
[00:36:20] Unknown:
Favorite projects. I definitely have a fondness for, I guess, sort of low level kinda hacking, you know, like, like, hardware devices and thing things like that. So so definitely, like, that super board project. As ridiculous as it was, was a was a fun thing. Actually, probably 1 of the the the most fun projects that I've done. This this is actually 1 that people had probably never heard of. It was actually a project for which I never got paid, but it was, that's that's a whole long story. But I I I got contracted to do a software sabotage project.
So so here here's kind of the backstory on this. The basic basically, a company contracted out to have some software developed for a for a hardware device. It was it was, like, device driver code. And then, they got in a, like, a legal battle with their developer who was then ordered to, like, ordered to turn over source code by the court. But when he did it, he sabotaged the code intentionally. Mhmm. And handed it over to the or to this this this company. And so all they had was, like, a sabotaged version of source code. And And then I ended up doing this project of trying to fix the source code having very little knowledge of, like, the original code. The only thing we had was, like, a binary executable on, like, a, like, a microcontroller that was that was available. And it was, like, this crazy project of trying to figure out, like, what had been sabotaged and and, like, restoring it to an operational state. So it was it was sort of this insane, like, debugging project from from, like, hell, basically. It was like you don't have the original code.
You can't run the code in anything other than, like, a simulator because it was, you know, it's like an embedded, you know, like an embedded system sort of thing, and it was, like, crazy low level, you know, like, device driver control control stuff. I I always thought it was, like, awesome because it was so, it was just so unbelievably insane of you know, like like like, how do you even get a get a handle on this? Right. Yeah. I mean, I mean, just to give you, like, an like, the insanity, the only working version of code in this whole project was printed as a hex dump in a PDF file in, like, a court document.
So it had this, like it was like this document. It was, like, stamped, like, attorney eyes only. It was just like a page of it was, like, 63 pages of hex on, like, printed pages. And, you know, part of the project involved doing, like, OCR scanning of that and then, like, running it through, like, a dis like, a decompiler to try and turn it back into, like, machine code and then trying to take that and, like, match it up with what the c compiler was outputting, and you're it's it's just like this mad project. That sounds pretty wild. There was there was some Python involved with that, but it was meh. I don't know.
[00:39:04] Unknown:
Wow. I I I I kinda like crazy crazy stuff like that. So No. That definitely sounds like it would take the cake in that department. So, I guess, what is it about Python that has managed to hold your interest for so many years?
[00:39:17] Unknown:
I think it's just fun. I think it's a really fun language to just kind of work in. I mean, you get, like, the, you know, the the instant gratification of just being able to do stuff and see it see it work. I also, I also like the fact that Python is so pragmatic both as a language and as a community. I mean, that might be kind of a might be kind of a weird thing to say, but, like, Python as a as a community has never really been that focused on, like, I guess, sort of, like, purism, if you said. You know? Like like like, you know, it's it's it's very easy, you know, in, like, certain areas, like object oriented programming or functional programming or these different areas to kinda get off in this in this mode of, like, well, that's, like, the only 1 way of thinking. Mhmm. And I've always found that, like, a little bit tiresome, to be to be honest. And, you know, 1 of the 1 of the things I like about Python is it's very it's much more pragmatic. You know? It's like you have different ways of doing things.
The community as a whole is not really fixated on, you know, like, the 1 and only true way of doing things. And it's, you know, I I think people are more focused on actually just trying to solve their problems. You know, they've got practical things that they're trying to do. They're trying to solve problems. I I think that's, like, a really interesting part of the language, but just the community and the language itself that Yeah. I think the fact that it has
[00:40:33] Unknown:
pretty much always been a language used by practitioners and hasn't been strongly focused on, you know, for instance, the research community, has kept it from getting pigeonholed and has managed to, bring in people from all areas. And the fact that it is so good at interfacing with multiple different projects and languages,
[00:40:51] Unknown:
keep keeps people from getting too stuck in their ideals of what it should be because they're busy getting things done with it. Yeah. I mean, it's a language, you know, where somebody can go to, like, a, you know, a Python conference and give a talk about, you know, creating a Python powered, like, squirrel cannon or something. You know? And it's like, oh, that that's that's that's awesome. And then at the, you know, at the same time, there's, you know, people people are doing much more serious things with it as well, and I think that's really Right. That's really neat. I think I think it's actually kinda kinda kinda awesome that there are, like, little things about the language that that just tend to annoy people. You know? Like, you know, you know, like like like you get into these arguments, like, oh, Python doesn't have, you know, tail recursion optimization or something like that, which is honestly this feature that really doesn't matter at all, but it tends to annoy people that probably should probably deserve to be annoyed in some Or case statements.
Yeah. Or case statements or the, or, you know, I tell people, you know, I use the I use the global interpreter lock to, you know, to trick people or something. You know? It's although although it it it would be nice to get rid of. Not it's not not not as critical as as a lot of people a lot of people think, though. So Yeah. So are there any other topics that we think we should discuss before we close out? Well, I don't know. If you if you like the the async stuff, you might take a look at this Curio project I've been working on. I didn't really say too much about that, but I've been, you know, this on this idea with the async and the protocols and stuff, I've been thinking a lot about just how much abuse can you layer on top of async and await and just sort of take that in different directions? So I've got this you know, so so they have a project kind of exploring some of those ideas. It's, it's actually been a lot of fun because it makes me, sort of wonder if I'm still programming in Python. That, you know, that feature of Python is so new and so weird and sort of sort of awesome at the same time. It's kinda fun to play around in that space.
So might might look at that. And then I and then I would I would also just encourage people to look at the the protocol stuff that's going on. You know, Corey's work that is Yeah. I took I remember I saw must have been a couple months ago now.
[00:42:53] Unknown:
I think it might have been when you first announced Curio. I took a look at it. It definitely seemed very interesting. I haven't circled back to it, but,
[00:43:00] Unknown:
thank you for the reminder. I'll have to give it another go. Yeah. You have a talk about some of that at PIE Ohio. It's not so much about Curio, but just about all these, abusive things with async and await and, you know, mixing it up with different Python features. So you might might might look at that if you're kind of interested in that sort of thing. Great. So
[00:43:18] Unknown:
for anybody who wants to follow you and keep up keep up to date with what you're working on, what would be the best way for them to do that? Just follow me on Twitter. Okay. So Alright. So that will go into the picks. For my pick this week, I'm gonna choose the movie Criminal with Kevin Costner and Gary Old man and Gal Gadot. I watched that the other day, and it was actually very well done. That face value re watching the trailer, it looked like it would be entertaining, but not necessarily too scintillating. But all the act is very well done. The storyline is well put together. Kevin Costner does a good job in the main role of playing somebody who he's psychologically incapable of understanding the moral impact of his actions. But through the course of the story, he has someone else's memory implanted into his. And that modifies his brain chemistry to the point where he actually starts to understand the relevance of what he has been doing and some of the struggles that he goes through there. I think he does a really good job with pulling it off. So I recommend people check that movie out. It was pretty well done. And with that, I'll pass it to you, Dave. Do you have any picks for us this week? It's kind of a weird maybe a weird pick, but, over over the last couple of years, I've been,
[00:44:28] Unknown:
kind of very interested in Samuel Beckett plays. Okay. And I I I would say if you if you want inspiration for, like, insane presentation ideas, go watch some Samuel Beckett play. Alright. Like, I keep thinking about them as I'm preparing, like, talks for the next conference. I'm like, I wonder if I could do some crazy thing that I saw in this play.
[00:44:48] Unknown:
And and for unfortunately, I haven't been able to pull anything like like that that off yet, but it's been been on the back of my back of my mind a little bit. So Alright. Well, I definitely appreciate you taking the time out of your day to join me and tell me about your work and some of your history with Python and computing. It's been very interesting. And, yeah, I look forward to seeing what you produce in the future. Okay. Thank you very much. It's fun. Have a good day. Okay. Thanks.
Introduction and Sponsor Mentions
Interview with Dave Beasley Begins
Dave Beasley's Introduction to Python
Python's Impact on Dave's Career
Live Coding and Presentations
Learning Programming: Then and Now
Asynchronous Programming in Python
Favorite Projects and Experiences
Closing Remarks and Picks