PyDev of the Week: Dave Forgac

This week we welcome Dave Forgac as our PyDev of the Week! Dave is an organizer of PyOhio, ClePy, and the Cleveland API Meetup. He also gave a presentation about sharing your code at PyCon 2017 that you can watch below:

Dave also has a website that lists his other talks. You might also find his Github profile interesting. Let’s take a few moments to get to know Dave better!

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

I work as a Sr. Software Engineer at American Greetings in the greater Cleveland, OH area. There I focus mainly on API design and development, application deployment, and internal developer experience.

I grew up in Cleveland and took a few semesters of college classes before losing a scholarship and taking some time off. I moved to Wilmington, DE in ‘03 and eventually went back to school and finished a degree in Information Systems eight years later than planned (it’s never too late!) I moved back to the Cleveland area with my wife in 2011. We now have a 3.5 year old and a newborn keeping us busy.

I enjoy playing with my kids, walking around town with my family, cooking, brewing, hiking, and tabletop gaming. I’ve really been enjoying 5th edition D&D lately. I also have a bunch of “toy” programming projects that I work on when I find time.

Lately I’ve spent a lot more of my own time doing community organizing than I have coding. I help organize a couple local meetups and and PyOhio. I’m the PyOhio 2017 Program Chair and just finalized the schedule. You should check out PyOhio some time!

Why did you start using Python?

My first paid programming work was using Perl and at some point someone (I wish I could remember who!) suggested that I check out Python. I got myself a copy of Learning Python for Christmas in 1999 and liked what I saw. I then did some work in PHP and Ruby but dabbled in Python along the way. I finally started using it more regularly around to automate administration tasks when I started work at a web hosting company in ‘08. Since then Python has been my primary language.

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

I’ve worked with a lot of languages over the years, starting with BASIC on a TRS-80 that I rescued from a neighbor’s trash when I was a kid. I’ve done non-trivial work in Perl, PHP, Java, Ruby, JavaScript / Node, and Go. Python is by far my favorite for both the language itself and for the community around it. I can see myself doing a little more work in Go depending on the task though.

What projects are you working on now?

I spent the last few months preparing for talks and tutorials at OSCON and PyCon and as soon as those were done PyOhio organizing got into full swing. With a new kid arriving in August I probably won’t have too much time for extra projects any time soon. Once I do find some free time though I’m working on finishing-up a DIY weather station and adding some features to an Alexa skill for use with D&D. I also have some updates planned for a couple real-world-connected Twitter bots: @iotjackolantern and @iotxmastree

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

Three come to mind because they’ve changed the way I write and manage Python code on a daily basis:

  • Cookiecutter allows you to generate projects based on a template and answers to some questions. It takes care of all the boilerplate for you so you can quickly get to work on what your package does rather than packaging and setup. I’ve found it makes me much more likely to package and publish code. I like that you can include test stubs and documentation layouts in the generated project because when you publish a project, people are a lot more likely to contribute improvements to existing tests / docs than they are to create them wholesale for you. I suggest finding one of the package templates that’s close to what you need, forking it, and using that as the basis of your Python projects.
  • Pipsi installs Python packages in their own isolated virtualenvs and makes them available from your default shell. I use this to make a lot of Python command line tools available to me without having to worry about activating a virtualenv. For example, I have Cookiecutter installed via Pipsi.
  • Jupyter gives you a web-based interface for running Python (and other code) interactively. You mostly hear about it in the context of data analysis and scientific computing but I’ve found it’s a great way to experiment with new code or to keep examples of how things work for when I forget them.

Is there anything else you’d like to say?

I’m super-excited that PyCon 2018-2019 will be in Cleveland! I’m looking forward to showing-off my under-appreciated city and think folks are going to have a great time. Find me on Twitter @tylerdave if you want to talk about visiting Cleveland for PyCon or anything else.

Thanks for doing the interview!