Summary Debugging is a painful but necessary practice in software development. The tools that are available in Python range from the built-in debugger, to tools integrated with your coding environment, to the trusty print function. In this episode Ram Rachum describes his work on PySnooper and how it can be used to speed up your problem solving in complex or legacy applications. Announcements Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great. When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you’ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, or running your build servers, they just launched dedicated CPU instances. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show! You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don’t want to miss out on this year’s conference season. We have partnered with organizations such as O’Reilly Media and the Python Software Foundation. Upcoming events include the Software Architecture Conference in NYC and PyCon US in Pittsburgh. Go to pythonpodcast.com/conferences to learn more about these and other events, and take advantage of our partner discounts to save money when you register today. Your host as usual is Tobias Macey and today I’m interviewing Ram Rachum about PySnooper, an alternative approach to debugging your python projects Interview Introductions How did you get introduced to Python? How do developers normally debug their code, and what need does PySnooper address that isn’t addressed by the established methods? What is the workflow for using PySnooper for investigating or debugging a project? (This will probably be answered in the answer to the question above) What are some of the pieces of information that it surfaces and how do they aid the developer in directing their investigation? What were some of the projects that you were testing it with and how did they influence the direction that you took PySnooper? Can you describe how PySnooper is implemented and some of the ways that it has evolved since you first began working on it? What are some of the initial goals that you had for the project which you have since abandoned as either not useful or too challenging to implement? What are some of the edge cases or technical challenges that you have encountered while working on PySnooper, either in Python itself or in the tool? There is another project called Snoop which builds on top of your work on PySnooper to add some extra functionality and developer ergonomics. What, if anything, was your reaction to it and how has it influenced your work on PySnooper? One of the notable aspects of your work on PySnooper is the amount of attention that it garnered shortly after you published it. How has that visibility affected the long-term popularity and use of PySnooper? What have been some of the most interesting, unexpected, or difficult aspects of creating, maintaining, and promoting PySnooper? What do you have planned for the future of the project? Keep In Touch cool-RR on GitHub Personal Website Consulting Website Picks Tobias PyCon US Call for proposals Registration Ram Nonviolent communication Links PySnooper Ram’s Python workshops The PyWeb-IL meetup BlueVine’s career page Submit your CV to Ram’s email mailto:ram@rachum.com Tel Aviv Israel Paul Graham Y Combinator startup accelerator Wing IDE PyCharm sys.settrace Python f_trace coverage.py Podcast.init Interview PEP == Python Enhancement Proposal Podcast Episode snoop project Alex Hall pdb pudb pdb++ The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA