PyDev of the Week: Douglas Starnes

This week we welcome Douglas Starnes as our PyDev of the Week. Douglas Starnes is a polyglot ninja in the Memphis, TN area. He has spent the past 8 years developing software in multiple languages including C#, Python, JavaScript and more on mobile, cloud and web platforms. His community involvement includes speaking at conferences such as DevLink, St. Louis Days of .NET, CodePaLOUsa, CodeStock and PyOhio in addition to the .NET and Java User Groups in Memphis. He is the co-organizer of the Memphis Python User Group (MEMPy) and one of the organizers of PyTennessee, the annual state of Tennessee Python conference. He can be found on the web at and on Twitter at @poweredbyaltnet.

Let’s spend some time getting to know more about Douglas!


Can you tell us a little about yourself (hobbies, education, etc):

I don’t have a formal education in computer science or even a technical field. I went to college to study music and was a composer. However, there weren’t many opportunities to pay the bills. Music technology was becoming a thing at the time and piqued my interest. Soon I was more interested in the technology than the art. I did finish my undergraduate degree in music and went to graduate school in music for while. For a short time I did study computer science but wasn’t impressed by it.

Why did you start using Python?

The first exposure I had to Python was actually IronPython. During the short time I was a computer science student, my main interest was the .NET platform. Also, the school I was attending had at the time a hardcore UNIX systems programming curriculum. I wasn’t very strong in C but quickly saw the parallels between C and Python. So I would prototype my programming assignments in Python to make sure I had the logic correct and then port them to C.

What other programming languages do you know and which is your favorite?

That’s a tough question. I brand myself a polyglot which to me means I use the best language for the job. While I certainly have preferences for some languages (namely Python, C#, Go and Dart) I can’t name one a favorite. There are also languages that I tend to avoid such as Ruby, Perl and Visual Basic. These aren’t bad languages, but don’t fit my personal style. Obviously I use a lot of Python, however Python can’t do everything well, or even everything otherwise we wouldn’t need other languages. So I try not to get attached to a particular language.

What projects are you working on now?

One of my interests is computer science education outside of academia. Python is a great first language to learn in my opinion. So I am working on some screencasts and trying my hand at writing a book (both will be self published). These will be aimed at novice aspiring Python developers who want to get up and running quickly without a lot of theory or set up involved. In addition, I speak at conferences (not just Python conferences) to spread the word. The introductory Python talks are usually well attended so there are plenty of developers who have taken an interest.

Another project is related to a personal bias in a way. Like I mentioned above, I was once a hardcore .NET developer. In the past year Microsoft has impressed me with the announcements they made and so I have come back to the platform. Microsoft also has a history of participation with Python. For example, the Python Tools for Visual Studio is one of their most popular open source projects. And with Visual Studio Community Edition being free now, there is no reason not to try it out. And there are many other ways Microsoft supports Python (Azure has excellent Python support.) However, there is some resistance to Microsoft in the Python community so I advocate Microsoft’s participation in Python.

Which Python libraries are your favorite (core or 3rd party)?

I could spend a long time on this but I’ll mention just a few. Most of my favorites are tools and not really libraries. The first is sort of low hanging fruit but it’s so awesome I can’t not mention it: IPython. Every day it seems I learn something new about it. The ability to download an IPython notebook from Github and reproduce an IPython session marked up with images and rich text is remarkable. At that point you have interactive textbooks. And since this became big other vendors are noticing. I think that Xcode Playgrounds and Xamarin Sketches were influenced by IPython in some way.

One frustrating problem, historically, has been getting Python to work cross platform. And that is exacerbated on Windows but even on OS X it’s not as simple as on Linux. Two distributions, Anaconda by Continuum Analytics and Canopy by Enthought have changed that. They both provide a similar experience of a cross-platform all-in-one installer for Python. Granted they are geared towards scientific Python but they both work great for web and GUI applications as well.

Another great tool, especially for learning, is not related to Python but can easily get you set up with Python. That is the Cloud 9 IDE. Cloud 9 lets you, for free, create workspaces which are a web based IDE backed by a Linux virtual machine. You only get 512MB of RAM and 1GB of storage (for the free workspaces) but you can do a lot with that if you’re starting out. And it comes with Python (2 & 3) pip, and virtualenv configured. Also PostgreSQL and MongoDB are installed so all you have to do is start them up. Combine this with a service like Heroku and MongoLab and you can learn to write Python web and console applications without ever leaving your browser, and for free. This is the technique that I am aiming for in the instructional materials I am working on.

With regards to a framework, I’ve been interested in Falcon lately. Most of my work involves APIs and I’ve been using Flask for that. Don’t get me wrong, Flask is great but Falcon is for APIs and Flask is for the web. So tuning the framework to write APIs only instead of massaging it out of a web framework is interesting.

Is there anything else you’d like to say?

Get involved with the community. I am a co-director of the Python user group in Memphis, TN (Mempy) and we have a difficult time some months getting speakers. We try to encourage people to bring anything Python related (we did allow talks about Ruby on Rails and JavaScript in the past, but it’s not the norm) no matter how simple it might be. Tell us about a library you found or a new tool. If you’re learning Python and don’t quite understand list comprehensions, bring it to the meeting. You don’t have to have a 90 minute presentation with slides and demos, just get a conversation started. Eventually (quicker than you think) you’ll have enough for a 90 minute presentation. Of course beyond that there are open source projects. Python is one of the more popular languages on Github. You can also make screencasts and post them on YouTube, hold live hangouts, blog and post on Reddit and Stack Overflow. There are only two rules: 1) Start 2) Keep going.


The Last 10 PyDevs of the Week