This week, we welcome Paweł Piotr Przeradowski (@squeaky_pl) as our PyDev of the Week! Pawel is the creative mind behind Japronto, which is a Python 3.5+ web micro-framework integrated with pipelining HTTP servers based on uvloop and picohttpparser. Pawel has a couple of other interesting projects over on GitHub as well.
Let’s take a few moments to get to know Pawel!
Can you tell us a little about yourself (hobbies, education, etc):
I was born in a small town in northwest Poland about 60 km from the German border. I was quite lucky to have a computer at home from the very early days. Knowing how things work behind the scenes has been always very intriguing to me.
At the of 8, I started doing short programs in BASIC. I learned to program by modifying examples given in a Commodore 64 manual we had at home. At the age of 12, we got our very first PC. I played for a while with QBASIC, which was shipped with DOS, and then I decided that I need to learn something more serious.
I bought my first book on C and started playing with the Borland C++ compiler when I was 13. At the age of 15, I decided to learn x86 assembler to write my own boot loaders and primitive real mode operating systems. When I was 16, I got interested in web development and learned PHP. At 19, I started a computer since course at my university but I got bored pretty quickly and after completing the first year with literally no effort.
I landed my first job as a web developer and decided not to continue my studies. I also got interested in Python around that time, but since there was no job market for it at the time in Poland, it was limited to my own private projects. After working for two years as a programmer, I decided to go to the Netherlands and worked further as a web developer there. More or less 5 years ago I moved to Spain and I’ve been living between Spain and Brazil since then. I’ve been doing exclusively Python and DevOps for those last years.
Besides programming, I love learning natural languages, and I have a lot of passion for comparative grammar and etymology. I speak pretty good Portuguese and Spanish. I work mainly in English and, of course, my native language is Polish. I’m trying to learn French at the moment. I’m into digital photography and I used to own several professional-grade cameras. These days, I don’t find the time to make use of them, so I sold all of that. I also love traveling and understanding cultures through meeting locals.
Why did you start using Python?
It was always astonishing to me how expressive and elegant Python was at the same time. I was used to working with low-level programming languages for a while, and then I learned PHP. That does the job, but it has a past of terrible design mistakes. Python is crafted very carefully, balancing procedural, functional, and object-oriented features in a way it makes it very pleasant to program with. It also gained a very attractive way to do asynchronous programming lately while not forcing you to use it. Python is used in so many fields worldwide these days that it’s also a safe bet for your professional career. It also has a vibrant and very welcoming community.
What other programming languages do you know and which is your favorite?
Of course, Python is my favorite. I also enjoy low-level C and x86 assembler. I did and still can do PHP, but I definitely try not to. I also had some adventures with .NET and C# and Windows when it first appeared. When Android was announced, programming for mobile devices got so interesting that I learned Java just to do that. As I do a lot of DevOps work, I am also fine with shell scripting. And yes we all do SQL.
I’m really interested in Rust, but for most stuff, Python is a better fit really.
What projects are you working on now?
I have a project that went viral lately. It’s called Japronto and it’s an ongoing effort to implement fast and elegant HTTP servers tightly integrated with a minimal web framework. I am doing a major refactor now and a lot of proof of concept work. I hope to land a better router implementation very soon with support for middleware. Then, I will probably try to attack web sockets and HTTP/2 implantation. Adding synchronous, WSGI, and gevent workers is something that I find interesting as well. I also want to look into gRPC afterward.
Another project I maintain is Portable PyPy binaries, which is a way to install the PyPy Python implementation on many Linux distributions without going through the pains of API/ABI incompatibility between libraries.
Which Python libraries are your favorite (core or third party)?
I think I can’t work without ipython these days. It makes managing lots of small snippets and trying things out a breeze. I am also a big fan of the pytest testing framework, which lets you kill most of the boilerplate you would otherwise need to have. CFFI is a great way to integrate C with Python because it can automatically parse typical C header style code. I really like Gevent for its simple and powerful way of doing asynchronous programming in Python. Asyncio has been integrated lately into the Python standard library and is probably a way to go forward. I hope it can get better with time, but in my opinion, it could be simpler and lacks good documentation.
Where do you see Python going as a programming language?
Python is growing stronger these days and we are on the right course to keep Python relevant. We already got past the “Python 3 broke my code” drama and CPython 3 is already faster than CPython 2.7. In my opinion, the real future of Python implementations is PyPy. We’ve recently received a 3.5 compatible release from the PyPy team and it’s looking great as you can see from the benchmarks I made on their behalf. PyPy also improved their compatibility with CPython and they can run NumPy and Pandas code these days. Python continues being a safe bet and it keeps growing exponentially in scientific, data analytics, and the artificial intelligence space. It will surely continue being a great glue language to bridge low-level technologies together.