Before:
After:
This screenshot shows a greyscale image dithered using just black and white pixels.
Before:
After:
I rather suspect this isn't quite right. There are some suspicious streaks in various places. Rounding error, maybe.
Credit: https://tannerhelland.com/2012/12/28/dithering-eleven-algorithms-source-code.html. I'm using standard Floyd-Steinberg.
Main project page: https://github.com/akkartik/mu
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.
https://archive.org/details/akkartik-mu-2021-06-23 (video; 8 minutes)
Main project page: https://github.com/akkartik/mu
If anybody is into long and rambling 100-minute videos that taper off without a certain conclusion:
https://archive.org/details/2021-06-02-akkartik-sumeet
Mostly by Sumeet Agarwal
Here's the working solution if anyone wants to try it out it: http://akkartik.github.io/mu/html/linux/advent2017/1a.mu.html
Main project page: https://github.com/akkartik/mu
I started programming (in undergrad) on an IBM PC descendant running DOS. I moved on to more sophisticated systems, but over a period of decades keep returning to seemingly little things about that first system that I could never replicate. Little things I turn out to be willing to give up big things for.
For others, it was some game console. NES, GBA, etc. I wonder how common it is to actually escape the gravitational pull of our first systems, how much of the differences between our projects stems from having our brains colonized by different first systems.
https://archive.org/details/akkartik-mu-2021-06-09 (video; 6 minutes)
Main project page: https://github.com/akkartik/mu
https://archive.org/details/akkartik-mu-2021-05-31 (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: https://github.com/akkartik/mu
Now I'm back to my long-term plan: a prototyping environment that nudges people to write tests, so that it's easier to throw away the prototype and rewrite it from scratch. Making codebases rewrite-friendly.
Main project page: https://github.com/akkartik/mu
https://archive.org/details/akkartik-mu-2021-05-17 (video; 3.5 minutes)
Putting more animation and control of time into the debugging experience.
More info on Hest: https://ivanish.ca/hest-podcast
Main project page for Mu: https://github.com/akkartik/mu
I was just reminded of the existence of an idea called double-buffering.
The current implementation is quite naive. Copies one byte at a time, makes several redundant copies per byte. In spite of all that, it makes a huge difference in video quality.