Hackiest possible support for rendering Unicode combining characters using GNU Unifont

This is the equivalent of backing up a typewriter by one character and overlaying a second letter on the same space.

Main project page: github.com/akkartik/mu

Show thread

The Mu computer now loads 140KB of Unicode glyphs from its system font

Unicode blocks now supported: latin, greek, cyrillic, armenian, hebrew, arabic, syriac, thaana, n'ko, indian (ISCII), sinhala, thai, lao, tibetan, myanmar, georgian (< U+1100)

Caveats:
- No support for combining characters yet (en.wikipedia.org/wiki/Combinin) This makes the other languages I know (Hindi, Tamil) well-nigh useless.

- Unifont's glyphs for the non-Latin languages I know turn out to be quite spectacularly ugly.

Show thread

A network-less, read-only browser built up from machine code

archive.org/details/akkartik-m (video; 5 minutes; includes instructions to try it out)

A lot gets said about simplicity in software, about essential vs accidental complexity. If you really want a simple stack that empowers everyone, it isn't enough to just eliminate accidental complexity (even if we could all agree on what it is). You need to also avoid _other people's_ essential complexity.

Main project page: github.com/akkartik/mu

Show thread

Images (kinda) and files (kinda) on the Mu computer

The Mu computer has only 256 colors by default, but approximates arbitrary RGB combinations using dithering.

archive.org/details/akkartik-m (video; 9 minutes)

Main project page: github.com/akkartik/mu

Show thread

A little game: guess the result of mixing two colors

Testimonial from 4 year old: this is the best program you've made.

Source: akkartik.github.io/mu/html/app

Main project page: github.com/akkartik/mu

Show thread

Color dithering on the Mu computer.

Here is a before/after pair of images. Before has 256x256x256 colors. After has 256 colors.

Notice all the yellow pixels in the first image that turn into alternating greens and oranges in the second. Also, the stem looks very different. But overall, it looks gratifyingly similar to the original. My eyes took a while before they started to notice differences.

Main project page: github.com/akkartik/mu

Show thread

Generalizing dithering to color (assuming a fixed palette) turns out to be surprisingly complex. The r/g/b channels are mostly independent copies each analogous to the greyscale dither, but there's tangling in one place in the center that complicates everything.

Show thread

Starting to render images on the Mu computer

This screenshot shows a greyscale image dithered using just black and white pixels.

I rather suspect this isn't quite right. There are some suspicious streaks in various places. Rounding error, maybe.

Credit: tannerhelland.com/2012/12/28/d. I'm using standard Floyd-Steinberg.

Main project page: github.com/akkartik/mu

Show thread

Syntax sugar in the Mu shell

I like Lisp. But I also strongly believe anyone should be able to boot into a computer and immediately type in '1+1'. Get started using the computer as just a calculator. It's surprising how few computers satisfy that property. Now the Mu computer does.

archive.org/details/akkartik-m (video; 8 minutes)

Main project page: github.com/akkartik/mu

Show thread

Some live-coding in my programming environment, running on my computing stack built up from scratch.

archive.org/details/akkartik-m (video; 6 minutes)

Main project page: github.com/akkartik/mu

Show thread

Managing side-effects on the Mu computer

archive.org/details/akkartik-m (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: github.com/akkartik/mu

Show thread

Using Mu to play with some ideas from Hest by Ivan Reese

archive.org/details/akkartik-m (video; 3.5 minutes)

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

More info on Hest: ivanish.ca/hest-podcast

Main project page for Mu: github.com/akkartik/mu

Show thread

@neauoire Have you done anything with curves yet with ?

git clone github.com/akkartik/mu
cd mu
./translate ex11.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.

github.com/akkartik/mu/compare

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.

Sources: github.com/akkartik/mu/blob/20

Main project page: github.com/akkartik/mu

Show older
Merveilles

Revel in the marvels of the universe. We are a collective of forward-thinking individuals who strive to better ourselves and our surroundings through constant creation. We express ourselves through music, art, games, and writing. We also put great value in play. A warm welcome to any like-minded people who feel these ideals resonate with them.