Console #109 -- Interview with Helin of PyWebIO
Featuring OpenCost, Splitgraph, and PyWebIO
🤝 Sponsor - Surge AI
Surge AI is a data labeling platform for AI, used by engineers and researchers at Google, Stanford, and Twitch to train their AI. We provide the tools and an elite workforce in 20+ languages, so you can stop managing labeling projects or labeling data yourself. Join the best AI researchers in the world and build transformational models, faster.
Open source cost monitoring for cloud-native environments. OpenCost is a vendor-neutral open source project for measuring and allocating infrastructure and container costs in real-time.
Splitgraph is a tool for building, versioning, and querying reproducible datasets. Use Splitgraph to package your data into self-contained data images that you can share with other Splitgraph instances.
PyWebIO provides a series of imperative functions to obtain user input and output on the browser, turning the browser into a "rich text terminal", and can be used to build simple web applications or browser-based GUI applications without the need to have knowledge of HTML and JS.
Not subscribed to Console? Subscribe now to get a list of cool open-source projects and an interesting interview every week!
Hey Helin! Thanks for joining us! Let’s start with your background. Where have you worked in the past, where are you from, how did you learn how to program, and what languages or frameworks do you like?
I was a quantum physicist and really enjoyed making and measuring nano-devices to observe interesting physical phenomena. I used Python to automate research data analysis. This little edge helped me become more productive in research.
After my Ph.D., I started an industry job at Intel and got chances to work on interesting projects, including both technical and non-technical ones. With different teams, we figured out doping levels of transistors to minimize energy consumption; developed a robot to control CPU’s thermal throttling, and helped engineers and customers determine CPU features to maximize financial returns. Among every single project I have touched, there is one thing in common, they all require data-driven solutions.
I’ve seen my colleagues extract wonderful insights using various analytic tools: Excel, SAS JMP, PowerBI, etc. Compared to these “click button tools”, my preference is still Python, mainly for the following 2 reasons:
1) “Analysis as code”. This allows a team to read and learn each others’ analysis process, and build on each others’ ideas. Eventually, it helps to form a culture of transparency and sharing.
2) “Unlimited deployment”. Python scripts can be deployed in various ways: web apps, native apps, Jupyter notebooks, and cron jobs. That being said, deployment of Python code usually requires extra knowledge and experiences. The good news is that there are many new solutions, including PyWebIO, targeting such pain points. I’m optimistic that Python will become easier to use over time.
What is your favorite software tool?
My favorite software tool is the internet browser. 75% of my work is done in the browser. I take notes in an online editor; write and deploy Python scripts either in a Jupyter Notebook or a cloud IDE; watch tutorials, get to know people, and communicate with my team, all in a browser. It’s amazing how far we’ve gone to make the web ubiquitous.
If you could dictate that everyone in the world should read one book, what would it be?
I would suggest a poetry book, in which the poems are curated from all over the world. Every poem is printed in its original language.
If you had to suggest 1 person developers should follow, who would it be?
It would be a music composer. Composing might be the oldest programming skill. Instead of sending instructions to computers, it derives results from instruments. In composing, there are logic, rules, best practices, as well as passion, storytelling, and humanity. To anyone who wants to understand how complex a system can be if it’s solely built by a single person from scratch, I would recommend Beethoven’s music as a manifestation of such limits.
If you could teach every 12-year-old in the world one thing, what would it be and why?
I would say: It’s okay to spend long hours on a passion project of yours and don’t let anyone tell you otherwise. But most importantly, sharing your passion publicly is highly encouraged. By doing so, a feedback loop can be established. Trusted feedback helps you get the most out of your time.
How do you separate good project ideas from bad ones?
I organize my ideas by asking: does it excite my target audience, and will they get hooked on it? It’s actually a duplicate of Y-combinator’s slogan: make something people want.
Why was PyWebIO started?
There’re many citizen developers, like myself, who are not software engineers but write scripts regularly to make life easier. We often hit walls when trying to share our scripts with others. In fact, I even used email attachments to send py files. The next minute, I found myself walking over to the receiver’s cubicle cause he needed help to set up the correct dependencies. I simply hoped I was able to package my scripts into a web app with a straightforward user interface and get a URL for whoever needed it. Web development is not rocket science. Unfortunately, all existing frameworks and tool chains seem too complicated for me and my team.
The primary goal of PyWebIO is to make web development more accessible to Python developers. So they can build and share engineering tools easily through the internet.
Who, or what was the biggest inspiration for PyWebIO?
This tweet in 2020 tells it all.
Although neither solution was a perfect fit for my problem, they inspired the PyWebIO team to explore the problem space. From Retool, we learned that not only citizen developers, but software engineers also need easy solutions to build web tools quickly. On the other hand, Streamlit helps us realize how much the Python community is looking forward to low-code web solutions.
What is the best way for a new developer to contribute to PyWebIO?
The best way for someone to contribute is to start building their apps and joining our Discord server. We’d love to learn how PyWebIO is being used. If any help is needed, we will first announce it on Discord.
Do you have any other project ideas that you haven’t started?
Art has always been a passion of mine, and I hope to make art education more accessible to underfunded communities. Lately, I’ve been thinking about how to make it actually work as a non-profit organization. I have not done anything beyond just talking about it to some friends with beers. But if I end up working on it, my top priority is to create a business model so that more than 80% of its income comes from art sales.
Where do you see open-source heading next?
I hope a new open source economic model will be the next big thing after GitHub.
I’ve been observing and comprehending how open source projects are built and sustained. It’s easy to start but hard to sustain. Part of the root cause can be attributed to a nearly-broken open source economy. Open source seems to be free lunch for everyone. However, it takes developers lots of energy to maintain, and the energy has to come from somewhere. Most people would agree that the open source ecosystem benefits from more developers achieving financial stability, especially directly from their own projects.
However, the monetization options and tools are really limited for individual open source creators. They typically only have two options: selling paid services by founding a for-profit company or asking for donations like what non-profit organizations would do.
I think there should be more ways to support open source projects. I'm working on a couple of ideas in parallel with PyWebIO, and I'd like to share them in the future.
Want to join the conversation about one of the projects featured this week? Drop a comment, or see what others are saying!