This week, we welcome Eli Bendersky (@elibendersky) as our PyDev of the Week. I have enjoyed reading his blog over the years as he writes some pretty interesting articles on Python. You can see some of the projects he works on at github. Let’s spend a few minutes getting to know our fellow Pythoneer!
Can you tell us a little about yourself (hobbies, education, etc):
I hold a B.Sc in Electrical Engineering, and have been employed in both hardware and software engineering positions over the years. In the past few years I mostly gravitated towards system programming, infrastructure and tooling – working on things like compilers, debuggers and other low-level stuff.
As for hobbies, I guess kids count? That’s definitely what takes most of my off-work time nowadays Other than family, I occasionally manage to carve out some free time for reading, exercising and self-education on topics ranging from programming and math to biology. I use my blog (http://eli.thegreenplace.net) as an outlet to document things I learned that I found most interesting.
Why did you start using Python?
I’m fairly late to the game, actually. In addition to C and C++, my main work hammer was Perl for the first part of my career. Eventually I became disillusioned with it, and after a brief fling with Ruby, ended up in Python-land in 2008. I haven’t looked back since. I’ll be forever thankful to Python for igniting my love for programming and open-source on a whole new level. Switching to Python turned out to be a great decision, given how much momentum the language has gained since 2008.
What other programming languages do you know and which is your favorite?
So I mentioned C and C++. C++ has been mostly paying the bills for me in the last few years, but Python is always in the picture. Other than that, I used to know Perl pretty well, dabbled with Ruby, Common Lisp and Scheme. I can find my way around Javascript most days. A bunch of assembly languages (from the more standard x86 to esoteric things like various DSPs and microcontrollers). Over the years I’ve written bits and pieces of code in Ada, Java and Matlab. There’s also the list of “languages to look at in the future”, right now it includes things like Go and Erlang. My favorite is Python, though. It’s always the first tool I reach for.
What projects are you working on now?
At work I’m hacking on all kinds of internal stuff I can’t talk much about, but some of it percolates upstream into the LLVM (compiler infrastructure) and Clang (C++ front-end) open-source projects. I have a bunch of small open-source projects I have authored and now maintain (mostly Python packages) – my Github account (https://github.com/eliben) has all the details. As a core Python developer my activity comes in short and rare bursts, unfortunately. And there’s my blog, which is a kind of an ongoing project, I guess.
Which Python libraries are your favorite (core or 3rd party)?
I’m a big believer in keeping dependencies small, and developing the core parts of a project yourself. Therefore, my favorite Python libraries are the included batteries – the stdlib. Often folks look for 3rd party libraries for things that are sufficiently served by stdlib modules. I think there’s great value in sticking to the core as much as possible, because it’s part of a common language all Python programmers speak.
The Python ecosystem is powerful, though, and some 3rd party “libraries” are complete frameworks with a bunch of subsystems of their own. I really like using Django for web apps, for example – I’d see no reason to develop a web framework of my own, or to use any of the infinitude of “micro-frameworks” popping up. Django is so well entrenched, it’s a common idiom and language many programmers understand – it has an ecosystem of its own. Another example is the excellent scientific stack Python has – Numpy, Scipy, matplotlib, etc. I’m really excited about the central place Python taking in the world of “big data” thanks to these technologies.
Is there anything else you’d like to say?
Python presents an interesting challenge to programmers. Used correctly, it’s easy to write extremely readable and maintainable Python code. This is an almost unique quality of Python among the modern programming languages.
But the language is powerful, and with some creativity you can create unintelligible monstrosities that are definitely clever, but not very collaboration-friendly. Stick to the simple things as much as possible; if you find you really need to use some metaclass magic or something similarly advanced, encapsulate it well and hide it from most of the code. And don’t forget to document it very well. So stick to the KISS principle, basically.
Thanks so much!
The Last 10 PyDevs of the Week
Ned Batchelder
Bryan Oakley
Maciej Fijalkowski
Anton Novosyolov
A. Jesse Jiryu Davis
Ivelin Demirov
Andrea Gavana
Tim Golden
Doug Hellman
Dr. Margherita DI LEO