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?
I’ve already touched on several: FORTRAN, C, Perl, Tcl. I have also written a few thousand lines of LISP in my past, as well as smatterings of Ruby, Groovy, Java, C++ and Objective-C, as well as the usual unixy suspects such as bash, awk, sed, etc. Lately I’ve written a fair amount of javascript. Of all those, FORTRAN, C, Tcl and Python are the ones I’ve used the most in a professional capacity.
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.
I have a vision for some professional grade tools built on top of the framework for serious testers, and I’m working toward that vision. I made some progress at my last employer but they wouldn’t let me open source the work so I left. My current employer, Echo Global Logistics (echo.com) is very generous in letting me make these projects available as open source. I’ve written a robot extension in javascript for the marvelous brackets editor (brackets.io), and I’m working on a linter, a website for viewing test documentation, and a dashboard for collecting test results across our testing environments, all in python.
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
Very cool interview Mike! How ironic Bryan just (within days) answered a Tkinter question for me on Stack. Just check out his rep points on Stack, amazing.
BTW, I just bought ‘Tkinter GUI Appliccation Development’ on Packt, and low and behold there’s your name as a contributor/author! That’s awesome, Mike! I’m loving the book so far.
I was a technical reviewer for that book, which basically translates to technical editor. That was one of Packt’s better books. I liked it as well.
Yeah, I linked to Stack profile at the beginning of the article. I’m nowhere close to his rep points. I think he had to use wxPython for a year or two not too long ago as I remember seeing him on the wxPython list for a while.
Yes, I used wxPython for a year or so while I was a contributor to RIDE (robot framework IDE). I didn’t much care for wxPython, and I eventually gave up on RIDE because I think it has some fundamental flaws I couldn’t fix.
Pingback: PyDev of the Week: Matt Harrison - Mouse Vs Python