https://archive.org/details/akkartik-2min-2020-06-07
The code is terribly ugly, and there are zero tests. But it did help flush out three bugs in Mu. Next steps:
- Build out the compiler checks I missed the most.
- Implement a fake screen and keyboard so I can write tests for this app.
- Throw the app away and redo it right.
(Background. Repo.)
Alice in Wonderland by Lewis Carroll
Poems by e e cummings (https://en.wikipedia.org/wiki/E._E._Cummings)
A text-mode paginator for text files. Think `more`, but no ncurses, no termbox, no libc, just Linux syscalls.
2-minute demo video:
https://archive.org/details/akkartik-2min-2020-05-29
Today I built a program to print a file to screen:
http://akkartik.github.io/mu/html/linux/apps/print-file.mu.html
Also:
- I fixed a bug in the process
- I wished I already had clobbered-variable warnings.
- I wished I had type checks.
All in all, this language isn't ready for others yet. I'm constantly inspecting the code generated by the translator.
Wired: the Game of Life is just a glider's way of getting around.
Inspired: the rules of Conway's Game of Life are just the square root of a glider's way to achieve a 90°-rotation-then-flip.
Mu is a safe language built in machine code, translating almost 1:1 to machine code. A key check is for use-after-free errors, using a second address type ("Bicycles for the mind have to be see-through", section 4.4)
I spent the last 2 months switching all of Mu's implementation to this scheme. It was a tough time. But now I know it works (with 10-15% slowdown), and Mu functions calling low-level libraries should behave unsurprisingly.
https://github.com/akkartik/mu
https://www.infoq.com/presentations/power-144-chip
I watched it today at 1.5x, and it still took me 2 hours to watch. I had to pause every couple of seconds to digest what I'd just heard. Fascinating.
Forth chips focus on power, and therefore tiny memories. It's a powerful justification for remaining in the nostalgic console aesthetic of the 80s.
My editor shows signs on the margins to indicate changes since last commit. I wanted it to show diffs from an arbitrary commit.
This feature request had been understandably refused a year ago: https://github.com/mhinz/vim-signify/issues/232
So I fixed it for myself, in 3 easy steps:
- Find a simpler version: 1650 => 900 lines.
- Delete even more code: -600 lines.
- Add the feature: +2 lines.
The final result only works for me. I believe we should share raw VimScript, not packages.