-- Leo's gemini proxy

-- Connecting to gemlog.blue:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

9binary, slow computing and the nibble dice


Everything started about a year ago while I was trying to make a pixel art drawing toy. The idea was simple, you have some cubes widh different colors in its sides and arrange them over a grid to draw. The problem with this obvious solution was that to make a draw as simple as the minecraft creeper face, 64 cubes where needed. That was too much wood and craft for not so much drawing fun. Enough to drop the idea forever or jump into the rabbit hole and take the challenge: "How to radically increase the drawing fun density per cube to make it worth the material and work needed?"


After a few days with my ability to do anything but thinking about cubes and pixels absolutelly damaged (I'm not so smart, you'll see) something emerged. It is posible to fit in a single cube, using its 6 faces plus some rotations, every posible 4 pixels draw. "Wow! That's 4 times more drawing fun per cube" I thought "...no, wait how many draws can it express? Lets count em...". If you know even the most basic binary math there's no surprise in here for you (sorry). 16 possible draws per cube it is. "16 sounds like a preety computer-y number. You can even count to 16 with hexadecimal digits."


+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +
|      |      | ●    |      |    ● |      |      |      |
|      | 0    |      | 1    |      | 2    |    ● | 3    |
+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +
|      |      | ●  ● |      |    ● |      |      |      |
| ●    | 4    |      | 5    |    ● | 6    | ●  ● | 7    |
+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +
| ●    |      | ●    |      |    ● |      | ●  ● |      |
| ●    | 8    |    ● | 9    | ●    | a    |    ● | b    |
+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +
|    ● |      | ●    |      | ●  ● |      | ●  ● |      |
| ●  ● | c    | ●  ● | d    | ●    | e    | ●  ● | f    |
+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +

*First (wrong) encoding table with arbitrary matched draws and hexadecimal digits*


                    _  _
                  + -  - +
                | |      | |
                | | ●    | |
           + -  - + -  - + -  - + -  - +
           |      | ●  ● |    ● |      | |
           | ●  ● | ●  ● | ●    |      | |
           + -  - + -  - + -  - + -  - +
                | |    ● | |
                | | ●  ● | |
                  + -  - +

*9binary (Nibble) dice template*


Since I knew nothing about hexadecimal numbers it was time to, at least, read the Wikipedia entry.


> Hexadecimal numerals are widely used by computer system designers and programmers because they provide a human-friendly representation of binary-coded values.


Hexadecimal on Wikipedia


By that moment the fediverse was in fire with the plan9 obsession season and my todo looked like this:


learn plan9 c

code something cool in it

name it 9<something>


Many man <library> later I had an awfully implemented working prototype that my kids loved and named it (you gessed) 9binary.


              + -  - + -  - + -  - + -  - +
              |      |      |      |      |
              |    ● | ●  ● |      | ●    |
              + -  - + -  - + -  - + -  - +
              |    ● |    ● |    ● |      |
              |      |    ● | ●    |      |
              + -  - + -  - + -  - + -  - +
              |    ● | ●  ● |    ● |      |
              |    ● |    ● |    ● |      |
              + -  - + -  - + -  - + -  - +
              |    ● | ●  ● | ●  ● | ●    |
              |      |      |      |      |
              + -  - + -  - + -  - + -  - +

*9binary logo based on the beautyfull bit font by simplifyer*

*You can encode it as 230146506e604cc8 (little endian)*


I did not published the code yet for two reasons. As I said it is still awfull, and the encodding is based on the first arbitrary table above.


Few days ago I (finally) fully realized that it was about bits and nibbles all the time - feel free to express your facepalm reaction, I'll wait here - that's why it felt computer-y.


The 9binary dice, with a proper encodding table, can be used as a nibble dice. This opens a lot of posibilities around slow computing that exceds 9binary as a toy.


+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +
|      |      |      |      |      |      |      |      |
|      | 0    | ●    | 1    |    ● | 2    | ●  ● | 3    |
+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +
|    ● |      |    ● |      |    ● |      |    ● |      |
|      | 4    | ●    | 5    |    ● | 6    | ●  ● | 7    |
+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +
| ●    |      | ●    |      | ●    |      | ●    |      |
|      | 8    | ●    | 9    |    ● | a    | ●  ● | b    |
+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +
| ●  ● |      | ●  ● |      | ●  ● |      | ●  ● |      |
|      | c    | ●    | d    |    ● | e    | ●  ● | f    |
+ -  - + -  - + -  - + -  - + -  - + -  - + -  - + -  - +

*New (fixed) encoding table, little endian counter clockwise*


The 9binary toy it's preety simple. You have 16 nibble dices and a 16 slots grid to draw in arranging the dices. This allows to encode / decode drawings into 8 bytes representations of hexadecimal digits. It can be virtual or not; made of wood, paper or anything. You can even craft one in minutes by printing and folding 16 times the nibble dice template above. I have a huge roadmap / wishlist for the project including cli, gemmini cgi, plan9 filesystem. It seems that 9binary allready became my default excuse for computing exploration and it's going to be lots of fun. But what excites me the most is the nibble dice, its possibilities and what other people will come up with in the future.


That's all. I hope this makes any sense for you. Leave you in company of my test subject. Have a nice day.


              + -  - + -  - + -  - + -  - +
              |      |      |      |      |
              |      |      |      |      |
              + -  - + -  - + -  - + -  - +
              |    ● | ●    |    ● | ●    |
              |    ● | ●    |    ● | ●    |
              + -  - + -  - + -  - + -  - +
              |      |    ● | ●    |      |
              |      | ●  ● | ●  ● |      |
              + -  - + -  - + -  - + -  - +
              |      | ●    |    ● |      |
              |      |      |      |      |
              + -  - + -  - + -  - + -  - +

*The creeper face in sixteen cubes*

*You can encode it as 0000696907b00840 (little endian)*


-- Response ended

-- Page fetched on Sat Apr 27 00:14:10 2024