PyDev of the Week: Massimo DiPierro

This week we welcome Massimo DiPierro (@mdipierro) as our PyDev of the Week! Massimo is the inventor and lead developer of web2py, but he’s also contributed to lots of other projects which you can see on his github profile. He is also the author of the following books: Annotated Algorithms in Python: with Applications in Physics, Biology, and Finance and web2py Complete Reference Manual. Let’s take some time to get to know him better!

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

I am 44, was born in Italy, and since when I was kid I loved math and science. I have a BS/MS in Physics from the University of Pisa and a Ph.D. in Theoretical Physics from the University of Southampton in UK. This means I can read most of the formulas that Sheldon writes in the Big Bang Theory. Although, while Sheldon works on String Theory, I worked on Lattice Quantum Chromo Dynamics, a computational approach to QCD, the model that describes how quarks bind together to form the majority of matter in the universe. This is what brought me to the US: I moved here to work as postdoctoral researcher at the Fermi National Accelerator Laboratory. Eventually I realized I had a better chance at an academic career in Computing than in Physics and I accepted a job offer from the School of Computing of DePaul University. I spend most of time programming, doing research, and consulting. I enjoy scuba diving, sailing, and skiing but I do not get to do as much of those as I would like.

Why did you start using Python?

I started using Python about 10 years ago. When I was a physicist I was known for a C++ library for Lattice Quantum Chromo-dynamics computations known as FermiQCD. I created a Python wrapper for it.

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

I know many programming languages. The ones I know best and I enjoy the most are C, C++, Python, and JavaScript. The first language I learned was COBOL. My father taught me. The second was BASIC. The third was Pascal. The fourth was Clipper and the first program I ever sold was in Clipper. The only language I learned in a formal course was Scheme. I learned it from the famous book “Structure and Interpretation of Computer Programs” and I coded symbolic differentiation. In my Ph.D. thesis I programmed a Cray T3E using High Performance FORTRAN and C++ with MPI. At DePaul I have taught C/C++, Java, Python, JavaScript, and OpenCL. Java is my least favorite language. JavaScript was my second least favorite but I have learned to appreciate it over time and I find myself using it more than Python recently.

What projects are you working on now?

I am working on many projects and some I cannot talk about. Most of the projects are related to the Python language and web2py in particular. I provide support to web2py users and some times help them bootstrap new projects. Other times I help them fix old projects. I am also constantly developing new Python modules to push the boundaries of what web2py can do and explore its future. One project that is taking a lot of my time and not web2py related is Camio. I am a senior engineer for and we have built a platform that turns any device with a camera into a security camera. Images and videos are uploaded and stored in the cloud, analyzed by neural networks, and made searchable using natural language. Most of the code is built with Python, including the Machine Learning.

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

My favorite libraries are pickle and ast. Pickle is a core library that allows to serialize and to de-serialize almost any data structure in Python. That means it is trivial to save and restore state of any program at any time, effortlessly. There is nothing equivalent in compiled languages. Ast is another core library. It allows processing of Abstract Syntax Trees, i.e. a symbolic representation of the code. This enables, for example, real time conversion of Python code into other languages such as C/JavaScript/OpenCL like my project, Cython, and Numba.

Is there anything else you’d like to say?

I love Python for many reasons. One is the easy syntax. Another is the power of its numerical libraries (numpy, scipy, sympy, matplotlib, scikit learn). Yet another reason is the fact that it is an interpreted language and, as such, it can do magical things. For example it can introspect itself with __code__, it can decompile itself and recompile itself into other languages.

If you are reading this is probably because you know me as the lead developer of web2py. You may have heard of it. There is a chance what you have heard does not quite do justice to it. In web2py we tried to do something unique and in may ways we took an approach very different than other Pythonic web frameworks. One unique feature is in its philosophy: in web2py “do not repeat yourself” trumps “explicit is better than implicit” and therefore everything has a default. This means code is very compact but it does not imply code cannot be customized. Another feature is fully batteries included: we ship web2py with a sqlite, a database abstraction layer, a multithreaded SSL-enabled web server, web based IDE, ticketing system for logging errors, caching libraries (redis, memcache), login methods (ldap, pam, openid, etc.), form widgets, validators, payment systems, etc. Web2py was the first in many respects and it was WSGI based, had automatic database migrations, had mandatory CRSF protection, and had a web based IDE since 2007. We are still backward compatible with the 2007 version. Yet we have moved on a lot from there. For example, we had support for Tornado based websockets and asynchronous background task queues for about 5 years. The bottom line is: perhaps you should take a second look into web2py and perhaps you can help us make it even better.

Thanks for doing the interview!

Print Friendly
  • cassiobotaro

    Nice massimo! Really excited waiting for web3py.