This is a small artwork, painted in black and white on a geometric structure, which encodes birthday greetings.
The first point to make here, is that there is a difference between a code and a cypher (cipher)
Cyphers are designed to keep information secret from anyone but the intended recipient.
Codes are designed to hold information so that it can be retrieved. Think of Morse _Code_.
But since English is a very lazy language, the phrase "coded message" has come into common usage to mean a secret.
This 'Ible was inspired by seeing a pile of offcuts from a previous project and wanting to do something with them. After a bit of thought, the idea of making an artwork which doubles as a birthday card was arrived at. By implementing a classic code (8-bit ASCII) I used 128 small wooden triangles glued to a board to spell out "Happy Birthday ".
Each triangle was oriented according to whether the relevant bit of the message was a one or a zero, and then they were painted according to their value. This gave an intriguingly textured piece which changes shape and shade as you walk past it, and should last much longer than the average birthday card.
As well as 128 small wooden triangles, I used a suitable square of scrap plywood for the back, glue, cramps, sandpaper, primer, paint and standard picture-hanging hardware. Exact details of what was used are given in the relevant step.
Step 1: Design the Message
Having made vast quantities of jam for presents, and vast numbers of cases to present them, I was left with vast numbers of offcuts.
Cutting an angle from the corner of the boards used for the cases (first picture) left an awful lot of tiny pieces of wood (second picture). I could have used those for kindling a fire, but it's summer here, so I decided to use them more constructively.
The fact that I had 128 small triangles immediately made me think of 8-bit computers from the 1980s, so I worked out that I could make sixteen 8-bit letters. "Happy" and "Birthday" come to thirteen, but fortunately I knew someone with a three-letter name. If you do not, then you will need to cut more triangles. Or make friends with someone whose name is three letters long.
The triangles were originally a by-product, rather than being cut specifically for this project, and so there was some variation in their sizes. To make this less obvious, I sorted all 128 pieces by size and lined them up from largest to smallest. Just for giggles, I used the largest triangles for the Most Significant Bit (geddit) and the smallest for the LSB.
At this point in the procedure I noticed that a few of the triangles were badly damaged or split, so I used some small scrap pieces of the same ply to cut four extra triangles.
To encode the message, I used the ASCII table here. Can't do it in my head anymore :-(
I wrote the message in a file which is attached above. If your friend has a different name, then you will need to go back to the Wiki page and build the bit pattern yourself. Or send me a DM and I'll give you a hand.
I wrote the message with one letter on each line, and then the eight bits of the ASCII character. I then rotated the information into a sixteen column table with each letter at the top and then the column below that holding the relevant bits. This was kept by my side the whole time I was building and was essential for ensuring that the bits were in the right place.
To give an example of the first letter, in ASCII 'H' = 0100 1000.
Step 2: Glue the Bits Together
Since the message is sixteen characters long, I oriented the piece such that the bytes were written vertically. This produced a square piece, while rotating the bits would have made something much longer and narrower. This meant that the first bits of each word were beside each other, which meant that the nth bits of each word could be glued into a block which could then be attached to the base.
After trying both ways, I decided that having the "0" being a downward sloping triangle, and the "1" and upward sloping one gave the better look.
In ASCII, the common letters are all in the second quartile of the space, so all of the MSBs were zero, and all of the second bits were 1. That simplified the early stages of the glue-up as seen in the third and fourth photographs above.
Since the words were going to be separated by a physical space (I didn't have enough triangles to put an ASCII "" in there) I glued the five MSBs from "Happy" (all "0"s) together, then the eight from "Birthday" and then the three for the name. These three blocks were carefully put into a cramp and left to cure under pressure. Since the joining surfaces are so small, it is important to monitor while clamping to prevent any lateral movement.
Once we were down into the interesting parts of the data space, it got slightly more comlex. Instead of covering all of the sides of the triangles with glue, only those areas which would be in contact with their neighbour were glued. This meant that whenever there was a bit transition, only about half of the surface had to be glued, and the rest left clear. This needed some delicate work with a fingertip and a rag to make sure that only the right bits were glued.
The leftmost triangle in the block of five represents the relevant bit of the leftmost letter, here 'H' (0100 1000).
Step 3: Glue Bits to Board
Once the blocks were cured, they were removed from the clamps and checked. The surface which was to be on the bottom was sanded flat using quite coarse paper (40 and 80 grit) to give a good flat surface for gluing.
Once the blocks were sanded, I did a trial layout on a piece of scrap plywood. Having marked an inch in from the edge (photo 5), it looked OK, so I marked and cut that, and then sanded the surface and chamfered the edges with a small plane.
Since I wasn't completely sure of the sizings, I laid 1"(25mm) masking tape around the edge of the board as a guide, and then glued the eight blocks for the first word, "Happy", onto the board. This required some invention to apply a weight while the glue cured, but it worked out OK.
Once that had cured, I applied the name to the right hand side of the board, and once that had cured I eyeballed the location to put "Birthday" in the middle.
The result is the interesting shape shown in the first photograph above.
You can just make out that the leftmost column on the board consists of a downward sloping triangle, then upward, then two downwards, then one upwards and finally three downwards. = 0100 1000 = 'H'. Yay! We got it right!
Step 4: Painting
Since this was going to be painted front and back, I wanted to be able to paint all sides at one time, so I worked out where the hangers would be on the back of the finished item, and drove three long woodscrews a quarter of an inch (6mm) into the board. This would let me paint the back, then turn the item over touching only the screws and paint the front. The whole wet mess could then stand on the screws while the paint dried, with nothing touching the bench.
As the shape was so involved, I used spray paint. A primer was used to give two coats, and then a matt white was applied for three coats.
Once that had all dried, I took a tiny paintbrush and a tin of matt black and painted all of the "0"s black. This was unbelievably fiddly, but fortunately a single coat was good enough.
Step 5: Finishing
Once everything had dried, I removed the screws which had served for painting and used some pan-head 8mm #6 screws to fasten the hangers to the back.
As in a previous project, because I only had single-strand picture wire, I ran a bead of solder over the join once I had twisted it together.
A lot of what I like about this piece is the way that the angles play with the ambient light, so I put a third screw in the back of the piece (at the bottom). This was much longer at 15mm (5/8"?) and can be adjusted. It is intended to allow the finished piece to sit precisely parallel with the wall on which it is hung.
Step 6: Mistakes and Lessons
If you cannot read binary in your head, then do not rush this project. Every time you are about to glue something, refer to your chart and make sure that it (and every bit in it) is in the correct orientation. I did not make any mistakes on that, but I did worry about it constantly.
The hanging hardware isn't idea. There must be a better way to hang something on a wall exactly flat.
The flat white looks good, but touch-ups were needlessly difficult as I could not get hold of non-aerosol matt white. Next time, I might use a semi-gloss for the white so that I can touch up, or might even use a brush to apply the white.
The piece looks very striking, but the monochrome nature of it means that whether it is photographed with flash or ambient makes a huge difference to how it looks.
Having cut four of the triangles by hand, I am never doing this again unless I make a similar pile of bits as a by-product. The principle of physical shape and colour to encode ASCII is interesting though, and it could be done using a grid of holes, or perhaps with short sticks (of two different lengths) cut from doweling. If you ever find yourself with hundreds of identical tiny offcuts when making a project, have a think about whether you could do this. You could also try doing it using Morse Code or even Braille for a blind friend.
When (not if) you put glue on the wrong bit and realise in time before clamping, wipe as much as you can off, and put a shim cut from a plastic bottle into the glue up to prevent words sticking together.
Thanks for reading this far, and if you produce some ultra-low-density binary information, do share it.