Introduction: Encode a Message in Roctal, Octal That Rocks

About: I'm an applied physicist by training(phd Yale 2006, BA Berkeley 1998, math and physics), and have done physics research in the federal government and product development in the private sector, starting two of …

Roctal, or octal that rocks \m/ is a way of encoding information to have as large as possible cross section between being human readable and being machine readable. By laying out bits in a grid that are just black and white marks of some kind, this should be easy to read by even a very primitive machine, and scalable down to microscopic size. But because it's a simple and small grid made up of familiar patterns, and with space to add annotations, it is also easily human readable.

Here I'm documenting how to encode a character in Roctal. I show how to use this for unbreakable codes without use of digital computers at all in another Instructable. Also I'm using this to create a set of shape codes which can encode various geometric and mechanical constructions, which are how I extend the 7 bit ASCII code to an 8 bit code that includes physical operations. That will also be documented elsewhere.

Step 1: Draw a 3X3 Grid of Squares, Add Alignment and Calibration Mark

Just draw a square and divide it up into a three by three grid of identical squares. Then add one more square identical to the small squares on the UPPER LEFT of the main grid. Color this in with whatever type of marker you will use for data. This serves both to always tell a future user the correct orientation for the squares and also serves to calibrate dark from light by having a square that a machine always knows is full. Since we will only use 8 bits the square in the upper left of the 3X3 grid will always be vacant, so that gives both a empty and full square for any machine to calibrate off, making it easy to program a new machine possibly with a very bad camera to detect this from scratch.

Step 2: Go Make an Octal ASCII Table

I use ALL CAPS in my messages because that is a series of octal numbers starting at 101 which makes them pretty convenient to use. You can find ASCII tables all over the Internet for the 7 bit characters(and I'm making my own use of the 8th bit so ignore those). Because we are only using 26 characters and can't always think in octal it helps to make a table, which is easiest to do if you have some graph paper to write characters in. This is just counting in octal starting at 101 (65 in decimal) then adding a capital letter next to each one in order.

Step 3: Encode Your Message in Octal ASCII

I'm going to start with the trivial message consisting only of the letter "A".

Step 4: Encode the Actual Roctal, Fill in Squares

This image shows how Roctal actually works.

The theory is that the human mind is ok with three digital octal and also three digit binary. Since any octal digit can be represented by a three digit binary number this bridges the gap between the human mind and the machine. Octal digits are written going down the left side, starting with 64s at the top, then 8s in the middle and 1s at the bottom. Each digit is then represented by a binary number written in the usual way binary numbers are written, from left to right, going down from the 4s digit on the far left, the 2s in the middle and the ones on the far right.

A zero is a empty square. A one is a full square. I'm not specifying color or even shape exactly, just relative position. "Filled square" could be any of an infinite number of detectable markings, including physical materials that are useful for machine processing of various kinds. Since we're using the 7 bit ASCII code the upper left and middle upper squares should always be empty here.

That's it! I also show a coding here of the message "ABC". More information can be found at www.pinterest.com/Lafelabs/roctal