This week we welcome Michael Fogleman as our PyDev of the Week! Mr. Foglebird has been helping out Python programmers prodigiously on StackOverflow for quite some time. I know I’ve appreciated some of his answers when I’ve gone to look for help. He has a large list of personal programming projects on his website that are well worth a look through. Let’s take some time to learn some more about him.
Can you tell us a little about yourself (hobbies, education, etc):
I’ve been programming since I was about 8. We had a Commodore 64 and I would copy programs out of a book. Later on, in high school, I wrote games and other (mostly graphical) programs using QBasic. Most of the games were clones: Tetris, Breakout, Galaga, Asteroids, etc. I remember that I wrote the Asteroids one before I even learned about arrays! Can you imagine? asteroid1x, asteroid1y, asteroid2x, asteroid2y. I also used WHILE loops instead of FOR loops. That’s what happens when you’re a kid and have nothing but the QBasic help documentation to learn from.
When I went off to college (NC State University) in 2000, I planned on majoring in mechanical engineering for some reason. As part of that curriculum, I took an intro to C++ class and I loved it. I realized that I should really be majoring in computer science, and that’s when I switched.
To help pay my way through school, I participated in the “cooperative education” program which means some semesters I didn’t take classes but instead worked full time at companies that partnered with the university. I first worked at a company with about 100 employees that dealt with industrial automation. It was a lot of fun because I was the only software developer yet there were a lot of opportunities for software to improve their systems and workflows. Then I worked at IBM for a while. For a poor college student, they paid pretty well. I managed to finish college with almost no debt. It took 5 years even though I only took classes for 3.5 of them, but the experience and income proved invaluable.
After college, I worked at TopCoder. I only stayed for a few years because I was doing more management and documentation than development.
After that, I worked at Advanced Liquid Logic for about five years. They had an interesting microfluidics platform for genomics and diagnostics. It was a “lab on a chip” system that could move discrete droplets of liquid around inside of a cartridge. I wrote some really cool software (in Python) that would plan these droplet movements to carry out the desired protocols. We were acquired by Illumina and I chose to leave shortly thereafter instead of moving to San Diego like they wanted me to.
Now I’m at TransLoc where I work on transit-related software and data.
I’m married and have two young kids that are a lot of fun. I still manage to find time for gardening, running and working on lots of side projects. I also really like space exploration, 80s music and all types of food.
Why did you start using Python?
My first experience with Python was in 2004 for a project in college, but I didn’t get too deep into it at that point. It was just this weird, strangely different language. In 2007 I started learning Python on the side and loved its terse, readable, powerful syntax. In 2008 I switched jobs and started working with Python full time.
What other programming languages do you know and which is your favorite?
Earlier this year I started using Go, so that’s what’s new and exciting for me right now. I found it really easy to pick up. I’ve already written a path tracer (like a ray tracer, but better) and an NES emulator in Go. I’ve also used it for some things at work. With Python and C being my primary tools for a while, Go seems to be a nice middle ground.
I’ve also done some Objective-C on the side and have some apps in the iOS and Mac app stores.
I still use Python the most.
What projects are you working on now?
At work I just finished up a really cool project that automates Demand-Response transit systems. Basically, it dynamically routes vehicles in an optimal way to service on-demand rides quickly and efficiently. Most of the backend is in Python and Flask. I wrote the vehicle scheduling algorithm in Go since it needed to be fast.
At home I’ve been playing with a HandiBot CNC machine. I use Python to generate the GCode programs that the CNC understands.
I’ve also been playing with OpenStreetMap data and shapefiles.
You can read more about my projects:
Which Python libraries are your favorite (core or 3rd party)?
I love Flask. It makes web development really fun. Requests is also really nice. wxPython is my favorite for developing desktop apps. I used it heavily at my previous job. And Shapely is awesome for dealing with 2D geometry.
I wrote my own library for developing simple OpenGL apps. It’s called “pg” and I did some cool stuff with it but haven’t worked on it lately.
Where do you see Python going as a programming language?
I haven’t thought about it much, but I have a suspicion that in 10 years or so, Python will be slowly fading away like Java seems to be today. Technology changes fast. But just like Java, it will have a strong foothold. It’s not going anywhere any time soon.
I still use Python 2. Mostly because all of our codebase at work uses 2. There are some neat things in 3, but it hasn’t been enough to tip the scales for me yet. Frankly it’s not something I worry about.
What is your take on the current market for Python programmers?
There’s definitely some demand and it’s probably still increasing. I think Django and scientific Python are the main drivers.
Is there anything else you’d like to say?
A lot of people ask me how I’m able to work on so many side projects with a family and full time job. Partly, it’s priorities. I don’t watch TV. Also, the kids can be a useful “distraction” in that when I do finally get time at the computer, I tend to spend it more wisely. Plus, they still go to bed pretty early. Other than that, I’m just really passionate about programming, so when I get interested in something, I work hard at it.
The Last 10 PyDevs of the Week