This week we welcome Jim Anderson (@jimande75053775) as our PyDev of the Week! Jim is a contributing writer for Real Python. You can see some of the things that Jim works on in his spare time over on Github.
Let’s take a few moments to get to know Jim better!
Can you tell us a little about yourself (hobbies, education, etc):
I love to snowboard in the winter and I’m an avid bike commuter, though I’ll admit that sounds more impressive than it is – I only live 3 miles from work! I’ve got two grade-school aged daughters and a lovely wife, all of whom ski and give me grief for snowboarding.
I’ve been lucky enough to get to program for a living since I was a kid, mainly on low-level and embedded software, with a couple of brief turns doing enterprise-level band-end code.
Why did you start using Python?
I came to Python from Perl. I had used perl for a few large projects and, while I found the language fun for small things, it tended to get cumbersome for me as the project grew. A co-worked turned me on to Python for a few small tools, and the next thing I knew I was writing a build system in it!
What other programming languages do you know and which is your favorite?
Ooh, that’s a tough one. I currently work in C++ mainly, with some C, Lua, Bash, Python, and a little Perl thrown in. In the past, I’ve also done some assembly, Fortran, Pascal, Java, Ruby, and maybe a few more, but I couldn’t do much more than recognize them at this point.
Clearly right now I’m fairly invested in Python, so I’m going to list that as my favorite. I do remember the joy I got from learning Basic as a kid and the first few Perl scripts when you realized how powerful it was.
What projects are you working on now?
At work, I develop firmware for video security cameras and am coming up to speed on how our image processing pipeline works. There’s a lot for me to learn there, but much of it is refactoring code at the moment. That’s all C++.
When I’m not at work I’m working on a tool for automating some of the tasks involved in writing and reviewing articles for Real Python. After I submitted my last article, I realized that there were several steps on my “before submitting” checklist that could be automated, which got me started.
To that end, I’ve been working on a PR for the codespell project, which is fairly fun. Codespell is a tool for doing spell checking in code files. The feature I’ve been adding is to allow it to check for two-word phrases and correct them. In my instance I want to find things that could be contractions, like changing “it is” to “it’s”.
Once that’s working I’ve got a few more ideas that will help with reviews as well. Simple line-length checks, searching for some formatting gotchas that seem to happen frequently. Things like that.
I’m also, very slowly, refactoring one of my first home projects; pyres. Pyres is a podcast management tool that downloads new episodes and puts them on an mp3 player. It’s not really ready-for-prime-time, but it works for me. I wrote it in Python 2.7 and have spent the last couple of years working on a Python 3 replacement. I keep getting bogged down with other ideas, though, so it gets shelved pretty frequently.
Which Python libraries are your favorite (core or 3rd party)?
I’ve had a lot of fun using `jinja2` in a few projects. I’ve written a few different tools, for work and home projects, that involve code generation of some sort. Getting the details of templates to work out correctly can be frustrating, but it’s really satisfying when it works.
I also am interested in getting to play a bit more with PyBind11, which helps in generating C++ bindings. I did an overview article on bindings and this was the tool that struck me as the most interesting.
How did you end up working with Real Python?
I got lucky and ended up writing a few articles for Dan’s previous site, dbader.org. This was a few years ago, so I’m not really sure where I stumbled into that opportunity, but it was probably through Dan’s email newsletter. I think my third article on dbader.org came out right as he was buying Real Python, so it was natural for me to slide over into that site.
The team has grown so much since then, but it’s still got a friendly vibe!
What motivates you to write tutorials about Python or programming in general?
There are all sorts of motivations. I think I started out with the plan that it would help my career (it has a bit) and my communication skills (it has tremendously). These days the motivation comes from topics that are interesting to me and that I think will resonate with readers.
We get to see all the comments that people leave on the site, and that’s a HUGE motivator, seeing how many people you can help. Finally, I was lucky enough to go to PyCon 2019 in Cleveland and PyColorado last year. At both shows, I had people come up to me and talk to me about articles I’d written and the site in general. That is really a wonderful experience.
Thanks for doing the interview, Jim!