PyDev of the Week: David Fischer

This week we welcome David Fischer (@djfische) as our PyDev of the Week! David is an organizer of the San Diego Python user’s group. He also works for Read the Docs. You can see what David has been up to on his website or check out what he’s been up to on Github. Let’s take a few moments to get to know David better!

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

I am one of the organizers of the San Diego Python meetup and I’ve been doing that since early 2012, but my hobbies nowadays mostly involve spending time with my 3 year old daughter. I also really enjoy games of all kinds from in-person board and card games to computer games and my daughter is just about the right age to start introducing this stuff.

I have a bachelor’s degree in applied math and despite the name that involved a lot of programming. Mostly I learned Java in college which outside of some Android development I’ve barely used since.

For work, I previously worked at Qualcomm, Amazon, and a beer-tech related startup (how San Diego!). I currently work on Read the Docs. I’ve had the opportunity to work on lots of different things from web apps, mobile apps, technical sales/marketing, scalability, security, and privacy. I don’t want to rule out working for big companies, but the small company life seems like a better fit for me.

Perhaps this comes out of some of my security and privacy work, but I try not to participate much on social media. I was surprised to be contacted to do this interview because I think of myself as having a pretty low profile in the Python community outside of San Diego. I’m happy to do it, though.

Why did you start using Python?

I first learned Python in a college class where we had a project in a new programming language every 3 weeks or so. We also learned JavaScript, a Lisp-like language called ML, and Prolog. My opinions on programming weren’t very well formed back then but I remember really liking Python relative to the others. I think I was using Python 2.3 or maybe a 2.4 beta version. The Python docs were much more brightly colored back then.

I didn’t do any Python after that for around 4-5 years but I came back to it when I needed to create something that ended up like a bad version of mitmproxy (although mitmproxy didn’t exist yet). I really enjoyed working on that project and in Python and this is probably the only time this has happened to me but I remember looking up from my work and it was after midnight. I hadn’t eaten dinner and everybody else at work had gone home hours ago. I was hooked and I’ve been doing mostly Python ever since.

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

It’s been about a decade now, but I was a professional PHP developer for a few years. Sometimes, the language gets a bad reputation in the Python community but I always thought it was alright and it does have some areas the Python ecosystem could learn from. Today, I mostly work in Python with some JavaScript. Python is definitely my favorite.

What projects are you working on now?

Professionally, I’m working on Read the Docs and while we’re a very small team so everybody ends up touching everything, I mostly work on advertising, security, privacy, and scalability. Since we’re such a small team, I also do some of the marketing and sales stuff especially around advertising. I really like it but making money with open source is hard.

I don’t have as much time to work on open source for fun as I did in the past, but I also try to always have a side project or two in the works.

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

There’s definitely a special place in my heart for the Requests library. At a past job, I had a pretty complicated tool that used urllib2 and had to handle some custom authentication schemes, cookies, redirects, and lots of other things that requests makes easy but is hundreds of lines of code with urllib2.

The command line framework Click is pretty amazing and very under-appreciated. For a non-trivial command line app, I can’t imagine using anything else. The Pallets team has literally thought of everything. In a similar way to how a web framework like Django helps people design and structure an app in a good way, Click guides command line app writers toward making good apps.

This isn’t so much a library as a command line app but I’m going to plug VisiData. I was first introduced to it just a few months ago but I’m always finding new uses for it. Anytime I need to explore some data whether it’s a CSV, JSON, or some other format, I’ve been leaning on VisiData a lot.

How did you end up organizing San Diego Python?

San Diego Python formed out another group that was falling apart called DjangoSD. DjangoSD had a recurring problem of organizers being pulled away by the gravity of the Bay Area so organizer turnover was pretty high and it suffered as a result. The meetup met irregularly, was typically setup the day of, and it was usually at a different local bar each time. In January 2012, I attended a meetup and it was just 3 other people and one was the organizer. He said he didn’t want to do it anymore, asked who would take over, and I’ve been doing it ever since.

We now have a thriving local community and our monthly meetups will have 50+ people. The biggest key to success is having other great organizers — Diane Chen is amazing — and spreading the work around. If I had to do everything, I would have burned out by now. Also having it scheduled consistently with talks planned in advance has helped. The real test came a few years ago when my daughter was born and I couldn’t do as much for SD Python. The other organizers stepped up and the group kept on going without a hitch.

I see you work with Django. Why did you choose that versus a different Python web framework?

I learned Django in the 0.96 days and I think I gave Django, TurboGears, and Twisted each a try and I liked Django the best. The documentation for Django definitely helped. While I think most popular frameworks now have good docs, that was definitely not the case in those days.

I’ve since done a few smaller projects with Flask which definitely has some nice aspects. This is contentious to some people, but I have also had the growing pains where my Flask app that I always intended to be small is getting larger and I’m kicking myself for not going with Django from the start.

One of the biggest advantages I see in a “big” framework like Django is that the internal app structure is pretty consistent from project to project. Even when I’m working on a brand new project, I know exactly where to look for things: settings in settings.py, models in models.py, etc. This consistency makes the ramp up time for a developer on a new project much quicker. Just recently, I was helping a friend prepare his site for a traffic spike and this would have been a much bigger project if I had to ramp up on the framework as well as the project itself.

Thanks for doing the interview, David!