Something that seems to always be missing from project pages like this: why? There are plenty of other similar projects that accomplish this, and in the case of the microbit, I can’t even tell the difference between your IDE and the one that comes with it. I don’t mean this in a critical way–I literally mean, “tell me why you. Hilt this. What’s better or at least different about your project? Why might I want to use this instead of the others?”
Actually, there are no similar projects that I can tell of. MakeCode, the "one that comes with the micro:bit", as you say, is not a live language and only works for a couple of boards. It's not even a language, it's a façade for an underlying text language.
To sum up what's different about MicroBlocks:
* It is blocks based.
* It is live. That means you can change scripts in real time while they're running. You can see the result of running any block in real time. You don't have to wait for any compilation/upload cycles.
* It is autonomous. You can disconnect the board at any point, and the program will keep running in it.
* It is parallel. You can run multiple tasks at the same time.
* It is portable. It runs in several boards thanks to our VM approach.
There was no language that did all these, so we made our own :)
"Similar" in terms of the job-to-be-done I had in mind—a Scratch-like interface for programming most if not all of the boards mentioned. These features you've outlined did not jump out at me at all on first glance, which is a shame!
I somehow totally missed the live aspect. That's super exciting (and impressive). And parallel!?!? A WYSIWYG parallel code editor for microcontrollers? How is that not the headline?
I'm glad I asked! This is quite interesting to me now. Thanks for your reply!
Yes, I totally agree that the website needs to make the important aspects apparent right away :)
We've been basically focused on finalizing the last details before launching beta, but reworking the website is on our list of urgent tasks, possibly even before the launch, who knows!
Excellent summary. The "oh wow this feels different" aspect of MicroBlocks comes after you try it. It makes programming microcontrollers as interactive and hands-on as building electrical circuits from discrete components. Your changes are immediate. And the live data graphing from sensors feels like a graphic voltmeter or oscilloscope. For physical computing it's simply the best learning tool I've ever encountered (note I'm an EE major, not CS). All those "real" programming languages now fall short in my view. I'm hooked.
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?
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
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.
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 ;)
Hi Avi! Let me first say that my final project at university was about Seaside, and that project landed me a Smalltalk job that marked the beginning of my professional life as a developer. I can't thank you enough!
Regarding Teensy boards, it would have to be version >3.0, because MicroBlocks uses 32 bit instructions and needs at least 16kb of RAM. The Teensy 3.0 just about meets the requirements, and 3.1 exceeds them comfortably.
We don't yet support any M4 MCUs, but we do support a couple of M0s, so I think porting the VM to the Teensy should be fairly easy. I don't currently have one, but I see they're cheap, so I'm going to order one and try to find some time to work on the port :)
If you'd like to, we can continue the discussion over email at interest (at) microblocks (dot) fun.
I'm one of the project devs. Feel free to AMA :)