Some live-coding in my programming environment, running on my computing stack built up from scratch. (video; 6 minutes)

Main project page:

Show thread

Managing side-effects on the Mu computer (video; 2 minutes)

The Mu computer's prototyping environment uses _traces_ to explain and debug programs. But traces are expensive to compute and made the environment slow and laggy.

I fixed things by collecting only a shallow trace at first, and iteratively deepening on demand by rerunning programs. This only works because it's safe to rerun functions. There are no side-effects in Mu.

Main project page:

Show thread

Using Mu to play with some ideas from Hest by Ivan Reese (video; 3.5 minutes)

Putting more animation and control of time into the debugging experience.

More info on Hest:

Main project page for Mu:

Show thread

@neauoire Have you done anything with curves yet with ?

git clone
cd mu
qemu-system-i386 disk.img

Use the Tab key to cycle the cursor (a hard-to-see green square) between the 3 control points (circles), arrow keys to move the control point at the cursor. Watch the curve (red) adjust in response.

The Mu computer now dumps a snapshot of the call stack when it fails catastrophically

This was not fun. And the debug information in the second half of the code disk is now larger than the code itself.

On the other hand, I hope debugging will now be more fun!

Show thread

Zooming into the Mandelbrot set on the Mu computer

Apologies for the garish colors. Still a work in progress.

I recorded this on a Mac then sped it up 8x. I estimate that makes it 3x slower than my Linux computer accelerated with KVM.


Main project page:

Playing with the kids on a Saturday morning

(Much faster on Linux, thanks to -enable-kvm.)

git clone

cd mu

dd if=/dev/zero of=data.img count=20160

dd of=data.img conv=notrunc < shell/data.limg

./translate shell/*.mu # gen code.img

qemu-system-i386 -enable-kvm -m 2G -hda code.img -hdb data.img

Show thread

The Mu computer now has Lisp macros

Here's the Bresenham algorithm for drawing circles using a few macros. My current style is to keep line width to 41 characters and lay out two columns of functions.

* No nested backquotes yet.
* I can't draw circles too far down the screen due to a strange error.
* In general, error messages have been a mess ever since I stopped relying on Linux. A heavy exercise in humility.

Main project page:

Show thread

I suck at colors. Anybody wanna help me paint this bikeshed for the mind?

Constraint: I only have 256 colors.

Show thread

Prototyping on the Mu computer

A 3-minute video showing what it's currently like to prototype programs on the Mu computer. There are lots of limitations. It's slow, and it can only handle short runs.

While these limitations will be relaxed over time, the goal is partly to nudge people to throw the prototype away once they know what they want, and rewrite it one level down. Therefore: encourage people to write lots of tests.

Main project page:

Show thread

The bug wasn't in Mu or in Bresenham. I just typoed when I edited the disk image 😂

Still lots of catastrophic bugs that require editing the disk image. The disk is clobbered on reboot because I added support for reading multiple sectors from disk but still only write one sector.

Show thread

Writing code _within_ the Mu computer

I tried and failed to implement Bresenham's line algo. Horizontal and vertical lines work.

No macros => lots of lambdas.

The computer keeps crashing because I type too fast (still can't brain interrupt handlers). It frequently saves to disk, but as an s-expression. Reboots lose indentation.

Ok, edit on host -> create disk image.

I have lots of little buffers. When they overflow the computer crashes. Without a call stack.

Thanks @tekknolagi for pairing!

Show thread

Mu's HLL is now Turing-complete, I think.

Things to notice:
* Wordstar-style menu at the bottom.
* List of available primitive functions in bottom left.
* List of globals on the left side that updates as I add definitions.
* Matching parens highlighted as I type.
* Drilling down into the trace to understand how the program was evaluated.

Main project page:

Show thread

The Mu computer now has drivers for disk and mouse.

Still extremely klunky. IDE disk drives only, and the mouse driver uses polling because configuring IRQ 12 is still beyond me.

Example programs (as usual memory safe and translating 1:1 to x86 machine code)



Here's video of the mouse example. There's no pointer so you have to imagine me moving the mouse around.

Like I said. Klunky.

Main project page:

Show thread

Drilling into computations on the Mu shell

This was one of the more difficult things I've built, and yet all I've gotten working so far is some rudimentary tokenization. The reason is one little feature.. well, take a look for yourself. (video; 2 mins)

As always, built all the way up from machine code, and designed primarily to be easy to build, easy to run, comprehensible to others. Also this time with lots of tests

Show thread
Show older

Merveilles is a community project aimed at the establishment of new ways of speaking, seeing and organizing information — A culture that seeks augmentation through the arts of engineering and design. A warm welcome to any like-minded people who feel these ideals resonate with them.