
MicroBlocks: Scratch and Smalltalk-inspired MCU VM for live embedded programming - jarmitage
http://microblocks.fun/
======
jarmitage
Make Zine article: [https://makezine.com/2020/07/31/microcontrollers-meet-
microb...](https://makezine.com/2020/07/31/microcontrollers-meet-microblocks/)

Podcast: [https://kidslab.dev/2020/08/03/microblocks-with-bernat-
romag...](https://kidslab.dev/2020/08/03/microblocks-with-bernat-romagosa/)

May 2020 keynote from John Maloney:
[https://www.youtube.com/watch?v=Iq4fOv64CfQ](https://www.youtube.com/watch?v=Iq4fOv64CfQ)

------
dTal
Disclaimer: I do not intend the following as a criticism.

Can somebody explain why these Scratch-like GUI programming efforts always
seem to invent their own language? Why not build ASTs of a "real language"
with such a system, and take advantage of its ecosystem? Is there some reason
why implementing drag-and-drop blocks is, at the very least, synergistic with
building an entirely new VM? It seems to me that you should be able to build
Lisp or Python very easily, and hence bridge the gap to "real programming".

~~~
mike_ivanov
Maybe because the VM needs to run on rather limited hardware, not capable of
running any of those "real" languages -- that might be the reasoning behind
it. On the other hand, ESP32 and similar boards can run not only Lua and
JavaScript, but even ClojureScript, so it depends on where you draw the line.

~~~
monocasa
You can run those language on very small devices. MicroPython works great on
the micro:bit for instance, which only has 16k of RAM. An Arduino might be
pushing it though with 2k of RAM. Lisp was originally run on a system that had
4K 36bit words of memory for RAM, but no ROM (the IBM 704).

There's a pretty long history of virtual machines on small memory systems,
going back to the days of BASIC and SWEET16. They can actually make better use
of memory in some cases, with the VM byte code sort of being a compression
technique versus native code.

[https://en.wikipedia.org/wiki/SWEET16](https://en.wikipedia.org/wiki/SWEET16)

------
bromagosa
Glad to see MicroBlocks on the front page of HN!

I'm one of the project devs. Feel free to AMA :)

~~~
vanderZwan
I love Scratch-like programming environments _in principle_ and as an
introduction to programming, but dragging blocks with the mouse is tedious. Do
has anyone ever tried to design a keyboard-based input scheme that still works
in this graphical environment?

~~~
bromagosa
In Snap!, GP and MicroBlocks there's a pretty powerful keyboard interface to
assemble blocks. I use it all the time instead of dragging blocks. Check out
page 115 of the Snap! reference manual here:
[https://snap.berkeley.edu/snap/help/SnapManual.pdf](https://snap.berkeley.edu/snap/help/SnapManual.pdf)

Jens Mönig implemented keyboard input for both GP and Snap!, so the same
hotkeys will work on both. Since we're using GP for the MicroBlocks GUI, the
same will also work on MicroBlocks.

~~~
vanderZwan
Thanks, that looks exactly like what I was missing! Will try that out sometime
soon! In my defense, _" page 115 of a pdf file"_ is not typically indexed by
search engines afaik ;)

~~~
bromagosa
Yup, totally. Power feature discoverability is not where we shine... :p

------
chriswarbo
Very nice. Reminds me of Physical EToys
[https://en.wikipedia.org/wiki/Physical_Etoys](https://en.wikipedia.org/wiki/Physical_Etoys)

------
vmchale
born to click

