by Len Epp
Mike is the author of three Leanpub books, Python 101, Python 201, and *wxPython Cookbook. In this interview, Leanpub co-founder Len Epp talks with Mike about his career, his books, and his experience self-publishing on Leanpub.
This interview was recorded on October 25, 2016.
The full audio for the interview is here. You can subscribe to this podcast in iTunes or add the following podcast URL directly: http://leanpub.com/podcast.xml.
This interview has been edited for conciseness and clarity.
Len: Hi, I’m Len Epp from Leanpub. And in this Leanpub podcast, I’ll be interviewing Mike Driscoll. Mike is a computer programmer, who writes the popular blog, “The Mouse Versus the Python,” at blog.pythonlibrary.org. He has been programming in Python since 2006, and has been a technical reviewer for Packt Pack Publishing since 2009. He also blogs occasionally for the Python Software Foundation.
Mike is the author of three books available for sale on Leanpub, Python 101,” Python 201, and wxPython Cookbook. *Python 101 was written mostly for beginners learning how to program in Python 3. Python 201 is the sequel to Python 101, and is meant primarily for intermediate level Python programmers. And wxPython Cookbook is full of great tips and tricks for using the wxPython toolkit.
In this interview, we’re going to talk about Mike’s professional interests, his books, and his experience in self-publishing, which is really interesting. So, thank you, Mike, for being on the Leanpub podcast.
Mike: Thank you very much Len.
Len: I usually like to start these interviews by asking people for their origin story, so I was wondering if you wouldn’t mind telling us about your path to becoming a programmer, and the kind of work that you’ve done since?
Mike: Sure thing. When I was in high school, I decided that I really wanted to get into computer graphics. And then I realized that I wasn’t that great at drawing. So I decided that instead I’d look into computer programming. And the first two years are really rough. I took computer science in a community college, and didn’t really get it. And then in my third year, everything just started to click. And I was like, “I can do this, this is going to rock.”
And then the dot com busted, and I couldn’t find any work. So I started doing website work for an auction company, and eventually got hired by local government to work in Python. Basically I learned Python on trial by fire. They said, “Figure it out, or get fired, basically.” And I learned it and excelled at it, and that’s been my career ever since, is doing Python.
Now, while I did do the Python, I started realizing that to help me cement it into my brain, I could start writing about it. So I was using blog software — it was kind of a brain dump at first, to help me remember this is how I did something in the past — and I don’t want to forget that later on. Which frequently happens if you don’t use a library for a while.
So that’s why the blog started, and eventually my readers got to be so many and so numerous, and they just all wanted to know, “Hey, can you start turning these into books?” And that’s kind of how the book writing got born.
Len: One thing I like to ask programmers in interviews is, if you were starting out today, would you get into it the same way that you did? For example, would you go to college and study computer science now? Or would you start another way?
Mike: Well there’s definitely pros and cons to each path. I think you have a much more structured way of getting into programming if you go the college route, because you’ll get the algorithms and the math that you need, most likely. On the other hand, if you take the path of running the programming language itself, I think you’ll better understand the language fairly quickly, because you’re learning it while you’re using it.
Most of the time in the classes that I took, you had a semester to work on, really, rather lame programs or projects that really didn’t teach you a whole lot. It just taught you the concepts and the syntax, but not how to actually use the language. So, like I said — there’s pros and cons.
You definitely need the algorithms, if you’re going to get into like, [an] engineering degree. You need the math for that too. But if you want to learn a language — a lot of the time, I think just diving in and starting a couple projects to figure out the language, is probably quicker at picking up the language.
Len: And was there something that happened in your learning, in that third year, something specific that happened that helped you to turn the corner? Or was it just a gradual build of knowledge and experience?
Mike: I believe I was taking a C++ class, and something about the way that the instructor taught it just clicked with me. And I think the previous two years, all those concepts and knowledge that I was learning — everything just kind of melded together. And I became, “Oh, this is how it all works.” And I started understanding all those abstract concepts, and how to apply them.
Len: I was curious how your blog became so popular. Was it organic growth, it just started happening? Or were you promoting it various places?
Mike: Originally I believe it was just organic. I ended up joining a place called Planet Python, which is an aggregate for Python blogs. People would occasionally tweet my articles, and post on Reddit. But for the most part, I didn’t really advertise that much. And then eventually I started adding — I think it’s called TweetFeed, which is actually going out of business, unfortunately, this year. They would automatically tweet my articles for me, so I didn’t have to always remember to do that. But other than that, and a couple of postings to Hacker News, I don’t do a whole lot of advertising myself.
Len: That’s really interesting to know. You write in Python 101, near the beginning, about how learning the basics isn’t enough. And in your book description you talk about how you switch perhaps more quickly into intermediate-level content, than most beginner books might. I was wondering if you could talk a little bit about that? About why learning the basics isn’t enough?
Mike: Sure. I’ve read a lot of Python books and a lot of programming books. But I’ve noticed in a lot of these beginner books — you learn the syntax, and then not how to apply it. So when I wrote my own book, I wanted to get past just the basics. I wanted to get into the stuff that’s actually kind of interesting. Interesting to me, and hopefully interesting to my readers.
The other thing that I noticed that was missing from a lot of these beginner books, is that they don’t tell you how to write a program, and then distribute it. So if I wanted to write a module and distribute it to the rest of the Python community, most books don’t tell you how to do that. Or I want to create a program, and turn it into an executable or an installer for Windows, for example. Most books don’t tell you how to do that either.
So I decided, I’m going to fill that gap, and show how to get into Python quickly. Show them what kind of libraries there are already in the standard libraries — you don’t have to install anything. And then show you how easy it is to install stuff, create your own modules, how to distribute them — and then create your own executable at the very end.
Len: I was wondering if you wouldn’t mind talking a little bit about what the wxPython Toolkit is, and your involvement with that?
Mike: Yeah, so the wxPython Toolkit is a cross platform user interface. It’s a wrapper around wxWidgets, which is a C++ library, kind of like the Qt toolkit. The nice thing about wxPython, is that it typically will take the native widgets on whatever OS it’s written on, and actually use those widgets, instead of drawing a facsimile like Qt does. So what you end up doing, is you actually have the very native widget on each platform, and it looks correct. And there isn’t any kind of weird or wonky-ness you’ll sometimes see in like TkInter or Qt.
I got involved in it, because I was actually converting some VBA code — that was on top of Excel and Access into wxPython. And so I learned how to do that. Then, I worked in the community a lot, and they helped me figure out how to use the toolkit. And then I just gave back, by helping out other new people who wanted to use it as well.
Len: Helping out is a theme in the work of yours that I found online. You’ve got screencasts, for example, for your book, and videos helping people out. And your first book, Python 101, which I believe you published in 2014, had a Kickstarter campaign associated with it, and for your subsequent books. I was wondering if you could talk a little bit about that? What was your experience like starting a Kickstarter campaign for the first time?
Mike: It was quite interesting. I’d never done that before, but I had supported some Kickstarter campaigns in the past, and it occurred to me that doing the Kickstarter campaign would be a good way to gauge whether or not my book’s contents would interest other people. So I created a table of contents, and posted that as part of my Kickstarter, and explained all the different parts I was going to cover in each Kickstarter, and why I thought they were important.
Kind of like I just told you why I wrote the first book the way I did. People really responded to that, and by far, Python 101 brought in the most backers, and the most funding of any of my projects. I really enjoyed that process. I got to learn who my readers were, what they’re interested in, and what kinds of things they might be interested in in the future. They’re always giving me feedback through my blog or by email as well.
Len: I noticed that, like many people who publish books on Leanpub, you have a section at the beginning of your book, where you include an email address for people to contact you, and you ask them for feedback. Has that method worked for your books? Do you think it’s helped improve the content in your books?
Mike: Yes, I think so. Most of the time they don’t contact me through that method. They actually contact me through my web — through my blog.
I do get contacts through those email addresses as well. And I’ve had several bug reports mentioned. Most of the time they’re just silly typos. But occasionally there’ll be an example that I just didn’t test well enough, and I have to modify. But overall, it’s been a really good way to connect with my readers.
Len: You mention in, I think the video on Kickstarter for Python 101 and for Python 201, that you intended to do some advertising with some of the funds that you raised. And I was wondering if you could talk a little bit about your experience advertising your books?
Mike: Well for, Python 101 I didn’t get to do as much advertising as I wanted. But for Python 201, I’ve done a lot of soft advertising. I’ll do promotions through my blog mostly, but also send out emails to my email list that I’ve gained over the years. And I’ve also been looking into trying to find some targeted ads, [that I could use on] Facebook or Twitter.
But my research has indicated that a lot of those methods don’t return investment very well. You have to use like less than 10%, for example. So if you had $1,000 funding, you’d want to use maybe $100 to advertise, to get any kind of return on investment using those methods. And that doesn’t get you very much advertising using that kind of quote or quotas or percentages. So I haven’t done too much that way.
But I discovered something kind of interesting last week, where I posted a promotion, where I give away my second book for free for 48 hours. And that brought in a lot of new readers.
Len: I was watching that happen. You got something like 16,000 readers in just a couple of days. It was really great to see. I wanted to ask you specifically about that. Was there a famous person who tweeted about it? Or was there something special that happened that you noticed?
Mike: I don’t believe there’s any famous people. In fact, when I originally did this, I was just going to post it on Reddit — and there’s a Python subreddit on there. So that’s where I posted it. And I think that’s where the majority of the people came from, from what little analytics I can gather through my previous publishing websites. But it just kind of organically grew from there. And then I decided to also promote it on my blog. And I do get a lot of people going through my blog. So I think the two combinations brought in a lot of readers.
Len: You also actually have print versions of your books available, or at least of your first two books. I was wondering if you wouldn’t mind telling people how you went about making those print books? I believe they are for sale on Lulu and Amazon.
Mike: Yes that’s correct. When I wrote Python 101, I was using something other than Leanpub to create them. I had a home brewed script written in Python, that would actually generate the books into PDFs and MOBI and EPUB versions.
Well eventually, I needed to figure out a way to put the PDF up on Lulu to generate the book. And so I’d have to create versions of the book that didn’t have the cover, and sometimes other information, because Lulu doesn’t want the cover part as part of the PDF. You have to upload it separately. So I just stepped through that process with whatever book I was using. And occasionally, you had to generate the book and cut off the front, and get Lulu to process it. And then add it on on the back end.
Overall, I think it’s gone pretty well. They have a global reach program, which allows you to publish through Amazon and Barnes & Noble and a bunch of other websites, as well as internationally. And they have really stringent rules. So if you don’t put in the ISBN on the right page, they won’t accept it. There’s lots of little gotchas that I didn’t know were even there, that I’ve had to cross, and make sure that I always add it on if I recreate the book again. Just little things you don’t even think about.
Len: And what have your print book sales been like?
Mike: Not that great really. The print books usually sell a handful a month. I probably get maybe 10 to 50 the first month a book is released. And then two or three per month after that. So the bulk of my sales are obviously electronic. People want the digital versions or the Kindle versions, on Amazon for example.
Len: You’ve both written technical books, and you review them as well, and I was wondering — I wanted to ask you what your opinion is about, if you have one, about trends that you see happening in technical book publishing, going forward. Where do you think the industry’s going to be in 10 years?
Mike: The big trend I’ve noticed lately, is that the big companies like O’Reilly and Apress are going for niche markets. They’re writing really targeted books. So, for example, O’Reilly put out a SQL alchemy book, which is just for the SQL alchemy library in Python. Packt Publishing really does this a lot. Where they have all kinds of books on scientific computing, Pandas, Django — they even have a Turbo Gears book. They just have all kinds of little sub-library books, and you don’t normally see that.
Well like 10 years ago, when I was first starting this, this journey, you couldn’t just go out and buy — I want a book on this little library that has 10,000 users, or whatever. And now you can. And that seems to be the trend. Because even O’Reilly’s doing that, and some of the other big companies are trying to do that as well.
Len: Your books are available for sale through your blog on Gumroad, on Lulu and Amazon, and also on Leanpub. I was wondering if you wouldn’t mind talking a little bit about why you decided to also publish on Leanpub?
Mike: I’ve seen other authors through Planet Python that have mentioned using Leanpub successfully. And I thought that opening up another channel of revenue would be worthwhile to try. So that was my main impetus to trying them. And so far it’s worked out pretty well. And I actually like the way that Leanpub generates the books.
I think it looks a little bit more professional than my home brewed version of generating the books. So I’m probably going to start cutting Gumroad out a little bit. Just because I think Leanpub does a better job of tracking sales, and the book quality seems to be a better than what I’ve done myself.
Len: One of the techniques that our authors have for increasing sales, is to make packages on Leanpub, so they sell their books along with their videos. And that’s a trend that I’ve seen. I think O’Reilly specifically bought a company — I think in Canada, last year or the year before — which is all about making videos. And I was wondering if there’s a reason you haven’t made a package on Leanpub with your screencasts yet? Or if that’s just something you’re not interested in doing.
Mike: Actually, I was going to do a package, but I didn’t realize I could use the videos. I didn’t think the screencasts could go with… I thought Leanpub was mainly for books. I didn’t think I could combine the videos with the books.
Len: Oh, so that’s our fault for not communicating well enough. Yeah, you can actually create packages with — you can sell the book along with digital content. So that can be code samples. It can be spreadsheets. And it can also be videos. One of our very popular data science books is sold in a package that’s doing quite well, along with some very large video files, that are really popular.
This packaging together of text content and video content seems to be one thing that’s becoming quite common in the technical publishing space.
One thing that I noticed right away that you do very well in your books, is you have fantastic covers. I was wondering if you could talk a little bit about how you managed to get such great covers? I imagine you used some of the funds from your Kickstarter campaigns to hire graphic designers?
Mike: Yes, basically. For my Python 101 book I actually funded the cover art myself beforehand. And I actually did that for Python 201 too. But basically, I went and looked for someone who could draw a design that was based on the idea of a mouse versus a python, which is my blog title. And I took that idea, and created this idea of a classroom — Python 101 — where the mice would learn about pythons.
And the first guy I used was really great. I liked working with him, and he did a good job. But then he ran through some bad — basically a bad year, and couldn’t do anymore work for me. So I actually ended up having to find some other artists for my next two books. And I think that’s actually kind of good, because it gives them kind of a fresh look, when you look at the different covers, because each book is done by a different artist.
So for, Python 201 I hired a nice Russian lady to draw the art, and she did a really good job, and got lots of compliments about that. She’s actually done work for another book of mine that’s not published yet, but I’m looking forward to announcing next year.
And then the other lady I got for wxPython Cookbook is from the Ukraine, and she also did a really good job. But as you can see, if you look at each of the covers — they’re all very different in their styles.
Len: Yeah, I’ve got them all up on my screen right now. They are very different, but they share the quality of all being excellent. Was there a specific service that you used to find them?
Mike: The first artist, I actually ended up asking my brother, because he knows a lot of artists. And he just recommended this guy. And for the other two, I went on Adobe’s website. And they run a program that you can look up artists on. I can’t remember the name of it off the top of my head. I found it, the website was called Behance, it’s an Adobe affiliate. Basically artists can go on there and show their work, and people can contact them through Behance, and find out if they’re available to do commissions.
Len: Thanks for that, that’s really useful. I’m sure a lot of the self-published authors listening will be happy to hear about a source of high-quality covers. I mean it really does make such a huge difference, I find, for sales.
My last question is — if there were one feature we could build for you, or one thing we could fix, or something we could improve, or something that we’ve missed that you would like us to do on Leanpub — what would that be?
Mike: The one feature that I’ve noticed I need for my current book is image scaling. I’m doing a lot of screenshots for the wxPython book, and doing it with restructured text, I can tell a program to rescale the image any way I want to. But there doesn’t seem to be a way currently with Leanpub, to actually scale it programmatically. So I have to find a different way to do it. And the ways that I’ve tried so far, haven’t worked very well, so….
Len: Okay, thanks for that. I’ll communicate that to the team. Images is an area where we know that there’s more work we can do to improve things, and that’ll be really good feedback.
Thanks very much Mike, for doing this interview. And for also using Leanpub to publish your books. We really appreciate it.
Mike: Well thank you for creating such a wonderful service, and for having me.