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 server 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 north west 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 scene has been always very intriguing to me. At the of 8 I started doing short programs in BASIC language. I learnt to program by modifying examples given in Commodore 64 manual we had at home. At the age of 12 we’ve got our very first PC. I played for a while with QBASIC that was shipped with DOS and then I decided that I need to learn something more serious. I’ve bought my first book on C and started playing with 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 learnt PHP. At 19 I started a computer since course at the university but I got bored pretty quickly and after completing 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 only limited to my own private projects. After working for 2 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 a lot and I used to own several professional grade cameras. These days I don’t find 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 is at the same time. I was used to working with low level programming languages for a while and then I learnt PHP that does the job but it’s 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 learnt 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 server tightly integrated with a minimal web framework. I am doing a major re-factor now and making a lot of proof of concept work. I hope to land a better router implementation very soon with support for middlewares. 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 afterwards.
Another project I maintain is Portable PyPy binaries which is a way to install PyPy Python implementation on many Linux distributions without going through pains of API/ABI incompatibility between libraries.
Which Python libraries are your favorite (core or 3rd 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 pytest testing framework which lets you kill most of the boiler plate you would otherwise need to have. CFFI is a great way of integrating C with Python because it can automatically parse typical C header style code. I really like Gevent for its simple and powerful way to do asynchronous programming in Python. Asyncio has been integrated lately into 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 PyPy team and it’s looking great as you can see from the benchmarks I made on behalf of PyPy team [https://morepypy.blogspot.com.es/2017/03/async-http-benchmarks-on-pypy3.html]. PyPy also improved their compatibility with CPython and they can run NumPy and Pandas code these days. Python continuous being safe bet and it keeps growing exponentially in scientific, data analytics and artificial intelligence space. It will surely continue being a great glue language to bridge low level technologies together.
Thanks so much for doing the interview!