This week we welcome Eric Matthes (@ehmatthes) as our PyDev of the Week! Eric is the author of the popular book, Python Crash Course. He also created a neat set of Python Flash Cards that I reviewed earlier this year. You can catch up with Eric on his website or check out some of his work on Github.
Let’s take a few moments to get to know Eric better!
Can you tell us a little about yourself (hobbies, education, etc):
Sure! I grew up in southern New Hampshire, on the outskirts of Boston in the early 1980s. My father was a software engineer at DEC around that time, and I first learned to program on a kit computer in our basement back then. I am so grateful to my father for sharing the technology he had at home, instead of telling me to keep away from it all. It has been amazing to watch computers evolve from the early days of almost no one having a home computer to almost everyone having multiple computers in their lives.
I loved math and science in high school, and I went into undergrad as a chemical engineering major because I loved AP Chemistry. But I soon found that engineering was really about learning to solve other people’s problems. I enjoyed my physics classes though because they were all about understanding the universe, from the very large to the very small. For a while, I naively worried that if I stayed with physics long enough I’d start to find the world less interesting as I understood it on a deeper level. It was a joy to discover that the opposite was true: the more I learned, the more fascinating everything around me became.
I continued to learn new programming languages throughout my educational experiences. I took a variety of programming classes, and always had a few projects going for fun. I wrote a 3d graphing program in C during spring break one year in college.
I wanted to be a particle physicist, but I didn’t want to be a student forever. I decided to try teaching for a couple years and quickly found that the intellectual challenge of trying to reach every student in my classes was just as satisfying as doing hard science. I loved teaching and decided to stay with it.
In 2011 my son was born, and a month later my father died. It was a really hard time, but it was also a formative experience for me. My mother asked me to look through my father’s computer and let her know if there was anything worth saving. It was a really intimate experience, looking through all the projects he was working on, and reading through his notes. I used to visit him in his office whenever I went home, and as long as his computer was open and running that day I still felt directly connected to him. It was sad to realize these projects would never be finished, and would never be used by anyone. In the weeks that followed, I realized that if I died you’d find a bunch of half-finished projects on my computer as well. I made a commitment to start using the skills I’d learned to build something meaningful.
I wanted to build tools that would bring greater equity to public education. I gave a talk at PyCon 2013 about how much the educational world could gain from the open-source model, and Bill Pollock of No Starch Press approached me afterwards. “I hope you build what you described, and if you ever want to write a technical book let me know.” I went back to my classroom and saw a poster hanging on my wall: “What’s the least you need to know about programming in order to start building meaningful projects?” It was a list I had made for my students of the smallest set of things they needed to know in order to be able to build the things they cared about like games, data visualizations, and simple web apps. I realized that was the book I wanted to write, and the question on that poster became the guiding question for Python Crash Course. I hadn’t intended to write a book, but I realized that in five years of trying to teach programming to high school students, all the resources I found were either aimed at young kids or assumed more technical knowledge and experience than my students had. I decided to write a book for anyone old enough to not want a kids book. It has been immensely satisfying to see that Python Crash Course works for almost everyone in that anticipated audience: young kids motivated enough to want a more serious book, high school students, undergrads in all majors, grad students, working adults, and retired people who are curious to learn programming at an older age. I was surprised to find it even works well for people who are already fluent in another language and want to pick up Python quickly.
I don’t just do technical work. After growing up in New Hampshire, I moved to New York City for seven years in the 1990s-early 2000s. I bicycled across the US a couple times during the summer and then lived on a bicycle for over a year at one point. I rode from Seattle to Maine, down to Florida, over to California, and up to Alaska. That was a life-changing experience, and I moved to southeast Alaska for good in 2002. I love living in a sizeable but isolated town right on the edge of true wilderness. When I go trail running, there’s a very real chance I’ll see a brown bear. Server crashes are a lot easier to keep in perspective when I’ve had close encounters with bears in the woods. I love steep mountains, and I’ve been an active member of a technical rescue team since I moved here. I also love living a partial subsistence lifestyle. Every year we catch our own king salmon, sockeye, coho, halibut, crab, and deer. It’s wonderful living in a community where almost everyone goes out to fish, hunt, and gather a good deal of their own food.
Why did you start using Python?
My language of choice in the mid-2000s was Java. I had used C for a while and liked the higher-level libraries that Java offered. Then a friend said, “Hey you should check out Python. Your programs will be about a third as long as they are in Java.” Like many people new to Python at the time, I was pretty skeptical of the use of whitespace instead of braces, and I was surprised I didn’t need to declare variables. But these ideas were more intriguing than off-putting. I was working on a project to make artistic representations of random walks, and I had built a desktop application for generating and styling random walks. I rewrote the application in Python, and it really was about a third as long as my Java program. I was floored, and I’ve been using Python for almost every project since then.
When asked why they use Python, people famously say, “I came for the language and stayed for the community.” That answer certainly speaks for me. After my father died and I decided to take my programming work more seriously, I looked for a technical conference to attend. I am so grateful that I stumbled upon PyCon. I first went in 2012, which happened to coincide with some of the early diversity and Code of Conduct initiatives. I watched as the community set clear diversity goals, made specific plans to achieve those goals, and followed through on those plans. When I go to PyCon now, I see a fully diverse crowd, and the variety of topics that are presented is just awesome. The Python community is answering the question, “If we make programming accessible to everyone, what will people build?” It’s critical that we give people from all walks the power that programming offers, and let people build projects that serve their own needs, and the needs of their communities.
What other programming languages do you know and which is your favorite?
I use Python almost every day now. In the next year or so I really want to solidify my understanding of SQL, and I’d like to explore a functional language like Lisp or Haskell. I’d also like to play around with a variety of languages I’ve heard about but never used such as Rust and Go. I don’t ever want to get stuck with Python because it’s what I know; if something better comes along, I want to evolve with the industry.
…Thanks for doing the interview, Eric!