Think of it as a runtime + scheduler that you deploy programs to ESP32 devices. It gives you the ability to run multiple programs simultaneously (with isolation) and remote updates. The language compiles to bytecode; the developers have lots of experience writing VMs for constrained devices; see https://www.theregister.com/software/2004/07/27/forgotten-la... for something that predates V8 and Dart.
Thanks! This should be on the homepage IMO instead of the AI slop (or human slop? not sure) that's there now.
This looks super useful actually, I worked in embedded systems in the past and the choice was either go with a microcontroller and have like no features, or do a full Linux and have (much more expensive hardware and) half the team distracted by doing proper linux app development and networking and all that stuff that comes with it. Often we chose plain C microcontroller simply so the team wouldn't go overboard designing a multi-node distributed system when all we needed was control a couple sensors and actuators, but it lacked exactly what you describe, concurrently running multiple things and easy updates. Ok, and printf, which I'm going to blatantly assume is covered here as well.
We looked at these when we started. The problem with them is that they weren't designed with constrained resources in mind and it shows. For example, objects are hash tables and method calls are thus expensive. An obligatory top level execution makes startup slow, ...
If you have a bigger machine you can optimize some of this (V8), but these optimizations typically need memory and/or a JIT. (And Python struggles to optimize even on stronger machines).
By starting from scratch (with what we learned from V8 and Dart) you can design something that feels similar but is much cleaner and faster to run.
Those requirements are at odds with each other though. If you want to get the most out of MCU hardware you typically use C/C++/Rust, either as a whole or via a custom build of MicroPython/NodeMCU/Espruino. MicroPython has some interesting options for high performance code that you (optionally) run on your PC before deployment.
Besides that, there are other languages that have similar characteristics. Wren (https://wren.io/) is pretty nice but doesn't have type annotations or explicitly target embedded.
I had to upgrade from an M1 Pro with 16 GB to an M4 Pro with 24 GB last year because one of my work projects at the time needed multiple docker instances, and 16 GB wasn't enough. This year 24 GB isn't enough for a few AI models, but there's no budget for an upgrade...
My home "servers" don't do much but 8 GB or 16 GB of RAM is enough them, for now (Linux).
There's a button next to "gyro" labeled "hands." Click on it, and the browser will ask for the camera permission. For me (Chrome, mac), I had to click on the "cal" button next to it the first time to actually switch to the camera.
There was a building hit near the data center on the first day of the war and that took down one AZ (unfortunately, two of my three EC2 instances were in that AZ). The hit on April 1 pretty much took it all down. Fortunately I had relatively up-to-date backups (both within 24 hours before each outage) so all I lost was a little email (spam) and some libera chat logs. I've moved to ap-southeast-1, which means trading a ~ 60ms ping to ~ 110ms.
reply