🤝 Sponsor - Surge AI
Double your ML performance, 10x faster with 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.
🏗️ Projects
OpenCost
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.
language: Go, stars: 2224, issues: 71, last commit: June 08, 2022
repo: github.com/kubecost/opencost
site: opencost.io
Splitgraph
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.
language: Python, stars: 297, issues: 10, last commit: June 11, 2022
repo: github.com/splitgraph/splitgraph
site: splitgraph.com
PyWebIO
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.
language: Python, stars: 3055, issues: last commit: June 08, 2022
repo: github.com/pywebio/PyWebIO
demos: pywebio-demos.pywebio.online
🎤 Interview With Helin of PyWebIO
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.
When talking to electrical engineers, data scientists, bio and space tech developers, I find they often have smart ideas on how to improve work efficiency with customized web tools. The problem is they do not know where to get started. There’s clearly a blind spot in current web frameworks. Javascript is the dominant programming language for web development. Many great frameworks are Javascript based. However, most engineers of non-software domains are not interested in learning it.
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.
Being impressed by Retool’s magic that simplifies app development, I introduced it to Intel. After several months, my team and I decided to end the trial. Using Retool required substantial JavaScript experience, but we were more comfortable with Python. Then, I tried Streamlit. It’s straightforward and easy to start. I was able to build simple web tools that look pretty. But the issue is that Streamlit re-runs the entire script every time a user input is changed. It makes apps slow, and hard to customize to support flexible script execution flows.
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!
Interested in sponsoring the newsletter or know of any cool projects or interesting developers you want us to interview? Reach out at console.substack@gmail.com or mention us @ConsoleWeekly!
Helin's recommendation to follow a composer reminds me of how music helped in a separate domain. The production manager of a manufacturing company I was working at asked me for details on how things worked in the community band I played in. Specifically, he wanted to know the role of the conductor and how we all managed to work together to get things to work. He was completely non-musical, so I drew some parallels with the lean manufacturing courses were taking. Long story short(er), that led to explorations of training, individual practice, group rehearsals, and the critical role of both tempo and the need to attend closely to what's happening elsewhere in the group. The result was twofold. First, the band got a new fan :) Second, he and the rest of the team got a new way of thinking about production activities and that led to the discovery of other analogies from a variety of fields. Having a much larger vocabulary to share and discuss concepts across all levels of the team meant better communication and quicker results.