PyDev of the Week: Philip James

This week we welcome Philip James (@phildini) as our PyDev of the Week! Philip is a core contributor for Beeware project. He has worked on several  other open source projects that you’ll learn about in this interview. He is also a popular speaker at PyCons and DjangoCons. You can find out more about Philip on his website or check out his work on Github.

Let’s spend some time getting to know Philip better!

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

My name is Philip, but I’m probably better known on the internet as phildini. That nickname came from a stage name; I used to do magic shows in high school for pocket money. In the Python community, I’m maybe best known as a frequent conference speaker, I’ve spoken at PyCons and DjangoCons around the world for the past 5 years. Beyond being a speaker, I’ve helped organize some Python meetups and conferences, and I serve on the PSF Conduct Working Group as it’s Chair. I’m also one of the early Core Contributors to the BeeWare project.

I’m the Head of Engineering at a personal finance company called Trim, where we try to automate saving people money on things like their Internet bill. I also co-run a publishing company and print shop called Galaxy Brain with a friend I met while I was at Patreon. We started as a Risograph print shop, making a zine about wine called Adult Juice Box and doing art prints. Galaxy Brain has been moving into software with the pandemic, because accessing our studio is harder, but we’re planning on keeping the printing going once things calm down. It’s kind of hilarious to us that we moved into software as an afterthought; I think we both resisted it for so long because the software is our day job.

Why did you start using Python?

I can remember helping to run a youth retreat in the Santa Cruz mountains in… I want to say 2005 or 2006, and one of the adults on the trip, who’s still a very good friend, showing me Python on a computer we had hooked up to one of the camp’s projectors. My first Python lesson happened on a 6-foot widescreen. Then in college, I took a couple courses on web applications and didn’t want to use PHP, so I started building apps in Django. That got me my first job in programming, then a job at Eventbrite, which got me into speaking, and the rest is history.

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

College theoretically taught me C and Java, but I know them like some people know ancient Greek — I can read it, but good luck speaking it. Towards the end of college I picked up some C#, and I really enjoyed my time in that language. It hit a lot of nice compromises between direct management and object-oriented modern languages, and I think a lot of that had to do with the fact that Visual Studio was such an incredible IDE.

Since I moved into web programming, I’ve picked up Javascript and Ruby, enough that I can write things in them but not enough to feel comfortable starting a project with them. Web development is in this really weird place right now, where you can maybe get away with only knowing Javascript, but you need a working familiarity with HTML, CSS, Javascript, Python, Ruby, and Shell to be effective at a high level. Maybe you just need to be good at googling those things.

I’ve recently started going deep on a language called ink, which is a language for writing Interactive Fiction games. We used to use this term “literate programming” way more; ink (along with twine and some others) is how you “program literature”. You can use ink to make standalone games or export it into a format that will drive narrative events in more complex Unity games. Stories and narratives don’t lend themselves well to modularization in the way programmers think of it, so it’s been fun watching my optimize-everything programmer brain clash with my get-the-narrative-out writer brain as I learn ink.

What projects are you working on now?

The trick is getting me to stop working on projects. Right now there’s my day job, as well as a host of Galaxy Brain projects. VictoryPic is a little slack app for bringing an Instagram-like experience to Slack. Hello Caller is a tool for doing podcast call-in shows. I’ve got some scripts I put up for building an “on-air” monitor for my office using a raspberry pi and CircuitPlayground Express. I’m writing a scraping library for the game store itch, so that I can do some interesting video game streaming projects. All those are in Python, for the most part, and then there’s the Interactive Fiction game, written in ink, that I’m working on for Galaxy Brain’s wine zine.

I also continue to write for Adult Juice Box, and run a podcast called Thought & A Chaser

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

I think the CSV and sqlite libraries in the standard library are the two most important batteries Python comes with, outside the core language. With those two libraries, you can build a deeper well of data-driven apps than any other language I’ve seen. Outside of the stdlib, requests is the first library I reach for when I’m starting a project, and Django is how I build most of the projects I listed up above. Django is the most powerful set of abstractions for building webapps I’ve seen, in any language.

How did you get involved with the Beeware project?

I got involved in Beeware because of my speaking career. I was accepted to speak at DjangoCon Europe in Budapest a few years back, and met Dr. Russeell Keith-Magee, the creator of Beeware, along with Katie McLaughlin, one of the original Core Contributors. We started chatting about Beeware there, and I hacked on it a bit at sprints, and then I saw them at DjangoCon US in Philadelphia, and then again at PyCon US in Portland, and I had kept working on Beeware during that time and at sprints for those events. At PyCon I got the commit bit and became a Core Contributor.

The thing I take away from this story, that I tell others who want to get involved, is two-fold: (1) Submit talks to conferences, early and often. Being a conference speaker may or may not be good for your career, but it’s incredible for your sense of community and your friend circle within the tech communities you care about. (2) Show Up. There is immeasurable power in being consistent, in showing up to help regularly, in trying to ease the burdens of the people and projects you care about. The people you value in turn value those who Show Up, even if they’re not able to voice it.

Which Beeware package do you enjoy the most?

It feels like cheating to say Briefcase, but I really think Briefcase is the most interesting part of the whole project, because it’s the closest on solving Python’s ecosystem and package management problems. We shouldn’t have to teach people what pip is to let them benefit from what Python can do.

Is there anything else you’d like to say?

I think it’s important for those of us in programming especially to remember that our communities are not as insular as we think; we exist in the world, and this world has granted quite a bit to many of us. We need to be thinking about how we can give back, not just to the tech communities but to the world as a whole. Programming can be a force for justice, but sometimes the greatest difference is made when we show up to our local protest or city council meeting.

Thanks for doing the interview, Philip!