This week we welcome Fabio Pliger (@b_smoke) as our PyDev of the Week! Fabio is the creator and tech lead of PyScript. You can see what else Fabio is working on over at GitHub.
Let’s spend a few moments getting to know about Fabio!
Can you tell us a little about yourself (hobbies, education, etc):
I was born in Rio de Janeiro – Brasil, from a big family of Italian immigrants, where I stayed until I was 15 when I moved to Italy, finished my studies, and graduated in Computer Science.
Videogames were one of my biggest passions growing up and probably the main trigger for my interest in computers even if, unfortunately, I don’t have much time to play these days. Other than programming, computers, and video games, photography is one of my current major hobbies these days.
Why did you start using Python?
I started using Python around 2001/2002 when I was working at my very first gig as a programmer. A friend of my boss at the time had a son who was very passionate (and talented) about Python, so my manager asked me to check it out. We became friends, I fell in love with the language and a few years later we founded the Python Italia Association (with other friends) to promote Python and Pycon in Italy.
What other programming languages do you know and which is your favorite?
These days, if I’m not using Python, I mostly program in Javascript or TypeScript. I must say that I definitely enjoy TypeScript more than Javascript. Needless to say, my favorite language remains Python.
In the past, I’ve also worked with Visual Basic, C#, C, and a bit of Caml (which I quite enjoyed) and Java in college but none of them really made me enjoy programming as Python does. I’d definitely enjoy having some time to learn Rust and Go.
What projects are you working on now?
At the moment, I spend most of my time on PyScript and related projects inside Anaconda. More specifically, in PyScript, I’m currently working on its Plugin system that will allow anyone to create pure Python plugins that can extend PyScript functionality and even create new tags. For instance, it’d be really easy to create a new tag (let’s say ) that can interpret Markdown content and translate it to HTML and that can be done in pure Python and in just about 10 lines of code.
Another feature I’m currently starting to work on is a PyScript higher-level interface to the DOM (in Python). It’s currently already possible to interact with the DOM through a very simple API and the native Javascript API (accessible through Pyodide) but we want to create an API that is powerful and yet, very Pythonic and simple to use.
Which Python libraries are your favorite (core or 3rd party)?
Oh.. that’s a really hard question 🙂
I can’t name one favorite library. But will name some of my favorites:
- Conda: when I started using Python (many many maaaaany years ago 🙂 ) it was such a pain to create Python environments. Conda magic makes it all feel so easy but I still remember the hours and days spent trying to get Python packages and C dependencies to compile on Windows machines, back in the day.
- Pytest: definitely love writing tests with Pytest. It has a brilliant API and its plugin system is really good. Highly recommend it to anyone who cares about testing their software (which should be everyone 😉
- Pandas and Numpy: there’s a reason Pandas is so much loved by the data science community. It’s a great framework that allows users to manipulate data and access the power of Numpy with a very accessible interface.
- Typer and Rich: if you ever had to write a CLI application you probably will love these libraries. They are a mix of simple API that just makes sense and powerful features that would usually require a lot of boilerplate code.
- FastAPI: from the same author of Typer, FastAPI is a high-performant and modern web framework on top of Starlette and Pydantic (Oh, yeah, I also love Pydantic 🙂 ) that focuses on user experience alongside performance.
There are many more that I’d love to mention but I realize this list is becoming “way bigger than your one favorite package”. The one common thread you can notice across all these libraries is how easy and user-focused they are. They just make developers’ life much easier with great design and performance.
What’s the origin story of PyScript?
Peter Wang [co-parent of PyScript] and I have been entertaining the idea of democratizing programming and data science for quite some time. A lot of what we do at Anaconda revolves around the idea of making tools more accessible and easier to use. We also often have conversations about current technology, trends, and whatnot.
Python, the most popular programming language in the world today, doesn’t have a very compelling story on the 2 most popular HW and SW systems in the world: phones/tablet devices and the browser. We started to look into it and actually, the eco-system was quite ready for a platform to enable Python on the browser with a simple yet rich interface (with all the progress on browsers, today they are basically a very secure and portable VM and WASM is a very interesting “Virtual OS”). After a few weeks/months of talking about it and doing some research, I started developing a prototype (that got accelerated after Peter was invited to Keynote at Pycon). The rest is history 🙂
What are the top 3 things you have learned so far while working on PyScript?
It’s probably a mix of things I’ve learned and confirmation of some things I knew already
- If you build something useful, people will come, use and contribute; even if it’s not perfect. It was especially true for when we released the first version of PyScript very quickly for the PyCon announcement. I made several trade-offs that I wouldn’t normally allow (and was extremely worried about) but we were hoping users would love the concept and vision and be forgiven while we paid our tech debt, and that’s what has been happening.
- “The web” and Python are 2 very different things. Python in the browser is (and will be for a long time) different: in good and less good ways. WASM (and Python on the browser) are very young technologies and we have a lot to build and learn.
- Technology is not the only hard challenge in software development. People and naming things can often be harder. There are lots of great projects out there and we often choose to build yet another version of the same thing instead of building on top of them. If we start communicating more and finding ways to build on top of them we can achieve great things! PyScript is intentionally trying to be additive to the ecosystem rather than competitive.
Is there anything else you’d like to say?
As cheesy as it may sound, I’d really like to thank the Python community. My personal experience is definitely one of these stories that you hear around: “came for the language, stayed for the community”. Yes, Python is great, but its community is just what makes it unique.
Also, WebAssembly is a really interesting and powerful technology. CPython now builds to WASM but there’s so much more we can do to increase support and performance. I really believe that WebAssembly can be the next-gen container technology and it can be what can bring Python to the browser and mobile. As a community Python community should probably start paying a lot of attention to it. That’s why we created PyScript and one of the reasons I invite everyone to try it!