PyDev of the Week: Tim Roberts

The PyDev of the Week this week is Tim Roberts. While we’ve never met in person, he’s helped me a time or two on several of the Python 3rd party mailing lists, such as wxPython, Reportlab and (I think) PyWin32. He runs his own consulting business and can be contacted by email at the following: Let’s spend some time getting to know him!


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

I have a BS in Computer Science from Oregon State University (go Beavers!).  I spent 10 years doing mainframe operating system programming for Control Data before switching to Windows drivers during the Windows 3.0 beta.  I’ve been doing Windows driver and driver support work (like diagnostics and support apps) since that time.

I’ve been an owner in a small consulting business for 20 years now.  That’s a pretty good record for a small business.  Besides the 3 owners, we have 5 employees, so I guess we are “job creators”.

When I’m not in front of my keyboard, I am a musician.  I play clarinet in a community band, and I play piano to accompany several of the local high school choirs.  I’m a Broadway musical nut, so I play in the pit orchestras for the musicals for three of the local school districts.  I’ll be doing “Peter Pan” and “Shrek” this spring.  I’ve also been a square dancer for nearly 25 years, and I’m part of the state federation of square dance clubs.


Why did you start using Python?

I’ve always been an explorer.  I want me computer to do tedious and repetitive things for me.  I was moderately adept at using Perl to automate my environment, but I hated the fact that Perl programs look like RS-232 line noise, and that it is impossible to understand a Perl program six weeks after you wrote it.  When I saw Python 1.6 in 2000, I was immediately hooked by the human-readable syntax, and by the large and functional standard library.  At that time, we were administering our own Linux servers, trying to come up with reasonable (and affordable) ways to manage email.  I wrote a couple of fully-featured email packages in Python, in part because the tools were so good.

Many programmers underestimate the importance of readable code.  After all, as the joke goes, if it was hard to write, it should be hard to read.  After all, why do they call it “code”?  But the fact is that most programs are read MUCH more often than they are written.  Python, with its non-punctuation-based syntax, makes it much easier to write programs that can be read as prose.


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

As a rule, the work I deliver to my clients is in C++ and C, because that’s where the driver world lives.  I’ve done a large amount of assembler work for a strange variety of processors, plus C# and and a lot of Javascript.  When I was with CDC, I was one of the best Fortran coders around, but that knowledge has all leaked away.  I could probably still write COBOL and Basic if I had to.  I was also a huge fan of Borland’s Delphi.  I used to do all of my tools in Delphi, but I haven’t done any Delphi programming since Python came into my life.

Python is my favorite.  When doing driver work, it’s often necessary to have diagnostic suites to exercise the hardware and the driver interfaces.  Python is great for that, because it’s so easy to write an extensible command interpreter.

I’ve tried to learn F#.  I think functional languages have great concepts to teach us, and I like the functional extensions that have been made to Python.  However, F# suffers from the same “punctuation as syntax” disease that makes Perl so impossible to read.


What projects are you working on now?

I have several long-term things going on, although none of them are Python-related.  I’m doing video capture drivers for some custom USB cameras.  I’m doing video capture drivers for a big 7-foot LCD panel system for corporate conference rooms, where you plug in your laptop and share it with the room.  I’m doing capture drivers for a medical equipment manufacturer who makes ultrasound cardiac monitors.  The output of an ultrasound happens to look a lot like video capture, so I was a good fit.  I’m doing drivers for a depth-sensing camera system somewhat like the Kinect.

One of the advantages of being an independent consulting is that the days are never boring.  I get exposed to an incredible variety of things, from video capture to audio response curves to laser optics to real-time telemetry to high-speed USB devices to performance analysis to network optimization, etc.  When I get up in the morning, I look forward to coming in to work.

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

Gosh, there are so many.  I think the library I use most often is PIL, the Python Imaging Library.  I use it as a scriptable version of PhotoShop.  As a dinosaur, I live in a command line.  I’m always popping in to the command line interpreter to look at the size of an image, or change a format, or make a thumbnail.  As a musician, I scan my music to put it on a Samsung Galaxy Tab 12.2″ tablet for performance, and I often need to tweak the balance contrast do a threshold operation the same way on many pages at a time.  PIL does that for me.

However, the most fun I’ve had with Python has usually involved NumPy and its friends, including SciPy and matplotlib.  I do a lot of projects with telemetry and heavy data analysis.  The scientists and designers often give me analysis algorithms in Matlab.  I’ve become quite adept at translating Matlab to NumPy, and I love the power and flexibility.

ReportLab is another library that gets a lot of use from me.  I take great pride in making printed material look good, and ReportLab lets me make fine-tuned PDF files that will look good no matter where they are displayed and printed.

Is there anything else you’d like to say?

As someone with 40 years of programming experience under his belt, I feel like I ought to have profound, sage advice for all the young whippersnappers who are just getting started, but I think it’s all been said.  Python has a great community, and that community is an incredibly valuable resource for beginners.  Don’t be afraid to use it.

Thank you!

Previous PyDevs of the Week