I've never really understood the desire to have high level programming environments for the micro:bit - blocks and such. I've nothing against those sorts of environments themselves. My son has hugely enjoyed Scratch and I think it has been educational for him. I just think it's missing out on what makes micro:bit awesome.<p>With a high level programming environment a Micro:bit is just a very limited, cheap bit of hardware you can do a few fun things with. There's novelty to it but it can do much less than the desktop computer you use to program it.<p>But the Micro:bit is an absolutely genius bit of kit for exploring <i>low level</i> programming!<p>AIUI, the Micro:bit has 2 microcontrollers on it, not one. The one you program is actually the less powerful of the two. The second microcontroller, which you can't program, is there to control the USB port, implement mass storage and feed anything you put there to the programmable microcontroller.<p>This means you have an extremely simple RISC chip, with extremely simple hardware (leds, beepers and stuff) attached that you can control, and you can program it in assembler or C just by copying files to USB mass storage.<p>I haven't started with this yet, but when he's ready I plan to explore this in detail with my son. It seems like a perfect opportunity to explore how computers actually work and how software and hardware interact, without the huge complexity of more powerful hardware.<p>I mean, this should be educational for <i>me</i>!<p>This book looks like a potential starting point (not published yet, though): <a href="https://spivey.oriel.ox.ac.uk/baremetal/Bare_Metal_micro:bit" rel="nofollow">https://spivey.oriel.ox.ac.uk/baremetal/Bare_Metal_micro:bit</a>