Well, it's been a decade I make a casual blog post on any blogging platform 😂. This post is not about my personal life or lifestyle, just an update about what am I doing related to tech and programming. Currently, I'm AFK from yesterday to Tuesday.
It's been a 3 month I play around about WebAssembly and others things related to that. My intention all along creating tutorials and development update on utopian-io and Steem is to find a sweet spot between web and embedded development because the IoT industry really needs that. There is a hidden motivation why I do that (besides money 😂). In a country where I live, there is many talented people/student in Vocational/Pre-Profesional High School, Polytechnic, and Associate Degree. They are really innovative and fast when it comes to inventing&prototyping something. However, mostly it doesn't scale. What I mean scale in this context is the ability to add many improvements easily (without frictions) when other people join the project. If you are familiar with the current state-of-art of web development, you probably know what I mean. I also do Data Scientist job a long time ago (in the era of python2.7 pre-deprecation) and we can still do well when onboarding new developer and it's pretty superb when he had experience building backend API or E2E test before, it saves us a lot of time. Base on this experience I have a conclusion that programming language that pretty excel & popular in the specific area has this kind of characteristics:
- Specific (either by design or just community niche) yet can be used as a general-purpose programming.
- Can be used to do web development easily. Even it only can be used for backend.
- Have a strong community, clear roadmap & RFC, and provide a way/bridge to use in-draft/MVP feature.
Base on those criteria, I found this 3 language pretty excel on 3 different domain:
- Python: suitable for Data Analysis and Machine Learning
- Rust: suitable for Embedded and System Development
And if we relate that to IoT then we get that this 3 language can be a foundation to build IoT solution faster yet easy to scale. You may want to read Defning IoT Business Models by Canonical, they address the problem pretty well.
So why WebAssembly? Well, I just got an idea to use WebAssembly as a layer to simulate hardware component like servo motor and LED in a real context. I can make HAL (Hardware Abstraction Layer) that target wasm32 then make a driver (in Arduino they call it Library) using wasm HAL and embedded HAL. This way whenever someone uses that driver/library, the firmware can run in the real environment (microcontroller) or simulated environment (web). Also I found out that WebAssembly can be used as a TEE (Trusted Execution Environmenf) which can facilitate OTA (Over the Air) update. Now the homework that I need to do is to find where Python can take a role 🤔. How to streamline the Data Scientist works with Embedded System? (and of course with less friction 🤔)
Thanks to by lurking on Steem and participating in Byteball Ideathon, I got an idea about OpenTestbed which rewards the testbed provider. This could enhance the quality of many Open Source driver, embedded library, or embedded-app/firmware out there 🎉