This week we welcome Bryan Oakley as our PyDev of the Week! I’ve met Bryan a few times in various Python-related forums and developer hangouts online. He’s a master at Tkinter and has answered a lot of questions about it (and Python) of StackOverflow and other places. I hope you will enjoy getting to know more about as much as I did.
Can you tell us a little about yourself (hobbies, education, etc):
I think the only things that matter to a geek are vi/emacs, and windows/linux/osx, right? 🙂
emacs or vi? Emacs. I’ve used the same editor for nearly 30 years.
Windows/Mac/Linux? Mac, but only barely above linux. OSX is the practical choice for writing software that must work on all platforms. Plus, at home I find the Mac to be very low maintenance.
I’ve been writing software professionally since the mid 1980’s. I started as a FORTRAN programmer, picked up C, then perl, awk, sed, bourne shell, all the usual unix tools. I then became a die-hard Tcl/tk programmer for more than a decade before picking up Python. I’ve been using Python for the past half dozen years or so. Somewhere in the middle of all that I did a year or so doing Java.
I currently live in a Chicago suburb, but grew up and spent most of my life a bit further south in Oklahoma and Arkansas, with short stints in Texas and Colorado. I have a couple kids, the youngest of which is poised to graduate from high school this year. I’m a huge movie fan, especially of independents. I love playing pinball. I tend to wear Hawaiian shirts most days (which is why my stackoverflow icon is an hawaiian shirt), and would wear shorts and sandals every day if the weather (and my current gig’s dress code) allowed.
Why did you start using Python?
In 2009 I got a gig at Orbitz in Chicago and they put me on a team that used Python. I didn’t know Python at the time, but was pretty fluent in Perl and Tcl so I guess they they figured I could pick it up. Fun fact: this was the third job I’ve taken where I didn’t know the language I was hired to use. The other languages I didn’t know at the time were Tcl and Java. I’ve always had a natural ability to work with scripting languages, or at least I’m pretty good at convincing people of that fact in interviews.
The team at Orbitz was working on a testing harness, which set me on the path I’ve been on ever since, which is writing software tools in QA (or as I like to put it, writing software to test software). Since Orbitz, I’ve had two other jobs where I’ve been the architect and lead developer on a team supporting automated testing.
What other programming languages do you know and which is your favorite?
As for a favorite? Hard to say. The easy answer is Python, since that’s what I’m using now. There’s an awful lot to love about Python and the huge pile of modules that are available. I’ll be honest, though, and say that even after several years of constant use I still don’t like using whitespace to define blocks of code. I’ve heard all the arguments for it, but I’m not convinced. There, that’ll give your readers something to comment about! 🙂
I still really love the Tcl language. It’s an acquired taste that most people never acquire, but of all the languages I’ve used Tcl is the one that fits my brain better than any other. It is a beautiful little language. Learning it literally took me about half a day and I was off to the races. However, Tcl has such a small community, with a relatively small library of packages compared to python, and the number of Tcl jobs is fast approaching zero, so it’s becoming much less relevant in my toolbox. Plus, it’s OO support isn’t nearly as nice as Python’s.
I would love a chance to use LISP professionally, and would also like to use Groovy. I’ve only barely used Groovy but immediately fell in love with it when I first encountered it.
What projects are you working on now?
I am building tools for test automation. Writing tools for software development has been something I’ve always done no matter what my day job required. Like all good (read: lazy) programmers, I like to write tools to make my job easier.
At Orbitz I started working on test automation tools, and realized that this is an area that is sorely lacking in decent tools. Most QA tools at the time were for managing test cases, not writing them; the actual process of writing a test was to fill in a form or create a work document. Yuck! A .NET programmer has Visual Studio, ReSharper, a million tools at their disposal. Linux and OSX developers has a similar wealth of tools. What does a tester have? Microsoft Word? Though that is starting to change with tools like easyb, cucumber, specflow and the like.
I’ve made it something of a small personal mission to do my part to fix that. Starting at Orbitz and on through to my current gig, we’ve used a tool called the robot framework (robotframework.org) to do test automation. It’s a great framework that makes it possible to write human-friendly test cases, but with the power of python behind it so you can test literally almost anything with it. I’ve written a very brief blog post about why I like it here: http://boakley.github.io/2014/07/02/what-is-the-robot-framework.
Even though the robot framework is mature and being actively developed by a very small team, the official IDE is not very good in my opinion. I’ve seen lots of people try to use it, and then switch and try to use standard text editors (the test files are all plain text, so you can use anything you want). I wrote some plugins for the IDE a while ago, and learned a lot about what people want and need for developing high quality tests.
Which Python libraries are your favorite (core or 3rd party)?
There’s a tie for first place. I would have to say the one I use the most is the robot framework. It’s not only a testing tool, but much of it is available as modules, which makes it possible for me to build new tools that work with robot test files.
My second favorite is Tkinter, though more for sentimental reasons. I rarely use it at work. Back when I was first learning python I was fresh off of a decade of doing UI development in Tcl/Tk. I figured one of the best ways to learn python fairly deeply was to answer technical questions. Since I was a tk expert, I decided to leverage that and become a tkinter expert. So, I started answering as many Tkinter questions as I could on stack overflow. When I answered my first Tkinter question I had never actually used Tkinter.
I think Tkinter is an absolutely fantastic GUI library, especially combined with the object oriented nature of Python. Many people deride it as old, ugly, and hard to learn. After having used many GUI toolkits spanning more than a couple decades I’ve come to realize that most of that is untrue, and what is untrue doesn’t really matter. I would never use tkinter to create the next photoshop or itunes, but for the vast majority of GUIs most people write, it’s more than good enough.
Lately I’ve also been using flask for some internal web sites and web services. I’m not much of a web developer, but flask makes it really easy to throw together a web ui and restful service without having to worry too much about the plumbing. It lets me focus most of my energy on the actual data business logic of the services.
Is there anything else you’d like to say?
I really appreciate you giving me the opportunity to be part of your blog. If any of your readers are wanting or needing to get into test automation, I strongly encourage them to check out robot framework. Don’t let the robot IDE scare you away — ignore it and use brackets or the editor of your choice.
Thanks so much!
The Last 10 PyDevs of the Week