Find past episodes and more information about the show at iTunes, Stitcher or TuneIn
Give us feedback! (iTunes, Twitter, email, Disqus comments)
You can donate (if you want)
Overview – Interview with Allen Downey, Prolific Author and Professor of Computer Science
Interview with Allen Downey
- Introductions
- How did you get introduced to Python? – Chris
- Wrote a Java book with an open license to allow anyone to make changes
- Jeff Elkner translated it to Python
- What attributes of Python make it well suited for use in teaching computer science principles?
- Syntax is simple, makes a difference for beginners
- Good error messages
- Batteries included
- One of the things I found very compelling about Think Like a Computer Scientist is its use of interactive turtle graphics early on. What makes the turtle continue to be a compelling educational tool and what made you choose it for this book in particular?
- Everything you do has a visible effect, makes it easier to see what’s happening and debug
- Used to introduce functional decomposition because of no return value in turtle graphics
- Great way to explore complex geometric concepts
- Did the structure of your courses change when you started using Python as the language used in the classroom? Were you able to cover more material as a result?
- Able to make material more interesting
- Less time spent fighting with syntax
- As a professor of computer science, do you attempt to incorporate the realities of software development in a business environment, such as unit testing and working with legacy code, into your lesson plans?
- Unit tests useful as a teaching tool
- Version control getting introduced earlier
- A number of your books are written around the format of ‘Think X’. Can you describe what a reader can expect from this approach and how you came up with it?
- Learning how to program can be used as a lever to learn everything else
- You can understand what a thing is by understanding what it does
- What are some of the more common stumbling blocks students and developers encounter when trying to learn about stastics and modeling, and how can they be overcome?
- Traditional analytic methods for statistical computation – get in the way and impede understanding
- P-values are a great example
- What test should I do? is the wrong question
- Traditional analytic methods for statistical computation – get in the way and impede understanding
- I’ve heard you refer to yourself as a ‘bayesian’. Can you elaborate on what that means and how bayesian statistics fits into the larger landscape of data science?
- Frustration with frequentist approach to statistics
- Wasted time over debate of objectivity vs subjectivity
- Bayesian approach takes modeling ideas and makes them explicit
- Can directly compare and contrast results of competing models
- Classical approaches don’t answer the most interesting questions
*We’re big fans of iPython notebook which you’ve used in at least one of your books already – can you describe some of the ways you have implemented it in an educational context, as well as some of the benefits and drawbacks? - Started using about 2 years ago
- Appreciated usefulness for books and teaching because of synthesis of text, code and results
- Working on DSP really highlighted the usefulness of IPython notebooks
- Frustration with frequentist approach to statistics
Picks
- Tobias
- Chris
Keep in Touch
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. Your hosts, as usual, are Tobias Macy and Chris Patti. We're recording today on June 22nd 2015. You can follow us on Itunes, Stitcher, or TuneIn Radio, and please give us feedback. Leave us a review on Itunes or Stitcher. Contact us on Twitter, send us an email at hostpodcastinit.com, or leave a comment on our show notes. And if you'd like, you could send us a donation. There are details on our site at podcastinit.com. Today, we're interviewing Alan Downey, who is a prolific author of many technical books as well as a professor of computer science at Olin College in Needham, Massachusetts.
Allen, could you please introduce yourself?
[00:01:10] Unknown:
Yeah. Hi. Thanks. It's a lot of fun for me to be here. I'm looking forward to it.
[00:01:15] Unknown:
So, Alan, how did you get into Python?
[00:01:19] Unknown:
This is 1 of my favorite stories. I actually started with a Java book that I wrote in 1999. And I put it out, I put it under, a free license that lets anybody make modified versions, and, Jeff Elkner, who's a high school teacher in Virginia, took me up on it. And he translated the book from Java into Python. He sent me back the Python book, and I learned Python by reading my own book, which was it's it's very strange because I read it, and it it sounds like me. It's it's in my my writing style, but it was telling me things that I didn't know. So it was a very strange experience.
It's like in, time travel movies, where future you comes back and tells you things that you need to know. I I learned Python from from future me.
[00:02:07] Unknown:
You must learn Python or the universe will perish.
[00:02:10] Unknown:
That's right. Learn Python if you want to live.
[00:02:15] Unknown:
That definitely sounds like it would be somewhat of a surreal experience. So, what attributes of Python make it well suited for use in teaching computer science principles?
[00:02:25] Unknown:
A lot. I think it's it's a great teaching language. I think it's a great first language for people who are just learning to program. 1 part of it is the, you know, the syntax is is simple. For beginners, that makes a big difference. The error messages tend to be good. They're written in the vocabulary that the students understand. So that makes a big difference. And the whole batteries included philosophy means that you can get right into the data structures. You've got lists and dictionaries built in. And you can get right into the modules that do things like graphics and network communication, the things that make programming really, engaging and fun.
[00:03:05] Unknown:
So 1 of the things I found very compelling about think like a computer scientist is its use of interactive turtle graphics very early on. What makes the turtle continue to be a compelling educational tool, and what made you choose it for this book in particular?
[00:03:20] Unknown:
Right. Yeah. It's funny. You know, it goes all the way back to logo. As far as I know, maybe it goes farther than that. And so many languages have some version of turtle graphics. It's a great way to learn. I think there are 2 pieces. 1, you know, everything that you do has a visible effect on the screen, which makes it a lot easier to understand the model of computation, a lot easier to debug. So much of what makes programming hard is that it's invisible. It's happening in this abstract world that's hard for for students to get a grip on. So making things visible, I think, makes a huge difference. The other, I was thinking about this, I use it in think Python to introduce functional decomposition.
The idea of taking a big complicated problem and breaking it up into a bunch of small functions. And I think that works really well with turtle graphics because there's no return value from these functions. They are all functions that have side effects, but no return values, which is a little bit of a simpler idea of what a function is. It gives students 2 steps, where first they learn functions that only have side effects and you only add return values later. So they get a little bit more time to understand what I think is the hardest idea when you start to program, which is really really getting functions.
[00:04:40] Unknown:
That definitely makes an awful lot of sense. I'm a I'm a huge logo fan from way back. I was an Atari logo fan, and I love the whole concept of turtle graphics. I think it's it's an intellectual springboard, really unlike any other in lots of ways because it's this really simple conceptual interface through which you could explore all kinds of really interesting and complex geometry, fields of inquiry. And, and so I was really excited to see you use it. That's great. Thank you.
[00:05:11] Unknown:
That's a great point about geometry. I think it's a way to take a topic that's part of the math curriculum and work with it in a way that's much more engaging for students. So, yeah, it's a really fun fun approach.
[00:05:23] Unknown:
Yeah. That's very interesting to hear you talking about using that as a way to sort of give a gentle introduction to some functional principles as well because it's something that I know I, at least, would never have associated with functional programming, and I'm sure most other people wouldn't either. So it's just an example of how some simple things can have some very complex things underneath them if you learn to look at it the right way.
[00:05:46] Unknown:
Right. You you know, you can get to recursion very quickly, which is, you know, no notorious for being a difficult idea. But with turtle graphics, you can write, you know, just a you know, 5 lines of code and have things drawing, you know, trees and snowflakes and and things like that.
[00:06:03] Unknown:
So did the structure of your courses change when you started using Python as the language in your classroom, and were you able to cover more material as a result?
[00:06:12] Unknown:
Not more material. I mean, there's a certain amount of time. There's there's only so much you can do. But I felt like I was able to replace some of the least interesting material with much better material. I was teaching in Java before, and you know Java is a good language. It has a lot of, you know, nice properties. But for beginners, they spend a lot of time with the syntax. So they're, you know, moving the semicolons around, getting the squiggly braces in the right place, those kinds of things. When that is out of the way, we just we get through the basic elements of the language more quickly.
And so that does change the structure of the course. Instead of spending a whole semester really focused on the language, I get through most of the language in about 7 weeks. It's a subset of Python. It's not everything. But after 7 weeks, the students are really ready to do, substantial projects. So the second half of the class, most of what they're doing is a project where they get to choose almost anything they wanna do. You know, a lot of them choose games and things like that, but 1 of them do some really interesting, really substantial projects in an introductory class.
[00:07:22] Unknown:
As I'm sure anyone who has worked in a language, in 1 of the C style languages can attest moving from that to Python definitely frees up a lot of time spent dealing with punctuation that can sometimes become very fiddly and lead to obscure bugs that you're not not quite sure you understand why they're happening and definitely having the more human readable syntax of Python certainly speeds things along.
[00:07:47] Unknown:
Right. Right.
[00:07:49] Unknown:
I think the very thing that you're the very characteristic that you're talking about is exactly the reason why some really died in the world, programmers like c people and c plus plus people hate Python because that the the fact that it gives you this very structured syntax where there's very little ambiguity drives them nuts because they feel like they're having their fine grained control taking taken away, and they they can't stand it. At least, that's my experience anyway.
[00:08:19] Unknown:
Well, I disagree. I don't feel like I'm losing any control at all. In a language like C, you don't have to indent, the body of an if statement, but you're supposed to. Right. So, you know, Python makes it mandatory, but it's not taking away anything that I particularly wanted to do.
[00:08:42] Unknown:
I definitely agree with you. I feel like having reasonable defaults be codified as the right way to do it in the language makes an awful lot of sense for at least many use cases, certainly any that I would encounter. I definitely agree.
[00:08:57] Unknown:
Also, just the differences in syntax and as you mentioned, the ability to spend less time on the peculiarities of how to actually write the language. I could see why that is causing such a rise in adoption for Python as a primary language for university courses and even advanced CS courses. So definitely very interesting to hear firsthand from somebody who's actually covering that material as an educator. Going back to your note about it being best practice to indent your code even if it's not absolutely required, I saw a little while ago an interesting image of somebody who had written some Java code in a manner that made it appear to be Python by taking all of the curly braces and just lining them all up on the right hand side of the code so that they were out of the way and then indenting everything else as if it were Python. So it was pretty pretty hilarious to see that.
[00:09:50] Unknown:
Oh, that is funny. I'll have to look that up.
[00:09:53] Unknown:
We should put that link to that in the show notes. That that, that does sound amusing. Yeah. I'll have to try and find that again. So as a professor of computer science, do you attempt to incorporate the realities of software development in a business environment, just unit testing and working with legacy code into your lesson plans?
[00:10:11] Unknown:
Yes and no. Definitely unit tests. That's something I came to kind of late, but I've come to like it more and more, not just as a software engineering tool, but also as a teaching tool. So unit tests, I think, are great for teaching. Version control is another tool from software engineering that I used to do late in the curriculum, and I've been pulling that earlier. We use git and GitHub in my introductory class now. Legacy code. We don't do that in my introductory class. I used to have a software engineering class that that focused on that more. I think that's hard to do in an academic environment.
It's definitely important in a professional environment. That's most of what you're gonna be doing as a professional programmer. But I think it's 1 of those things that some things are easier to learn in a work environment. It's really hard for me to get students excited about good software engineering practice in a class. Once they go in a work environment where they really see the importance of it, partly because it's required, you know, you're not gonna be allowed to check your code in until it meets code quality standards. But also because they're gonna have the experience of a large project that runs for a long period of time and starts to collapse because of increasing complexity, because of decreasing code quality.
That you really do have to maintain good practices and good code quality or else the project suffers.
[00:11:32] Unknown:
Yeah. That's very interesting that you point out the code quality. I was just wondering if that's something that you encourage or enforce at all in your assignments for your students if they have to adhere to a particular style guide or anything like that?
[00:11:47] Unknown:
We do a little bit of it. We do talk about code quality. I teach relatively small classes. I usually have about 30 students. And that means that I get to do a lot of face to face grading, where we can look at a piece of code together, and I can tell them not just whether it's correct or not. Because they really don't need me to tell them whether it's correct or not. They can run it. They can test it. What most useful is I can give them comments about style and and, code quality.
[00:12:13] Unknown:
Certainly. It's good to hear that you are incorporating some of the realities of what a work environment would be like into your lesson plans because it's definitely something that I hear a lot working in industry of people coming out of college and not having any real sense of what working in a legacy code base can be like or working with other people can be like. So that actually brings up another interesting point. I'm curious if you have any sort of team activities where there are groups of students working together on a particular piece of code or a particular application?
[00:12:45] Unknown:
Absolutely. That's actually that's a big thing at at Olin College. Right from the beginning, we've got students working in teams in almost every class that they take. It's a major focus of the curriculum, not just in computing classes. It's across all of engineering. So we have a class that's an introductory class for us that's about modeling and simulation, and that's actually in MATLAB. That's before they take the the Python class. Right. So we've got students working in teams in in software classes and also, you know, throughout the engineering curriculum. In the, the intro class, the Python class that we've been talking about, they do a little bit of pair programming. I give them some instruction on how pair programming works and they practice it a few times in class. And then during the project phase, they're almost always working on teams.
Usually, 2 to 5 students is the typical size for those teams.
[00:13:33] Unknown:
Definitely sounds like a good preparation for working in the real world because unless you're in a very large company, that's about what, the size of a team that you're likely to be working with, and a good experience to be dependent on other people for ending up with a working application and realizing that not all the code that you're gonna be writing is done in a vacuum. And it also teaches them to interface both on a code level and on an interpersonal level to make sure that things get done according to the specification.
[00:14:02] Unknown:
Yeah. That's a great point.
[00:14:04] Unknown:
So a number of your books are written around the format of Think X. Can you describe what a reader can expect from this approach and how you came up with it? Sure. You know, the fundamental idea is that if you know how to program,
[00:14:16] Unknown:
you can use that skill as a lever to help you learn everything else. It came about mostly because this is the way I found myself learning new things. That I would take up a new topic. I started learning about, you know, kinematics in the context of robotics. And I found myself naturally translating these ideas that are often expressed mathematically. And I would want express them using code. And especially using object oriented code, what I found is that I could really understand what a thing is by describing what it does. If you tell me what methods it provides, I understand what that object can do and and what it means. So that's what I've started to do with the books. I started with statistics and then Bayesian statistics. I've got a book that's about complexity science. The 1 that I'm working on right now that I'm very excited about is digital signal processing. It's called Think DSP.
It's just a draft right now, but I've got it up on my web page so people can start to read it and I get I get feedback from readers. But the idea again is that I can take all these ideas from signals and systems and control theory and express it using code both as a way of exploring. You can do experiments. You can really get a feel for how these things work. And also for really understanding what these mathematical entities are. That sounds like the exactly the kind of textbook I wish I had when I was taking my DSP courses. Nice. Well, I wish I wish I had done it earlier.
[00:15:41] Unknown:
Another thing I've noticed that you do with your books is that you make them all freely available online for anybody who wishes to download a PDF copy. And I'm curious what inspired you to take that approach in addition to offering them for sale by, I think most of them are printed with O'Reilly.
[00:15:55] Unknown:
That's right. Yeah. O'Reilly has done a lot of the books. It's been great working with them because they really understand this of having a free version of the book, but also making it available for sale. You know, there are a lot of reasons. Part of it is just to get the book out there and and let people have access to it who might not have access to physical books, might not be able to afford physical books. I get a lot of email from people all over the world, often in environments where books are rare and expensive, and they really appreciate being able to have access to this material. It also, you know, it's a different product. It's not just, you know, 1 book is under a free license and another book is under license.
The free license lets people make modified versions. They can translate it into other human languages. They can translate it into other programming languages. So the book that I put out there under a free license becomes the root of a tree, and each branch of that tree then leads to the next branches. It brings people in to become contributors. It takes people who would never write a book. I know several versions of the book that started out because someone thought, well, I'm just gonna change things around a little bit. And then they gradually made more and more changes, and eventually really wrote a substantially different book without ever
[00:17:13] Unknown:
intending to become an author. And I just I love that that is happening. Yeah. That definitely sounds like a really excellent way to contribute back to the community and to inspire others to do the same. I'm curious if there are any particular modifications or derivative works that you are most surprised by or most proud of.
[00:17:32] Unknown:
Well, you know, I mentioned, Jeff Elkner who did the first version that was in Python. Charles Severance is another example where, again, I don't think he intended to sit down and write a book, but then he accidentally did. He's got a derivative version that's called Python for informatics. At least, I think I'm getting that title right. So, yeah, there are a couple of other examples and then lots of translations into other foreign languages.
[00:17:56] Unknown:
So what are some of the more common stumbling block students and developers encounter when trying to learn about statistics and modeling, and how can they overcome?
[00:18:04] Unknown:
Yeah. Statistics has turned out to be a really fun area for me. And it's funny, I'm not really a statistician, but as I got into it more and more, I thought about exactly what you're asking. You know, what what's wrong with this? Why is this such a hard topic? Why are people so mystified by what seems like a fundamentally simple idea? And I think part of it is just that the math gets in the way. A lot of, the way that statistics is taught, they spend a lot of time on analytic methods that were very important when there were no computers.
If you have to do statistics with paper and pencil, then the analytic methods are important because you can look things up in tables and they're computationally very efficient. But once you've got cheap computation, the analytic methods are are not only unnecessary, but they really get in the way of just understanding what's going on. E values are a perfect example. If you talk to people about hypothesis testing, all they remember from a statistics class is that there were 20 different tests. You know, there was a z test and a t test, and I don't remember which test. And then when they're confronted with a real world problem, all they know to ask is what test should I do?
Which is the wrong question. There's really only 1 test. If you're computing a p value, what you're computing is what's the probability? If there's really nothing going on here, If there's no difference between these 2 groups, what would be the probability of seeing an effect as big as what I saw? And if you understand that question, then it's very easy to compute because you can just simulate the null hypothesis, simulate what the world would be like if there really was no difference between these 2 groups. And then run that simulation, let's say, a 1000 times and just count how many times do I see an effect as big as what I actually saw?
That's what a p value is. And you don't need any math to do it. You just have to be able to count.
[00:20:04] Unknown:
Yeah, it's very interesting to reimagine how statistics and analytical methods can be taught now that we do have these computational capabilities that weren't possible when all of these disciplines were first being invented. Yeah, I could definitely imagine how that would make them significantly easier to learn because I've dabbled a little bit in trying to teach myself some statistics, having come from more of an engineering background. And, yeah, some of the coursework that I've seen is just very confusing and hard to approach and really comprehend because of the way that it's presented. And I'd imagine that reapproaching that from a computational perspective would definitely make it easier for me as an engineer, and I'm sure for other people as well who may not have that hardcore mathematical background.
[00:20:47] Unknown:
You know, it kinda reminds me actually of the emphasis on relatively complex number computation as the basis for mathematics. Right? Like, I I I'm terrible at math, which I realize is, like, you know, I have many friends who are math geniuses who just look at me when I say that and cringe because they basically say, you know, nobody is terrible at math. You just need to stop being afraid of it and do it. And 1 of the things they, like, they told me recently is, I'm terrible. I I have really bad vision. I'm partially blind. And so I'm very very bad at the really long division with 15 digits kind of problem, where you have these incredible stacks and columns of numbers that you have to get in careful alignment or else the answer isn't gonna come out right. And, you know, I end up stalling there in Khan Academy because I, more often than not, don't come up with the correct answer.
And these people have been lately telling me, so who cares? That's what computers are for. You don't actually need to know how to perform 15 digit long division in order to understand higher mathematics, and you're foolish for allowing yourself to be stymied by that. So this kind of makes me think of that.
[00:22:00] Unknown:
Yeah. I think that's a great point. I mean, and I don't mean to bash mathematics. I love mathematics. But you're right. That kind of computation, you know, right. System of rules will have certain consequences and how there's a
[00:22:25] Unknown:
lot that's really engaging there. And, of course, there's a lot that
[00:22:26] Unknown:
connects a there's a lot that's really engaging there. And of course, there's a lot that connects with, with software development and with computer science.
[00:22:34] Unknown:
Continuing the discussion of statistics and analytical methods, I've heard you refer to yourself as a Bayesian. Can you elaborate on what you mean by that and how Bayesian statistics fits into the larger landscape of data science?
[00:22:46] Unknown:
Sure. What does it mean to be a Bayesian? Well, part of it is that you have to believe that Bayes' theorem is true, which it is. It's just a mathematical truth. So that part's easy. I suppose the second part is a certain frustration with the frequentist approach to statistical inference. I just think historically, we've spent too much time on hypothesis testing and computing confidence intervals. And we've wasted a lot of time on what I think is really a debate in philosophy of science about objectivity and subjectivity.
1 of the goals of Frequentism is to make science be objective, and it just can't be. Fundamentally, everything that we believe about the world is subjective. We just have to face up to that. What the Bayesian approach does is it allows you to take those modeling ideas and make them explicit. And put them on the table. So that if you and I disagree about what the right model should be, we can we can have that discussion, but we can also we can run your model, we can run my model and see what the differences are. Eventually, if we see enough data, and if we agree at least on some of the underlying principles, will eventually converge to either no difference or a difference that's small enough that it doesn't matter anymore.
So I guess that's the second part, is your abasian if you're frustrated with frequentism. In part because the classical approaches just don't answer the questions that we're most interested in. I talked about p values a minute ago. I said, look, p values can be very easy to compute if you want to. But the other problem with p values is that they fundamentally don't answer the question you care about, which is whether my hypothesis is true or not. Or if you can't tell me that, then you should at least tell me what the probability is that my hypothesis is true. And Frequentism just refuses to answer those questions.
So I think that's the fundamental reason I call myself a Bayesian, whatever that means.
[00:24:47] Unknown:
We're big fans of Python notebook. Pardon me. IPython notebook, jeez, which you've used in at least 1 of your books already. Can you describe some of the ways you've implemented it in educational context as well as some of the benefits and drawbacks?
[00:25:01] Unknown:
This is something I came to kind of late. I only started using IPython Notebook for real about 2 years ago. I I tried it out a long time ago, but it just it doesn't work very well with my programming style, so I kinda left it behind for a long time. But when I came back to it, I really appreciated its usefulness for books and for teaching. It's great to be able to lay out on the same page the text that explains what's going on, and the code that implements it, and then the results. And the results can be, you know, visual things like graphs and numerical results. But I think the thing that really brought me around is when started working on digital signal processing, because now the results can be a little snippet of audio or a picture or an animation.
And that makes a huge difference for understanding things like Fourier analysis. Because you can, you know, load up a little sound sample, and you can listen to what it sounds like, and you can look at the spectrum so you understand the harmonic structure. You can apply a filter to it, and then you can see visually what it does to the spectrum. And then you can listen to it and hear what effect that filter has. So that ability to combine different media is a really killer application for for notebooks.
[00:26:19] Unknown:
Yeah. I definitely think so too. And along those same lines and and perhaps a slight nuance spin on that is, for me anyway, I am definitely the kind of learner that it doesn't stick until I do it. Trying to wrap my head around a complex concept just doesn't occur until I really sort of have the opportunity to play with it. Roll it around a little bit, see how it works, crank the cranks, pull the levers, see what springs pop out. That's just the way my mind works, and I personally feel like having something like an IPython notebook bundled in with an educational experience that I'm shooting for would be a tremendous way for me to get that experiential practice with a thing that can be very hard with a traditional textbook. And even just a traditional textbook book with source code examples, for instance, because it's so easy to get lost in the weeds.
[00:27:14] Unknown:
Absolutely. And I think the ability to put the exercises in line with all of the other material, I think that's great. You can, you know, click your way through a notebook. You can run the examples. Even if that's all you're doing is running the examples. I think just having your fingertips on the keyboard makes a difference. And then you can put in little exercises. They don't have to be long or or particularly deep, but just a quick test to see if you're understanding what you're reading.
[00:27:40] Unknown:
Definitely just adding that level of interactivity can make a huge difference in terms of being able to submit the content when you're learning it because there have been countless studies shown that just sitting and watching or listening to a lecture and not actually doing anything is much less effective for being able to create long term understanding versus, as you said, just even going through and running the different steps 1 by 1. That superficial level of interactivity really gets you more engaged with the content and makes you think a little more deeply around what it is that is actually happening behind the scenes. And I'm sure would encourage people who may not otherwise think of it to maybe tweak some of the variables just to say, oh, well, what happens if I just make this tiny little change here? Then they can just see immediately what really is happening as they make those changes.
[00:28:28] Unknown:
Right. Yeah. It's really it's engaging. It really pulls you in. And I also think it's an opportunity to take code
[00:28:35] Unknown:
out of the educational context and really sort of apply it in your day to day life. If people are gonna actually take that DSP course that we're discussing and go off and do real digital signal processing on their own, how incredible would it be to use what's provided in the course as a baseline and even play with it in notebook. But if if the notebook doesn't make sense with their dataset or whatever, we're able to pull that code out and use it directly. I mean, I just feel like it's a whole new educational paradigm unlike anything else I've ever seen. When we interviewed the folks who founded the project, I told them and I feel very strongly that IPython Notebook is 1 of the or I should say, Project Jupyter now is 1 of the coolest things in the Python ecosystem, and I tell everyone who is gushing about some other programming language, that's great, but, you know, you should really check this out. There's nothing like it as far as I can tell. Well, as you said, now that there's project Jupyter, they've brought that capability and that innovation
[00:29:33] Unknown:
to all of any language that cares to implement a kernel for it. Absolutely.
[00:29:38] Unknown:
And I think that's exciting. There's 1 thing about that I'm interested to see where it goes, is that now that you've got I think they've got 10 or 20 languages that are all in the same environment, all in the same workspace and interact very easily. I wonder if we'll see more projects that are hybrids of lots of different languages where each 1 is contributing the little piece that it does the best and, you know, projects that really take advantage of that common environment.
[00:30:05] Unknown:
Yeah. Definitely very much so. I believe they said that you can actually run multiple different languages with you using the Python kernel all within the same notebook, and I believe you can pass data back and forth. But if not, I know that there's another project. I I wanna say it's from the folks at YHat, but I could be wrong. The Beaker notebook that I know for a fact supports passing data between cells consisting of different languages so that you can, as you said, have that interactivity between languages where you can really leverage the specialty of that language for doing small bits of manipulation and have a have a much more hybrid approach to data processing.
[00:30:42] Unknown:
Are there any questions that you feel like we should have asked but didn't? Or is there anything that you'd like to reach out and a message you'd like to shout out to the community?
[00:30:51] Unknown:
I think you've asked a really interesting set of questions. And of course, you you guys have had some interesting things to say as well. So I just I appreciate the the conversation. It's been a lot of fun. As I said, you know, I put these books out under a free license, hoping that people will take advantage of that. And, you know, use the books in the way that works best for you and, you know, modify them, adapt them for your own environment. And if you have the opportunity to to make a contribution, if you wanna translate a book or do a different version like Think Stats. I just did a second edition of Think Stats. It uses Python. It uses pandas. It would translate really well into R.
I would love somebody to do an R version of Think Stats 2. So I guess that that's my shout out is find something that you wanna contribute to, and, let's do a project.
[00:31:40] Unknown:
So I guess at this point, we'll move on into the picks. So for my first pick tonight, I'm going to choose Imappy. It's a Python library that I used recently for doing some analysis of emails that I had in my mailbox, all from an alerting system that I needed to try and see what were the commonalities between all the messages, and ImAPI just really made it dead simple to get those emails out and start running through them, doing regex processing on the contents. And for my next pick, I'm going to choose Scud Cloud, which is a Linux desktop client for the Slack chat system. So for anybody who is using Linux and is using Slack and is tired of having to always have a web browser open to use it, well, there's your answer. It's essentially just a qt web frame that runs Slack inside of it, but it provides just enough separation from your usual web browser to make it a little bit more utilitarian.
For my next pick, I'm going to choose Thryv, which is an online food purchasing club essentially. So you can get organic and really health oriented foods at significantly discounted prices from what you would be able to find in the store. So for anybody who's really trying to be health conscious and aware of what they eat, it's just a good way to save a bit of money there. And for my last pick, I'm going to choose a service called FluBits, which is for pair programming. It has editor plugins for Emax, Sublime, Neovim, and I believe IntelliJ perhaps. And what it does is it lets you run the plugin and all of the changes that you make in your editor are shipped to somebody else who is in the same workspace as you, so they'll see the changes live in their editor. So you can really just pair program remotely without having to be sitting right next to each other. It's just really well executed experience.
And I telecommute. I live in New Hampshire and work with people in Boston, Virginia, and it just really makes it a lot easier to collaborate on code when we're trying to puzzle through a particular problem rather than having to do a screen share and try to, you know, type by voice through the other person. So definitely worth checking out. Chris, go
[00:33:52] Unknown:
ahead. So my first pick is a current movie. It's called Testament of Youth. And 1 of the things that really struck me about this is I thought it might just be kind of a, you know, your standard war movie, but it really wasn't. It was really a movie about the making of a pacifist. This it it told 1 woman's really incredible experience of World War 2 from her very unique perspective as a nurse on the front lines and going to Oxford as a woman, you know, in a time when that was not a common thing at all, or or a very well accepted thing. Just a really great movie. It surprised me with its depth. It's not happy, but World War 1 is not a happy topic.
My next pick, I know I picked the book, but now I'm gonna pick the website because it in and of itself, whether you buy the book or not, is a treasure trove of useful information. I'm gonna choose the Mastering Emacs website and blog. There are just so many articles in here that are so incredibly useful even once you've, you know, read the book, whether you read the book or not, about getting various nodes, memacs modes up and running. There's an introduction to the git extension mode to emacs. It's just it's it's a really great resource that anybody who is into emacs should definitely check into. And for my final pick, I'm going to choose, stay pardon me. I have 1 more after this. I'll be quick.
I wanna pick stay focused. It's a Chrome extension, and it will allow you to have a list of websites that you are only allowed to spend a user defined length of time on per day. So you can, you know, give yourself 10 minutes on Reddit, let's say, and then it'll remind you, hey. Maybe you should be doing some work, which, you know, it's not like it actually prevents you from doing anything, but it is a handy way to say, just curb that, all of a sudden you realized you wasted 20 minutes, you know, looking at Reddit problem or something like that. And my final pick, I'm gonna pick a game.
I'm gonna pick Bethesda Software's Fallout Shelter. It's a mobile game. It's on iOS right now. It's coming to the Android folks, coming to you soon, and it is a really neat kind of resource management thing where you are the overseer of a vault in the Fallout universe. It's it's Bethesda, so it's really well designed, really carefully balanced, and well put together, and just an awful lot of fun. That's it for me. You absolutely can, sir. Although, I would tell you, there's gotta be something that you like, that you meant that you really need to to tell other people about. It can be food. It can be beer or wine. It can be a place you like. It can be a park you enjoy sitting in. It can be, you know A book that you like to read. Yeah. Anything. Anything anything anything anything.
[00:36:49] Unknown:
I am, Allen Downey, at Twitter. And I'm also Allen Downey dot com is my web page. So I'm I'm pretty easy to find.
[00:36:58] Unknown:
Excellent. Well, as we said, thank you very much for taking the time to speak with us, and I'm sure our listeners will really enjoy hearing everything you've had to say. Thank you very much. It's been a lot of fun.
Introduction and Host Welcome
Interview with Alan Downey
Alan's Journey into Python
Python in Education
Turtle Graphics in Teaching
Impact of Python on Course Structure
Incorporating Software Development Practices in Education
Team Activities and Pair Programming
Think X Book Series
Challenges in Learning Statistics
Bayesian Statistics
Using IPython Notebooks in Education
Closing Remarks and Shoutouts
Picks and Recommendations