I read “The Art of Computer Programming” volumes 1 and 2. Donald Knuth sent me a check for finding a 0x1.2 bugs.
-[](../wp-content/uploads/2023/04/san_serriffe-scaled.jpg)
+[](/wp-content/uploads/2023/04/san_serriffe-scaled.jpg)
I got a snakebite lip piercing.
---
Hello, Linux terminal users! Let me present you a simple feature you’ve all seen, but might not have noticed.
-[](../wp-content/uploads/2024/05/01-mystery.png)
+[](/wp-content/uploads/2024/05/01-mystery.png)
You’re on the terminal, and you open a text editor of chice–nano, vim, emacs, acme etc.
-[](../wp-content/uploads/2024/05/02-mystery.png)
+[](/wp-content/uploads/2024/05/02-mystery.png)
After you edit for a bit, you close the editor.
-[](../wp-content/uploads/2024/05/03-mystery.png)
+[](/wp-content/uploads/2024/05/03-mystery.png)
Now you’re back where you left off. My question is, *how?* How does nano remember what used to be on screen? How does it get restored? Is nano doing this, or bash?
wordpress_id: 101
wordpress_slug: a-pixel-art
---
-[](../wp-content/uploads/2015/01/Screen-Shot-2015-01-13-at-11.12.20-AM.png)
+[](/wp-content/uploads/2015/01/Screen-Shot-2015-01-13-at-11.12.20-AM.png)
I followed the recipe from “[Enjoy a simple life](https://enjoyasimplelife.blogspot.com/2012/01/vegetarian-sticky-rice-banh-chung-chay.html)“, but made a homemade cardboard mold as suggested by “[Takes Two Eggs](https://takestwoeggs.com/banh-chung/)“.
-[](../wp-content/uploads/2024/02/fork-crop.jpg)
+[](/wp-content/uploads/2024/02/fork-crop.jpg)
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2024/02/foil-crop.jpg)
+[](/wp-content/uploads/2024/02/foil-crop.jpg)
-[](../wp-content/uploads/2024/02/leaves-crop.jpg)
+[](/wp-content/uploads/2024/02/leaves-crop.jpg)
-[](../wp-content/uploads/2024/02/unwrapped-crop.jpg)
+[](/wp-content/uploads/2024/02/unwrapped-crop.jpg)
</figure>
---
We made a blast furnace, following David Gingery’s [The Charcoal Foundry](https://www.amazon.com/Charcoal-Foundry-Build-Metal-Working/dp/1878087002). Here are some pictures of the firing process. We haven’t melted or cast any metal yet.
-[](../wp-content/uploads/2017/07/furnace-initial-burn.jpg)
+[](/wp-content/uploads/2017/07/furnace-initial-burn.jpg)
-[](../wp-content/uploads/2017/07/furnace-blast.jpg)
+[](/wp-content/uploads/2017/07/furnace-blast.jpg)
-[](../wp-content/uploads/2017/07/furnace-fan.jpg)
+[](/wp-content/uploads/2017/07/furnace-fan.jpg)
-[](../wp-content/uploads/2017/07/furnace-grill.jpg)
+[](/wp-content/uploads/2017/07/furnace-grill.jpg)
-[](../wp-content/uploads/2017/07/furnace-richard.jpg)
+[](/wp-content/uploads/2017/07/furnace-richard.jpg)
---
More followup for my house blueprint maker. The project is now done.
-[](https://za3k.github.io/ha3k-13-blueprint/)
+[](https://za3k.github.io/ha3k-13-blueprint/)
New features include:
---
I condensed some of card games into one box:
-[](../wp-content/uploads/2023/08/cards_open-scaled.jpg)
+[](/wp-content/uploads/2023/08/cards_open-scaled.jpg)
I’ve noticed that board game boxes tend to be a little big. I combined five into one box:
-[](../wp-content/uploads/2023/08/box_open-scaled.jpg)
+[](/wp-content/uploads/2023/08/box_open-scaled.jpg)
-[](../wp-content/uploads/2023/08/both_closed.jpg)
+[](/wp-content/uploads/2023/08/both_closed.jpg)
---
Our house has seven people, so today I made some mail holders to put on our doors.
-[](../wp-content/uploads/2015/09/cardboard_near0.5.jpg)
+[](/wp-content/uploads/2015/09/cardboard_near0.5.jpg)
I basically had some long cardboard boxes, and cut them in half. Then I added new ends and separators in the middle.
wordpress_id: 313
wordpress_slug: controlling-a-computercraft-turtle-remotely
---
-[](../wp-content/uploads/2015/10/Screen-Shot-2015-10-18-at-7.16.59-PM.png)[](../wp-content/uploads/2015/10/Screen-Shot-2015-10-18-at-7.17.30-PM.png)
+[](/wp-content/uploads/2015/10/Screen-Shot-2015-10-18-at-7.16.59-PM.png)[](/wp-content/uploads/2015/10/Screen-Shot-2015-10-18-at-7.17.30-PM.png)
1. Install Redis: [https://www.digitalocean.com/community/tutorials/how-to-install-and-use-redis](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-redis)
2. Install [Webdis
Note that most of these recipes are from online or printed sources. Some are written by me, family, or friends.
-
+
-
+
-
+
I tore it into quarters in front of their eyes. I wrote on back of the handout pieces “**5**“, “**10**“, “**15**“, “**20**“. *“Make me an investigation check,”* I intoned in my best DM voice. “*I will grant you any pieces under your roll.*“
-[](../wp-content/uploads/2023/07/scraps.jpg)
+[](/wp-content/uploads/2023/07/scraps.jpg)
They got 23, so I gave them all four scraps. They taped it back together and got the whole handout.
The default twitter icon is an egg. There are six available. One is chosen at random for each new user.
<figure class="wp-block-gallery" markdown="1">
-[](../wp-content/uploads/2015/03/default_profile_1_bigger.png) [](../wp-content/uploads/2015/03/default_profile_2_bigger.png) [](../wp-content/uploads/2015/03/default_profile_3_bigger.png) [](../wp-content/uploads/2015/03/default_profile_4_bigger.png) [](../wp-content/uploads/2015/03/default_profile_5_bigger.png) [](../wp-content/uploads/2015/03/default_profile_6_bigger.png)
+[](/wp-content/uploads/2015/03/default_profile_1_bigger.png) [](/wp-content/uploads/2015/03/default_profile_2_bigger.png) [](/wp-content/uploads/2015/03/default_profile_3_bigger.png) [](/wp-content/uploads/2015/03/default_profile_4_bigger.png) [](/wp-content/uploads/2015/03/default_profile_5_bigger.png) [](/wp-content/uploads/2015/03/default_profile_6_bigger.png)
</figure>
Hex colors for the six icons:
Large versions of those icons:
-[](../wp-content/uploads/2015/03/default_profile_1.png) [](../wp-content/uploads/2015/03/default_profile_2.png) [](../wp-content/uploads/2015/03/default_profile_3.png) [](../wp-content/uploads/2015/03/default_profile_4.png) [](../wp-content/uploads/2015/03/default_profile_5.png) [](../wp-content/uploads/2015/03/default_profile_6.png)
+[](/wp-content/uploads/2015/03/default_profile_1.png) [](/wp-content/uploads/2015/03/default_profile_2.png) [](/wp-content/uploads/2015/03/default_profile_3.png) [](/wp-content/uploads/2015/03/default_profile_4.png) [](/wp-content/uploads/2015/03/default_profile_5.png) [](/wp-content/uploads/2015/03/default_profile_6.png)
---
Today’s project was a hard drive carrying case. I wanted something to securely store hard drives. When I looked around on ebay and amazon, I saw some [nice cases](https://www.amazon.com/gp/product/B007OXK0YM/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=za3k-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=B007OXK0YM&linkId=350884a6d81cab8bc2fd02af3ba9ce42) and some crappy plastic molded ones. Even the terrible ones were at least $50, so I made my own.
-[](../wp-content/uploads/2017/07/1.jpg)
+[](/wp-content/uploads/2017/07/1.jpg)
I bought a used ammo case at the rather excellent local army surplus store. Then I padded all sides. I had spare [EVA foam](https://en.wikipedia.org/wiki/Ethylene-vinyl_acetate) “puzzle piece” style mats from a gym setup lying around. I cut out the pieces with scissors. That’s it. I was expecting more steps, but nothing needed glued in place. I was planning on adding inserts for the empty slots, but it seems secure enough. If you’re making one, you could also glue the top onto the lid, so you don’t have to take it out manually.
-[](../wp-content/uploads/2017/07/2.v01.jpg)
+[](/wp-content/uploads/2017/07/2.v01.jpg)
Let’s look inside a commercial keyboard, and see if we can hook up to it:
-[](../wp-content/uploads/2023/06/commercial-scaled.jpg)
+[](/wp-content/uploads/2023/06/commercial-scaled.jpg)
Yikes. What’s going on? Well, let’s make our own little keyboard, and explore what’s going on. We’ll build it in three layers, or “index cards”:
-[](../wp-content/uploads/2023/06/copper_parts-scaled.jpg)
+[](/wp-content/uploads/2023/06/copper_parts-scaled.jpg)
The bottom layer has 6 vertical stripes. The top layer has 3 horizontal stripes. Each place they cross will be a “key” you can press.
This picture might help explain how they will go together:
-[](../wp-content/uploads/2023/06/copper_layers-scaled.jpg)
+[](/wp-content/uploads/2023/06/copper_layers-scaled.jpg)
Now we assemble:
-[](../wp-content/uploads/2023/06/copper_small.gif)
+[](/wp-content/uploads/2023/06/copper_small.gif)
The final keyboard has 6 x 3 = 18 “keys”. We write the hex digits plus a couple extra keys with marker.
If I attach alligator clips to the second horizontal screw terminal, and fourth vertical screw terminals, and wire a battery and buzzer with the terminals, I get a connection beep only when I press the key “A”:
-[](../wp-content/uploads/2023/06/address-scaled.jpg)
+[](/wp-content/uploads/2023/06/address-scaled.jpg)
In a real computer, we obviously can’t just move alligator clips around. Instead, we attach wires to all 9 posts–three outputs wires for the horizontal lines, and six inputs for the vertical lines. We output a signal on the first horizontal line, and see if we can read it from any of the six vertical lines inputs. Then we output a signal on the second horizontal line, and see if we can read it, and so on for the third. Assuming only one key is pressed (or none), we can identify the key. This “scanning” process could be done thousands of times a second, rapidly enough that it can’t miss our slowpoke human fingers.
-[](http://falstad.com/circuit/circuitjs.html?ctz=CQAgjCAMB0l3BWK0AckDMYwE4As3sA2SQgdgCYFsQFIaRd0aBTAWiwCgBncQ8bciEK4Q5XHToQALgCcArs24gi-QWFwixE8CFkKllPjkHpIm8VEt7FPMKSMDRY0Rcm75NhmAeDcwl9rSHkro6D4g6Cjmge76PKF8hhFREWaWQXFeiQh8fiKmIm7WSnbZic4F6bGeSUmVlUXBPCpJ6vlpjZneojlC7YU6xfFh4OQoySKlVUNZo+N54PbTTYtGY06TS501vWDrlVPbSip7422ry11r4-6Hg8EA7rxzytdQHE8n61On708-61a60gHx6bwSLxBTwhv1w3V+UOexleqj+KORP0ciMxglaWNBeJMI2RiJhjjh4URFLBERGSVJdN6tV6iOZRiW9NBUySLRZoN5RjKaP8Wj6qUKXI04vAUtF2NlFnOhwJzm5zjlKuiG2lpLS9TSGuhBosBy2oMimz4FoCaOtoutDVBCymC0NDBFFgWjqetyWHokHAASmL-P50IJtBYkNoYAgODIQyJbnt0vBEcnBL6+PLJimlWaE+dblKsBHwGmgzKk5MpeHLHQo-XkHGnuRVSm25b3gnO2Le6XU-BK72RRUyw26NH69AW9KB6bs-HpWG0gPJBXg5UV-lxwxJ03Y+aUvPjwWJmLrWvy0PNykwyk65H9zGZ06M+6uyCEwt-M6U+ubw-MUvV3RsX1ndg3nhYFQUg1F4XxJ44NaIUQQADxAVhxDoUIkEg0haXmFwQBkAB7B4AB0uC4ABjABDAA7KiAHNmAY5gZDoqRSJkDgACNwCQLARFwFBqFMah0JoEhwFCIRVRGcwQAAa2YABPLgHgASykGiAAsOAw2hBUnY9CCYJSAFsuJkLS0MMzDxAgMIRFYUgkDCAilIACjomipC0gA3ZgqIAG3IgAaKjSIABzYqiaNI0LQuYfyeIASgcvYCOocQCJTJTEtCuRLKYrgYrkZK5BiqiZGYLgtK4biZC4BysIwZJBHYchxJQJBJkELSysgcgRvQKipD0xqqOmrg+Mq0KuCmqQoq4OQuBCrg6KoyytJosjEoY2QkpS3iAFkgMqRgiWzURXwuh09QQG7LHIe7tQORwIToN64wevUDQoWlbt+jgLu3CIXp+97zgOFNvruuNvCYLD4SWVgwjOJYED2K16ADZjHO6UVUcSFBxgDJDqVG8ZSZtEFgwx48pSZkQTlEaToaQX7pwghCuoHElYOg2machDgpEc8ZyCB5CgbcXAZ0IbBSHUMAED6nBCDAdA2A1wcQAAE2YAAzOjKqkDhCeQ8nMO6BGvyl0RZZaeXr0RDHRptT2fvliW7dlSBaYHMW3Cw6ACEj7AxJ6tNBAQWAo+jgRCBxlAxDYagwDgI3TfN0LLetkPnHYDtXG7APNCDu2OWrgCPe5aufdEOvYNdrrw19iNYJltQWc7qsK9YUVzmHoHznrq3MLF7w6GH6u7hBSXh8VFmZ6lNwYHM0xVaoMAolIdB8EKaBU8gSOok88Q8CznPjbNi3YIH0fn7NDCx7ZgWZOwfrRhAWK2KsCKilNKMgqKBgACoABkZoMWCjIKQHFWpAA)
+[](http://falstad.com/circuit/circuitjs.html?ctz=CQAgjCAMB0l3BWK0AckDMYwE4As3sA2SQgdgCYFsQFIaRd0aBTAWiwCgBncQ8bciEK4Q5XHToQALgCcArs24gi-QWFwixE8CFkKllPjkHpIm8VEt7FPMKSMDRY0Rcm75NhmAeDcwl9rSHkro6D4g6Cjmge76PKF8hhFREWaWQXFeiQh8fiKmIm7WSnbZic4F6bGeSUmVlUXBPCpJ6vlpjZneojlC7YU6xfFh4OQoySKlVUNZo+N54PbTTYtGY06TS501vWDrlVPbSip7422ry11r4-6Hg8EA7rxzytdQHE8n61On708-61a60gHx6bwSLxBTwhv1w3V+UOexleqj+KORP0ciMxglaWNBeJMI2RiJhjjh4URFLBERGSVJdN6tV6iOZRiW9NBUySLRZoN5RjKaP8Wj6qUKXI04vAUtF2NlFnOhwJzm5zjlKuiG2lpLS9TSGuhBosBy2oMimz4FoCaOtoutDVBCymC0NDBFFgWjqetyWHokHAASmL-P50IJtBYkNoYAgODIQyJbnt0vBEcnBL6+PLJimlWaE+dblKsBHwGmgzKk5MpeHLHQo-XkHGnuRVSm25b3gnO2Le6XU-BK72RRUyw26NH69AW9KB6bs-HpWG0gPJBXg5UV-lxwxJ03Y+aUvPjwWJmLrWvy0PNykwyk65H9zGZ06M+6uyCEwt-M6U+ubw-MUvV3RsX1ndg3nhYFQUg1F4XxJ44NaIUQQADxAVhxDoUIkEg0haXmFwQBkAB7B4AB0uC4ABjABDAA7KiAHNmAY5gZDoqRSJkDgACNwCQLARFwFBqFMah0JoEhwFCIRVRGcwQAAa2YABPLgHgASykGiAAsOAw2hBUnY9CCYJSAFsuJkLS0MMzDxAgMIRFYUgkDCAilIACjomipC0gA3ZgqIAG3IgAaKjSIABzYqiaNI0LQuYfyeIASgcvYCOocQCJTJTEtCuRLKYrgYrkZK5BiqiZGYLgtK4biZC4BysIwZJBHYchxJQJBJkELSysgcgRvQKipD0xqqOmrg+Mq0KuCmqQoq4OQuBCrg6KoyytJosjEoY2QkpS3iAFkgMqRgiWzURXwuh09QQG7LHIe7tQORwIToN64wevUDQoWlbt+jgLu3CIXp+97zgOFNvruuNvCYLD4SWVgwjOJYED2K16ADZjHO6UVUcSFBxgDJDqVG8ZSZtEFgwx48pSZkQTlEaToaQX7pwghCuoHElYOg2machDgpEc8ZyCB5CgbcXAZ0IbBSHUMAED6nBCDAdA2A1wcQAAE2YAAzOjKqkDhCeQ8nMO6BGvyl0RZZaeXr0RDHRptT2fvliW7dlSBaYHMW3Cw6ACEj7AxJ6tNBAQWAo+jgRCBxlAxDYagwDgI3TfN0LLetkPnHYDtXG7APNCDu2OWrgCPe5aufdEOvYNdrrw19iNYJltQWc7qsK9YUVzmHoHznrq3MLF7w6GH6u7hBSXh8VFmZ6lNwYHM0xVaoMAolIdB8EKaBU8gSOok88Q8CznPjbNi3YIH0fn7NDCx7ZgWZOwfrRhAWK2KsCKilNKMgqKBgACoABkZoMWCjIKQHFWpAA)
And this is how most keyboards work. There are some special keys–Shift, Ctrl, Alt, etc might be on their very own line, since we want to detect key combos. And better keyboards can detect multiple keys being pressed at once (N-key rollover), <s>which I think they do by having a completely separate wire to each key</s> which multiple people tell me they do with a diode next to each key.
<figure class="wp-block-gallery has-nested-images columns-5 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/06/aluminium_parts-scaled.jpg)
+[](/wp-content/uploads/2023/06/aluminium_parts-scaled.jpg)
-[](../wp-content/uploads/2023/06/aluminium_layers-scaled.jpg)
+[](/wp-content/uploads/2023/06/aluminium_layers-scaled.jpg)
-[](../wp-content/uploads/2023/06/aluminium_03-scaled.jpg)
+[](/wp-content/uploads/2023/06/aluminium_03-scaled.jpg)
-[](../wp-content/uploads/2023/06/aluminium_01-scaled.jpg)
+[](/wp-content/uploads/2023/06/aluminium_01-scaled.jpg)
-[](../wp-content/uploads/2023/06/aluminium_02-scaled.jpg)
+[](/wp-content/uploads/2023/06/aluminium_02-scaled.jpg)
-[](../wp-content/uploads/2023/06/side_view-scaled.jpg)
+[](/wp-content/uploads/2023/06/side_view-scaled.jpg)
</figure>
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/06/graphite_parts-scaled.jpg)
+[](/wp-content/uploads/2023/06/graphite_parts-scaled.jpg)
-[](../wp-content/uploads/2023/06/graphite_done-scaled.jpg)
+[](/wp-content/uploads/2023/06/graphite_done-scaled.jpg)
</figure>
---
I’m a fan of the game [Dungeon Master II](https://en.wikipedia.org/wiki/Dungeon_Master_II:_The_Legend_of_Skullkeep) (1993). In fact, I’m planning to get a tattoo of the rune system. So I looked around for a reference image. Here’s one from the game manual:
-[](../wp-content/uploads/2023/07/glyphs-detailed.gif)
+[](/wp-content/uploads/2023/07/glyphs-detailed.gif)
This looked like a nice one, because it shows the game graphics:
-[](../wp-content/uploads/2023/07/dm2runes.png)
+[](/wp-content/uploads/2023/07/dm2runes.png)
But there’s one problem–an entire row of runes is missing. Here’s a corrected one I made.
-[](../wp-content/uploads/2023/07/dm2runes-2.png)
+[](/wp-content/uploads/2023/07/dm2runes-2.png)
-[](../wp-content/uploads/2023/07/just_runes.png)
+[](/wp-content/uploads/2023/07/just_runes.png)
---
I’ve been prototyping an e-ink laptop.
-[](../wp-content/uploads/2022/10/front_view_open-scaled.jpg)
+[](/wp-content/uploads/2022/10/front_view_open-scaled.jpg)
-[](../wp-content/uploads/2022/10/front_view-scaled.jpg)
+[](/wp-content/uploads/2022/10/front_view-scaled.jpg)
I’m not the first, there have been many other such devices before. I came up with the idea independently, but the specifics are heavily inspired by the [Ultimate Writer](https://alternativebit.fr/posts/ultimate-writer/) by NinjaTrappeur in 2018. Similar to him, my use case is typing without distractions, and reading books. E-ink displays are quite slow to update, so I don’t think it can serve as a general purpose computer. Here’s a video of it in action. It operates at one frame per second.
The electronics are not fully done. They need better secured, and I’m going to redo the cabling and power back.
-[](../wp-content/uploads/2022/10/screen_closeup-scaled.jpg)
+[](/wp-content/uploads/2022/10/screen_closeup-scaled.jpg)
-[](../wp-content/uploads/2022/10/early_garbage-crop-scaled.jpg)
+[](/wp-content/uploads/2022/10/early_garbage-crop-scaled.jpg)
-[](../wp-content/uploads/2022/10/keyboard_closeup-scaled.jpg)
+[](/wp-content/uploads/2022/10/keyboard_closeup-scaled.jpg)
-[](../wp-content/uploads/2022/10/battery_back_closeup-scaled.jpg)
+[](/wp-content/uploads/2022/10/battery_back_closeup-scaled.jpg)
-[](../wp-content/uploads/2022/10/pi_closeup-scaled.jpg)
+[](/wp-content/uploads/2022/10/pi_closeup-scaled.jpg)
I’m not the best woodworker, but I’m slowly learning. Here are pictures of case and lid action.
-[](../wp-content/uploads/2022/10/added_back_stops-scaled.jpg)
+[](/wp-content/uploads/2022/10/added_back_stops-scaled.jpg)
-[](../wp-content/uploads/2022/10/back_stop-scaled.jpg)
+[](/wp-content/uploads/2022/10/back_stop-scaled.jpg)
-[](../wp-content/uploads/2022/10/back_stop_action-scaled.jpg)
+[](/wp-content/uploads/2022/10/back_stop_action-scaled.jpg)
-[](../wp-content/uploads/2022/10/hinge-scaled.jpg)
+[](/wp-content/uploads/2022/10/hinge-scaled.jpg)
-[](../wp-content/uploads/2022/10/hinge_crack-scaled.jpg)
+[](/wp-content/uploads/2022/10/hinge_crack-scaled.jpg)
On the software end, shout outs to:
---
My friend Callen taught me some Godot, and we made an [Easel Toy](https://za3k.com/archive/easel/Cards_on_Slots.html). You combine colors to make other colors. Nothing fancy.
-[](https://za3k.com/archive/easel/Cards_on_Slots.html)
+[](https://za3k.com/archive/easel/Cards_on_Slots.html)
wordpress_id: 1016
wordpress_slug: first-aid-kit
---
-[](../wp-content/uploads/2023/04/PXL_20221014_050139562-crop-scaled.jpg)
+[](/wp-content/uploads/2023/04/PXL_20221014_050139562-crop-scaled.jpg)
-[](../wp-content/uploads/2023/04/PXL_20221014_050159341-crop-scaled.jpg)
+[](/wp-content/uploads/2023/04/PXL_20221014_050159341-crop-scaled.jpg)
-[](../wp-content/uploads/2023/04/PXL_20221014_050204922.MP-crop.jpg)
+[](/wp-content/uploads/2023/04/PXL_20221014_050204922.MP-crop.jpg)
```
Contents:
To start, I covered each marble tile in painter’s tape.
-[](../wp-content/uploads/2024/05/001_tape-scaled.jpg)
+[](/wp-content/uploads/2024/05/001_tape-scaled.jpg)
Then, I used double-stick tape to attach labels.
-[](../wp-content/uploads/2024/05/002_labels.jpg)
+[](/wp-content/uploads/2024/05/002_labels.jpg)
I cut out the words using an x-acto knife, and removed the paper and cut-out portion.
-[](../wp-content/uploads/2024/05/003_cut_out-scaled.jpg)
+[](/wp-content/uploads/2024/05/003_cut_out-scaled.jpg)
I spray painted them. I chose a higher-contrast color because of my one-tile test.
-[](../wp-content/uploads/2024/05/basil-colors.jpg)
+[](/wp-content/uploads/2024/05/basil-colors.jpg)
-[](../wp-content/uploads/2024/05/004_spray_painted-scaled.jpg)
+[](/wp-content/uploads/2024/05/004_spray_painted-scaled.jpg)
I peeled off the tape, and voilà:
-[](../wp-content/uploads/2024/05/005_tape_removed-scaled.jpg)
+[](/wp-content/uploads/2024/05/005_tape_removed-scaled.jpg)
Lessons learned:
---
I’m making labels for my garden sections by painting tiles.
-[](../wp-content/uploads/2024/04/001_blank.jpg)
+[](/wp-content/uploads/2024/04/001_blank.jpg)
This is a blank “subway” style marble tile. It’s 140×45 mm (2×6 inch). One is about $1. Avoid “glazed” or “glossy” tiles, which are too smooth for the paint to stick well.
-[](../wp-content/uploads/2024/04/002_blue_tape.jpg)
+[](/wp-content/uploads/2024/04/002_blue_tape.jpg)
First, we add a layer of tape. I used blue painter’s tape because it’s easy to see. I expect masking tape would work well too.
-[](../wp-content/uploads/2024/04/003_label-scaled.jpg)
+[](/wp-content/uploads/2024/04/003_label-scaled.jpg)
Attach the sign you want to your tape. I used double-stick tape. It’s better than single-stick around the edges, but that also works in a pinch.
-[](../wp-content/uploads/2024/04/004_cut_xacto.jpg)
+[](/wp-content/uploads/2024/04/004_cut_xacto.jpg)
Cut through the letters using an x-acto blade. I used a sans-serif font to make this step faster.
-[](../wp-content/uploads/2024/04/005_tape_removed-scaled.jpg)
+[](/wp-content/uploads/2024/04/005_tape_removed-scaled.jpg)
Remove the paper, as well as the tape. You can use the x-acto blade to peel up the tape. Make sure not to lift up the “holes” in letters like ‘B’ or ‘a’.
-[](../wp-content/uploads/2024/04/006_spray_painted-scaled.jpg)
+[](/wp-content/uploads/2024/04/006_spray_painted-scaled.jpg)
Paint the tile. I used pale/pastel blue acrylic [spray paint](https://ironlak.com/). Make sure to either not spray the sides, or cover them in tape too.
Then I let it sit for 15-20 minutes.
-[](../wp-content/uploads/2024/04/007_tape_removed-scaled.jpg)
+[](/wp-content/uploads/2024/04/007_tape_removed-scaled.jpg)
Peel off the tape. I used gloves, and took out the holes using tweezers.
Then I let the paint completely dry. Optionally, you can seal it with a [clear sealant](https://www.amazon.com/Mod-Podge-1470-Acrylic-Sealer/dp/B003VYD9DM) if you want extra waterproofing.
-[](../wp-content/uploads/2024/04/008_z_bracket-1.jpg)
+[](/wp-content/uploads/2024/04/008_z_bracket-1.jpg)
I attach the tile to my raised beds using [z-brackets](https://www.google.com/search?q=z-bracket&tbm=isch) sized to fit the tile thickness and a screwdriver. They look fine on the dirt too.
The overview of the month is [here](https://za3k.com/hackaday) and highly recommended.
-[](https://za3k.com/hackaday)
+[](https://za3k.com/hackaday)
I plan to do a little more followup this year than last. Today’s last-minute fixes:
It is meant to be played multi-player, but you’re welcome to try it out single-player online. Have fun!
-[](https://za3k.github.io/ha3k-01-perquackey/)
+[](https://za3k.github.io/ha3k-01-perquackey/)
Source code [here](https://github.com/za3k/ha3k-01-perquackey)
---
Lashed furniture is made using sticks and rope or twine. Today’s project was to make one out of bamboo and brown paracord. The frame is shown–imagine boards or many pieces of bamboo forming a top.
-[](../wp-content/uploads/2023/11/table.jpg)
+[](/wp-content/uploads/2023/11/table.jpg)
We found this little $5 tool to be incredibly good for cutting bamboo. It’s designed for almost the same thing, cutting metal pipes.
-[](../wp-content/uploads/2023/11/pipe-cutter.webp)
+[](/wp-content/uploads/2023/11/pipe-cutter.webp)
It wasn’t bad for a first try. That said, we decided the top wasn’t flat enough to give a good finish, so the whole thing is going to be burned at the next bonfire.
You can play it [here](https://za3k.github.io/ha3k-07-doodle-alchemy/).
-[](https://za3k.github.io/ha3k-07-doodle-alchemy/)
+[](https://za3k.github.io/ha3k-07-doodle-alchemy/)
You combine elements to make something new. Sometimes you get an old element:
-[](https://za3k.github.io/ha3k-07-doodle-alchemy/)
+[](https://za3k.github.io/ha3k-07-doodle-alchemy/)
Sometimes you discover a new one!
-[](https://za3k.github.io/ha3k-07-doodle-alchemy/)
+[](https://za3k.github.io/ha3k-07-doodle-alchemy/)
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/11/v15b.png)
+[](/wp-content/uploads/2023/11/v15b.png)
-[](../wp-content/uploads/2023/11/v16.png)
+[](/wp-content/uploads/2023/11/v16.png)
</figure>
Click the image for a silly little zine.
-[](https://za3k.github.io/ha3k-08-receipt/)
+[](https://za3k.github.io/ha3k-08-receipt/)
---
Try it out [here](https://za3k.github.io/ha3k-10-typewriter/). Code is on [github](https://github.com/za3k/ha3k-10-typewriter).
-[](https://za3k.github.io/ha3k-10-typewriter/)
+[](https://za3k.github.io/ha3k-10-typewriter/)
---
A “silly screensaver”. Demo is [here](https://za3k.github.io/ha3k-12-screensaver/). Source code is [on github](https://github.com/za3k/ha3k-12-screensaver).
-[](https://za3k.github.io/ha3k-12-screensaver/)
+[](https://za3k.github.io/ha3k-12-screensaver/)
Today I tried to write a tool to make a floorplan. You can try it [here](https://za3k.github.io/ha3k-13-blueprint/). As usual the source code is [on github](https://github.com/za3k/ha3k-13-blueprint).
-[](https://za3k.github.io/ha3k-13-blueprint/)
+[](https://za3k.github.io/ha3k-13-blueprint/)
This was an ambitious project for one day, and I didn’t finish everything I wanted. My original goal was to support
---
My friend Kragen and I wrote a little bytebeat synth tool. You can mess around and have fun. Demo [here](https://za3k.github.io/ha3k-14-synth/), code is [on github](https://github.com/za3k/ha3k-14-synth).
-[](https://za3k.github.io/ha3k-14-synth/)
+[](https://za3k.github.io/ha3k-14-synth/)
Mine is based on the explanation (and code) from “[Ray Tracing in One Weekend](https://raytracing.github.io/books/RayTracingInOneWeekend.html)“, and the code from “[My Very First Raytracer](http://canonical.org/~kragen/sw/aspmisc/my-very-first-raytracer.html)“.
-[](https://github.com/za3k/ha3k-02)
+[](https://github.com/za3k/ha3k-02)
The motivation for this project was to learn how to make things run faster on a graphics card. I quickly realized (before I wrote a line of code) that I’d need the basic raytracer to be its own project. Having it run faster will have to be a job for another day!
-[](https://github.com/za3k/ha3k-02)
+[](https://github.com/za3k/ha3k-02)
Here’s the original minigame:
-[](../wp-content/uploads/2023/11/2023-11-20-223209_640x400_scrot.png)
+[](/wp-content/uploads/2023/11/2023-11-20-223209_640x400_scrot.png)
Here’s my spritesheet:
-[](../wp-content/uploads/2023/11/out.png)
+[](/wp-content/uploads/2023/11/out.png)
I made it by splitting up screenshots:
-[](../wp-content/uploads/2023/11/hillsfar-lockpick-parts.png)
+[](/wp-content/uploads/2023/11/hillsfar-lockpick-parts.png)
The first part was the design an electronic circuit. I decided I was short on time, so I grabbed an [existing schematic](https://www.circuits-diy.com/simple-continuity-tester-circuit-using-555-timer-ic/).
-[](../wp-content/uploads/2023/11/continuity_tester.png)
+[](/wp-content/uploads/2023/11/continuity_tester.png)
Next, I downloaded KiCAD, and recreated the circuit there. I found [this video tutorial](https://www.youtube.com/watch?v=zK3rDhJqMu0&ab_channel=WindsorSchmidt) very helpful to learn kicad.
-[](../wp-content/uploads/2023/11/kicad_schematic.png)
+[](/wp-content/uploads/2023/11/kicad_schematic.png)
Next, I made the actual PCB layout.
-[](../wp-content/uploads/2023/11/kicad-pcb.png)
+[](/wp-content/uploads/2023/11/kicad-pcb.png)
To my surprise, after a little jiggling I got it down to a one-layer design.
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/11/kicad-pcb2.png)
+[](/wp-content/uploads/2023/11/kicad-pcb2.png)
</figure>
That means home-printing would be much easier. No having to line up the two sides carefully.
-[](../wp-content/uploads/2023/11/printable.png)
+[](/wp-content/uploads/2023/11/printable.png)
I printed out the image on paper (backwards) on my toner printer, and taped it to the copper-clad PCBs.
-[](../wp-content/uploads/2023/11/PXL_20231123_024251429-crop.jpg)
+[](/wp-content/uploads/2023/11/PXL_20231123_024251429-crop.jpg)
First, I tried laminating it. Almost no ink transferred, and the paper came off easily. Then I tried ironing it, but the paper stick to the iron and not to the PCB. The tape melted on the iron. For both, I dunked them in water after, which is supposed to help loosen the paper.
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/11/image.png)
+[](/wp-content/uploads/2023/11/image.png)
-[](../wp-content/uploads/2023/11/image-2.png)
+[](/wp-content/uploads/2023/11/image-2.png)
-[](../wp-content/uploads/2023/11/image-4.png)
+[](/wp-content/uploads/2023/11/image-4.png)
</figure>
I tried peeling off the laminated paper–oops! It peeled back and most of the ink stayed on the paper. I think if I took it off more carefully, it would have worked.
-[](../wp-content/uploads/2023/11/image-5.png)
+[](/wp-content/uploads/2023/11/image-5.png)
I picked at the ironed paper a bit, but it didn’t budge. I let it sit in dish soap for a while so the paper would fall apart. The first hour didn’t do anything.
-[](../wp-content/uploads/2023/11/PXL_20231123_041248880-crop.jpg)
+[](/wp-content/uploads/2023/11/PXL_20231123_041248880-crop.jpg)
Meanwhile, I made an order at PCBWay. It’s still under review.
Edit: after some advice from a friend, I peeled off this paper more aggressively, and scrubbed it off. The ink was fine. It doesn’t look great, but I think this is mostly the wrinkles during transfer. It’s a little blurry, I’ll have to do a third attempt before I try etching.
-[](../wp-content/uploads/2023/11/PXL_20231123_044211359-crop.jpg)
+[](/wp-content/uploads/2023/11/PXL_20231123_044211359-crop.jpg)
Music of the Spheres lets you hear songs on different tonal scales. Listen to the warped melodies. Watch the pretty planets orbit. Surely their sizes and orbits are significant and connected to the tonal scales? Go mad with afterimages of… okay, well it’s kinda fun, anyway. Demo is [here](https://za3k.github.io/ha3k-30-musicofspheres/), code is [on github](https://github.com/za3k/ha3k-30-musicofspheres).
-[](https://za3k.github.io/ha3k-30-musicofspheres/)
+[](https://za3k.github.io/ha3k-30-musicofspheres/)
Yesterday’s project was [Hack-A-Battle](https://tilde.za3k.com/hackaday/battle/) ([demo](https://tilde.za3k.com/hackaday/battle/), [source](https://github.com/za3k/day21_battle)). It’s two dueling music visualizers (sound warning!). Red vs blue. As each hits the other with bullets, they lose heath. As a band takes damage, it gets dimmer and quieter. Eventually one band will win out and be the only one playing.
-[](https://tilde.za3k.com/hackaday/battle/)
+[](https://tilde.za3k.com/hackaday/battle/)
I thought this was a cool idea, but I’m not really happy with the implementation
Today’s project is the [Hack-A-Blog](https://tilde.za3k.com/hackaday/blog/). ([demo](https://tilde.za3k.com/hackaday/blog/), [source](https://github.com/za3k/day03_blog)).
-[](https://tilde.za3k.com/hackaday/blog/)
+[](https://tilde.za3k.com/hackaday/blog/)
Check out the link above to try out the live demo. I’m proud of getting this one done in time. I think the next days will be easier, as I figured some things out already.
---
I’m continuing Hack-A-Day, I think. Today’s project is [Hack-A-Bug](https://tilde.za3k.com/hackaday/bug/) ([demo](https://tilde.za3k.com/hackaday/bug/), [source](https://github.com/za3k/day31_bug)). It’s a bug reporter I can add with one line to any of my projects.
-[](https://tilde.za3k.com/hackaday/bug/)
+[](https://tilde.za3k.com/hackaday/bug/)
Today’s project is [Hack-A-Chat](https://tilde.za3k.com/hackaday/chat/). ([demo](https://tilde.za3k.com/hackaday/chat/), [source](https://github.com/za3k/day04_chat)). It’s a free web chat for anyone that goes to the website.
-[](https://tilde.za3k.com/hackaday/chat/)
+[](https://tilde.za3k.com/hackaday/chat/)
Check out the link above to try out the live demo.
---
Thursday’s project was [Hack-A-Clock](https://tilde.za3k.com/hackaday/clock/) ([demo](https://tilde.za3k.com/hackaday/clock/), [source](https://github.com/za3k/day24_clock)). It is a decimal time clock, displaying the time in revolutionary french time (minus their weird calendar).
-[](https://tilde.za3k.com/hackaday/clock/)
+[](https://tilde.za3k.com/hackaday/clock/)
This is another “phone it in” project but I think it would have been okay with more accompanying explanation and better styling.
Today’s project is [Hack-A-Crop](https://tilde.za3k.com/hackaday/crop/) ([demo](https://tilde.za3k.com/hackaday/crop/), [source](https://github.com/za3k/day18_crop)). It crops an image to a fixed size.
-[](https://tilde.za3k.com/hackaday/crop/)
+[](https://tilde.za3k.com/hackaday/crop/)
I got help from several people on the CSS, thanks to instantly sharing my work via [ngrok](https://ngrok.com/) from my laptop. Thanks people! Thanks ngrok!
Today’s project is [Hack-A-Dictionary](https://tilde.za3k.com/hackaday/dictionary/) ([demo](https://tilde.za3k.com/hackaday/dictionary/), [source](https://github.com/za3k/day08_dictionary)). It looks up words.
-[](https://tilde.za3k.com/hackaday/dictionary/)
+[](https://tilde.za3k.com/hackaday/dictionary/)
OK, I’ll be honest. I’m phoning this one in. I needed a break.
Today’s project is [Hack-A-Farm](https://tilde.za3k.com/hackaday/farm/) ([demo](https://tilde.za3k.com/hackaday/farm/), [source](https://github.com/za3k/day27_farm)). It’s a simple tile-based RPG. You can walk around as a chicken, admire your house, and plant and harvest two types of crops.
-[](https://tilde.za3k.com/hackaday/farm/)
+[](https://tilde.za3k.com/hackaday/farm/)
My main goal with this project was to work with spritesheets or animation before, which I had never done. Showing off the individual tiles is deliberate. Also, the game should respond well to smaller and larger screens, I hope.
Unfortunately while everything works great on my machine, there’s a bad problem in production, and I ran out of time on this one. I’ll try to get it fixed before the end of the month if it’s easy.
-[](https://tilde.za3k.com/hackaday/hang/)
+[](https://tilde.za3k.com/hackaday/hang/)
Hoo boy, this was one of the technically hardest ones so far. WebRTC is no joke. And not hard in a way where you have to think, hard in a way where the debugging tools are terrible. (Drag and drop was another tough one)
Today’s project is [Hack-A-Hell](https://tilde.za3k.com/hackaday/hell/) ([demo](https://tilde.za3k.com/hackaday/hell/), [source](https://github.com/za3k/day22_hell)). It’s a bullet hell game combined with a music visualizer.
-[](https://tilde.za3k.com/hackaday/hell/)
+[](https://tilde.za3k.com/hackaday/hell/)
I’m happy with this one, although it took way too long given yesterday’s project! I keep thinking I’ll be able to modify or re-use things quickly, and it’s not true.
Today’s (catch-up) project is [Hack-A-Homepage](https://tilde.za3k.com/hackaday/homepage/v/zachary) ([demo](https://tilde.za3k.com/hackaday/homepage/v/zachary), [source](https://github.com/za3k/day01_homepage)). You can enter various information about yourself, such as links to your social media, and make your own little homepage.
-[](https://tilde.za3k.com/hackaday/homepage/v/zachary)
+[](https://tilde.za3k.com/hackaday/homepage/v/zachary)
-[](../wp-content/uploads/2022/11/screenshot-4.png)
+[](/wp-content/uploads/2022/11/screenshot-4.png)
This one took about another hour. I think it’s okay, but today was definitely a “do the numbers” game to catch up. Tomorrow I want to do something more fun and new.
Today’s project is [Hack-A-Line](https://tilde.za3k.com/hackaday/line/) ([demo](https://tilde.za3k.com/hackaday/line/), [source](https://github.com/za3k/day13_line)). Hack-A-Line is a 5-in-a-row game for two players. You play online against each other by sharing a link.
-[](https://tilde.za3k.com/hackaday/line/)
+[](https://tilde.za3k.com/hackaday/line/)
I’m okay with this one, except that there’s one really bad display bug that kind of ruins it. I’m starting to develop a list of projects where I might want to go back and fix something after this month.
Wednesday’s project was [Hack-A-Link 2](https://tilde.za3k.com/hackaday/link/) ([demo](https://tilde.za3k.com/hackaday/link/), [source](https://github.com/za3k/day02_link)). It’s an open link directory.
-[](https://tilde.za3k.com/hackaday/link/)
+[](https://tilde.za3k.com/hackaday/link/)
This was very much a “phone it in” project. I do think it could have been better if I had added descriptions, too.
Today’s (catch-up) project is [Hack-A-Link](https://tilde.za3k.com/hackaday/link) ([demo](https://tilde.za3k.com/hackaday/link), [source](https://github.com/za3k/day02_link)). You can enter a long link, and it will be shortened.
-[](https://tilde.za3k.com/hackaday/link)
+[](https://tilde.za3k.com/hackaday/link)
This one was also pretty easy. About an hour.
I liked this one, but it really didn’t fit into a day too well.
-[](https://tilde.za3k.com/hackaday/machine/)
+[](https://tilde.za3k.com/hackaday/machine/)
Features include:
Today’s project is [Hack-A-Mandelbrot](https://tilde.za3k.com/hackaday/mandelbrot/) ([demo](https://tilde.za3k.com/hackaday/mandelbrot/), [source](https://github.com/za3k/day09_mandelbrot)). Interactively explore the fractal world of the Mandelbrot set.
-[](https://tilde.za3k.com/hackaday/mandelbrot/)
+[](https://tilde.za3k.com/hackaday/mandelbrot/)
Today’s project is [Hack-A-Minigame](https://tilde.za3k.com/hackaday/mini/) ([demo](https://tilde.za3k.com/hackaday/mini/), [source](https://github.com/za3k/day26_mini)). It’s the classic Snake, but the twist is you can only save and load the game. Rather than controlling the snake, it moves at random under AI control. You have to repeatedly save and load to make progress.
-[](https://tilde.za3k.com/hackaday/mini/)
+[](https://tilde.za3k.com/hackaday/mini/)
Credit to Jeff Lait’s “[Save Scummer](http://www.zincland.com/7drl/savescummer/)” 7-day roguelike for inspiration. Although actually, this whole minigame is mostly for a future project!
Today’s project is [Hack-A-Paste](https://tilde.za3k.com/hackaday/paste) ([demo](https://tilde.za3k.com/hackaday/paste), [source](https://github.com/za3k/day05_paste)). You can upload text and share it with others.
-[](https://tilde.za3k.com/hackaday/paste)
+[](https://tilde.za3k.com/hackaday/paste)
Today’s project was an easy one, because I was busy. Took an hour or two.
Today’s project is [Hack-A-Snake](https://tilde.za3k.com/hackaday/snake/) ([demo](https://tilde.za3k.com/hackaday/snake/), [source](https://github.com/za3k/day12_snake)). Yesterday I wrote a [game where an AI plays snake](https://blog.za3k.com/hack-a-day-hack-a-minigame/). Today I thought, hey, I should release that with keyboard controls so people can just play Snake.
-[](https://tilde.za3k.com/hackaday/snake/)
+[](https://tilde.za3k.com/hackaday/snake/)
Today’s project is [Hack-A-Song](https://tilde.za3k.com/hackaday/song/) ([demo](https://tilde.za3k.com/hackaday/song/), [source](https://github.com/za3k/day16_song)). It plays greensleeves, and you can edit the music to play something else, too.
-[](https://tilde.za3k.com/hackaday/song/)
+[](https://tilde.za3k.com/hackaday/song/)
- Use a keyboard or mouse
- (Mobile not supported)
-[](https://tilde.za3k.com/hackaday/sound/)
+[](https://tilde.za3k.com/hackaday/sound/)
Have fun. I think this was a pretty good toy.
Today’s project is [Hack-A-Stats](https://tilde.za3k.com/hackaday/stats/) ([demo](https://tilde.za3k.com/hackaday/stats/), [source](https://github.com/za3k/day14_stats)). It displays web traffic statistics about Hack-A-Day.
-[](https://tilde.za3k.com/hackaday/stats/)
+[](https://tilde.za3k.com/hackaday/stats/)
The original point of the project was to show some nice graphs in d3, as an effort to teach myself d3. But halfway through I got unbearably bored by “show a bunch of stats” as a project, so no d3. Whoops! You win some you lose some.
Today’s project is [Hack-A-Tank](https://tilde.za3k.com/hackaday/tank/) ([demo](https://tilde.za3k.com/hackaday/tank/), [source](https://github.com/za3k/day17_tank)). It’s a relaxing fishtank toy. Enjoy.
-[](../wp-content/uploads/2022/11/screenshot-15.png)
+[](/wp-content/uploads/2022/11/screenshot-15.png)
Today’s project is [Hack-A-Tile](https://tilde.za3k.com/hackaday/tile/) ([demo](https://tilde.za3k.com/hackaday/tile/), [source](https://github.com/za3k/day11_tile)). It’s a tile-matching game like dominos.
-[](https://tilde.za3k.com/hackaday/tile/)
+[](https://tilde.za3k.com/hackaday/tile/)
Hack-A-Tile is based on mathematical [Wang tiles](https://en.wikipedia.org/wiki/Wang_tile). It was very tempting to call it Hack-A-Wang.
Yesterday’s project was [Hack-A-TV-Guide](https://tilde.za3k.com/hackaday/tvguide/) ([demo](https://tilde.za3k.com/hackaday/tvguide/), [source](https://github.com/za3k/day33_tvguide)). It’s a TV Guide generated from [Wikipedia](https://en.wikipedia.org/wiki/Main_Page). I got the idea from having written [isrickandmortyout.com](http://isrickandmortyout.com/). Why not do the same thing, but for every show?
-[](https://tilde.za3k.com/hackaday/tvguide/)
+[](https://tilde.za3k.com/hackaday/tvguide/)
I’m going to call this one a flop. There’s a good version of this project, but I ran out of time. Basically all it does is display info about a show, which is not very useful.
Today’s project is [Hack-An-Adventure](https://tilde.za3k.com/hackaday/adventure/) ([demo](https://tilde.za3k.com/hackaday/adventure/), [source](https://github.com/za3k/day29_adventure)). It’s a coloring book. It’s designed to be relaxing.
-[](https://tilde.za3k.com/hackaday/adventure/)
+[](https://tilde.za3k.com/hackaday/adventure/)
I’m pretty happy with this as my first “visual” game. I made it in Unity3D.
-[](https://tilde.za3k.com/hackaday/asteroid/)
+[](https://tilde.za3k.com/hackaday/asteroid/)
Today’s project was [Hack-An-Experiment](https://tilde.za3k.com/hackaday/experiment/) ([demo](https://tilde.za3k.com/hackaday/experiment/), [source](https://github.com/za3k/day25_experiment)). It’s designed to present the basics of experimental algorithmics, while also getting me acquainted with d3.
-[](https://tilde.za3k.com/hackaday/experiment/)
+[](https://tilde.za3k.com/hackaday/experiment/)
I have to say, I keep seeing d3 sold as a “graphing” library. And it’s definitely not. Maybe you could write one on top of it.
I won’t continue this tomorrow, I’d rather do a new project each day (It’s called Hack-A-**DAY**)! But I might do another Unity3D project before the month is out.
-[](https://tilde.za3k.com/hackaday/icecube/)
+[](https://tilde.za3k.com/hackaday/icecube/)
The ice cubes load and fall, and that’s it. No controls, no game. I ran out of time.
Today’s project is [Hack-An-MMO](https://tilde.za3k.com/hackaday/mmo/) ([demo](https://tilde.za3k.com/hackaday/mmo/), [source](https://github.com/za3k/day30_mmo)). It’s a small collaborative art RPG. You can draw people, places, and things to populate the tiny world. Have fun!
-[](https://tilde.za3k.com/hackaday/mmo/)
+[](https://tilde.za3k.com/hackaday/mmo/)
Today’s project is [Hack-An-Uptime](https://tilde.za3k.com/hackaday/uptime/) ([demo](https://tilde.za3k.com/hackaday/uptime/), [source](https://github.com/za3k/day34_uptime)). It’s a simple experiment where you press a button every day.
-[](https://tilde.za3k.com/hackaday/uptime/)
+[](https://tilde.za3k.com/hackaday/uptime/)
This was a very simple project. I’m curious what will happen with it.
---
The game can be played [here](https://za3k.github.io/ha3k-20-lockpick/). Source code is [on github](https://za3k.github.io/ha3k-20-lockpick/).
-[](https://za3k.github.io/ha3k-20-lockpick/)
+[](https://za3k.github.io/ha3k-20-lockpick/)
Info about the original 1989 Hillsfar game is linked from the demo! Enjoy.
---
I made an [animated HTML + CSS cheatsheet](https://za3k.com/html-css-cheatsheet). This took me about three days. It is not really intended for beginners. It contains stuff I frequently forget myself.
-[](https://za3k.com/html-css-cheatsheet)
+[](https://za3k.com/html-css-cheatsheet)
wordpress_id: 225
wordpress_slug: irc
---
-[](../wp-content/uploads/2015/06/2015-06-28-021223_683x381.jpg)I added an IRC server to my growing list of services. You can access it at:
+[](/wp-content/uploads/2015/06/2015-06-28-021223_683x381.jpg)I added an IRC server to my growing list of services. You can access it at:
- irc.za3k.com
- Port 6667
---
I recently made an art project as a birthday gift for a young friend of mine.
-[](../wp-content/uploads/2024/04/rachel_tile-scaled.jpg)
+[](/wp-content/uploads/2024/04/rachel_tile-scaled.jpg)
I hadn’t seen the exact technique I invented to make stencils posted anywhere, so I figured I’d share it. I don’t think this is a good method, but maybe it will inspire someone to do something better.
I started with a blank tile. On top, I put down a layer of painter’s tape (basically masking tape, but a little less stretchy).
-[](../wp-content/uploads/2024/04/blue_stencil-crop.jpg)
+[](/wp-content/uploads/2024/04/blue_stencil-crop.jpg)
I printed and taped a piece of paper on top (made using [this online tool](https://online.rapidresizer.com/make-name-patterns.php) with the font [BreeSerif](https://fonts.google.com/specimen/Bree+Serif)):
-[](../wp-content/uploads/2024/04/image.png)
+[](/wp-content/uploads/2024/04/image.png)
I used an x-acto knife to cut through both the top paper and paper, then removed the paper. Then I peeled the letters out of the painter’s tape.
-[](../wp-content/uploads/2024/04/blue_stencil-crop-1.jpg)
+[](/wp-content/uploads/2024/04/blue_stencil-crop-1.jpg)
I painted the letters with acrylic, let them dry, and removed the tape. In retrospect, it probably would have been easier to remove the tape wet, because acrylic paint is a little stretchy and I went over the lines.
Finally, I used a masonry bit to drill screw holes in the tile, so it could be attached to a door.
-[](../wp-content/uploads/2024/04/rachel_with_tile.jpeg)
+[](/wp-content/uploads/2024/04/rachel_with_tile.jpeg)
She seemed to like it :). But now she wants to make one too. I’ll have to see if I can invent an easier way.
First, each player picks a Meeple to be their character’s mini.
-[](../wp-content/uploads/2023/07/board-crop.jpg)
+[](/wp-content/uploads/2023/07/board-crop.jpg)
Quick, roll initiative! The players all roll, and so do the enemies. We grab a second meeple for each player, as well as second token for each enemy. This becomes the initiative tracker.
-[](../wp-content/uploads/2023/07/initiative-crop-1.jpg)
+[](/wp-content/uploads/2023/07/initiative-crop-1.jpg)
This is the initiative order. It’s currently the red meeple hero’s turn. Next up will be the blue meeple hero, then the black cube enemy, and so on.
wordpress_id: 84
wordpress_slug: money-orders
---
-[](../wp-content/uploads/2014/12/Figure6.jpg)
+[](/wp-content/uploads/2014/12/Figure6.jpg)
Allow me to introduce you all to the postal money order. For $1.50, you can get the equivalent of a cashier’s check from the post office. It can only be cashed by whoever you make it out to, and it’s basically accepted as cash by every corporation. You can also just give someone a blank one, although that’s riskier to carry around for the obvious reasons.
wordpress_id: 104
wordpress_slug: moreorcs-com
---
-[](http://moreorcs.com)
+[](http://moreorcs.com)
My newest site: [http://moreorcs.com/](http://moreorcs.com/)
- No…
- No, and…
-[](../wp-content/uploads/2015/04/cube.jpg)
+[](/wp-content/uploads/2015/04/cube.jpg)
Their example:
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/07/weekly-crop.jpg)
+[](/wp-content/uploads/2023/07/weekly-crop.jpg)
-[](../wp-content/uploads/2023/07/cal-crop.jpg)
+[](/wp-content/uploads/2023/07/cal-crop.jpg)
</figure>
A daily TODO list, written on paper. I throw it out at the end of each day, without copying anything off it. (I actually scan it, but I never look at the scans). This one I find very helpful.
-[](../wp-content/uploads/2023/07/todo-daily-crop.jpg)
+[](/wp-content/uploads/2023/07/todo-daily-crop.jpg)
**Master TODO list**
A “master” TODO list, consisting of everything I want to get done long term. I store this as a text file.
-[](../wp-content/uploads/2023/07/todo-crop.png)
+[](/wp-content/uploads/2023/07/todo-crop.png)
Each task is a one-line description.
---
Prefer the old layout of Wikipedia? A couple friends and I made [oldwikipedia.org](https://oldwikipedia.org/)
-[](../wp-content/uploads/2023/02/2023-02-02-144514_1920x1080_scrot-crop.png)
+[](/wp-content/uploads/2023/02/2023-02-02-144514_1920x1080_scrot-crop.png)
Hope you enjoy.
---
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/02/waves.jpg)
+[](/wp-content/uploads/2023/02/waves.jpg)
</figure>
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/02/small.jpg)
+[](/wp-content/uploads/2023/02/small.jpg)
</figure>
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2023/02/art1-crop.jpg)
+[](/wp-content/uploads/2023/02/art1-crop.jpg)
-[](../wp-content/uploads/2023/02/statue1-crop.jpg)
+[](/wp-content/uploads/2023/02/statue1-crop.jpg)
</figure>
wordpress_id: 334
wordpress_slug: pixel-alphabet
---
-[](../wp-content/uploads/2015/10/Alphabetx16.png)A small font I designed. I’m pretty proud of it.
+[](/wp-content/uploads/2015/10/Alphabetx16.png)A small font I designed. I’m pretty proud of it.
wordpress_id: 112
wordpress_slug: pixel-art-a-cool-cat
---
-[](../wp-content/uploads/2015/02/Screen-Shot-2015-02-03-at-9.16.08-PM.png)
+[](/wp-content/uploads/2015/02/Screen-Shot-2015-02-03-at-9.16.08-PM.png)
---
I hacked up a little to-do app in an hour. The emphasis is on focus.
-[](https://github.com/za3k/short-programs#pompompom)
+[](https://github.com/za3k/short-programs#pompompom)
-[](https://github.com/za3k/short-programs#pompompom)
+[](https://github.com/za3k/short-programs#pompompom)
It’s linux only. You can find it in my [short-programs](https://github.com/za3k/short-programs#pompompom) repo on github.
---
I made a minimal, printable [TODO list](https://za3k.com/archive/todo.pdf). Enjoy!
-[](https://za3k.com/archive/todo.pdf)
+[](https://za3k.com/archive/todo.pdf)
-[](https://za3k.com/archive/todo.pdf)
+[](https://za3k.com/archive/todo.pdf)
---
[qr-backup](https://github.com/za3k/qr-backup) v1.1 is released. qr-backup is a **command-line Linux program**. You can use it to back up a file as a series of QR codes. You can restore the QR codes using a webcam or scanner, and get back the original file.
-[](../wp-content/uploads/2022/09/image.png)
+[](/wp-content/uploads/2022/09/image.png)
The main features of qr-backup are ease-of-use and futureproofing (restore does not require qr-backup).
---
I made a new project called [qr-backup](https://github.com/za3k/qr-backup). It’s a command-line program to back up any file to physical paper, using a number of QR codes. You can then restore it, even WITHOUT the qr-backup program, using the provided instructions.
-[](../wp-content/uploads/2021/05/example.png)
+[](/wp-content/uploads/2021/05/example.png)
I’m fairly satisfied with its current state (can actually back up my files, makes a PDF). There’s definitely some future features I’m looking forward to adding, though.
wordpress_id: 1407
wordpress_slug: repulsive-dots
---
-[](../wp-content/uploads/2024/06/geodesic_screenshot.jpg)
+[](/wp-content/uploads/2024/06/geodesic_screenshot.jpg)
Lately I’ve been messing about in [Godot](https://godotengine.org/), a framework for making video games (similar to Unity).
<figure class="wp-block-gallery has-nested-images columns-default wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex" markdown="1">
-[](../wp-content/uploads/2024/06/image.png)
+[](/wp-content/uploads/2024/06/image.png)
-[](../wp-content/uploads/2024/06/image-1.png)
+[](/wp-content/uploads/2024/06/image-1.png)
-[](../wp-content/uploads/2024/06/image-3.png)
+[](/wp-content/uploads/2024/06/image-3.png)
</figure>
A simple dome is the top half of the icosahedron. As they get more complex, you divide each triangle into more and more smaller triangles.
-[](../wp-content/uploads/2024/06/sphere-crop.jpg)
+[](/wp-content/uploads/2024/06/sphere-crop.jpg)
So to make a nice geodesic dome, we could find one (I failed), make one in Blender (too hard), or use some math to generate one in Godot. And to do that math, we need to know the list of 20 icosahedron faces. Which basically just needs the list of the 12 vertices!
wordpress_id: 341
wordpress_slug: roasted-chickpeas
---
-[](../wp-content/uploads/2015/10/roasted.jpg)Here’s how you make roasted chickpeas (aka garbanzo beans):
+[](/wp-content/uploads/2015/10/roasted.jpg)Here’s how you make roasted chickpeas (aka garbanzo beans):
1. Set the oven to 400F.
2. Drain and empty a can or so of chickpeas into a collander and wash them
I love to give out feelies for my D&D campaigns. Here are some lil handout props I made:
-[](../wp-content/uploads/2023/06/scroll-crop.jpg)
+[](/wp-content/uploads/2023/06/scroll-crop.jpg)
I used a receipt printer, q-tips, tape, and [orthodontic rubber bands](https://www.amazon.com/Orthodontic-Elastic-Rubberbands-Dreadlocks-Horse/dp/B00OSR1RBM).
wordpress_id: 193
wordpress_slug: steak-tartare-3
---
-[](../wp-content/uploads/2015/04/steak-tartare.jpg)
+[](/wp-content/uploads/2015/04/steak-tartare.jpg)
Recipe is mostly from [Tricia](http://triciaroxanne.wordpress.com).
Ingredients:
I thought, if these books are just a local convenience for an online version, it’s more artistically satisfying to have some representation of that. So I printed up a card catalog of all my books, both the ones I have digital copies of and not:
-[](../wp-content/uploads/2014/11/sample_card.png)
+[](/wp-content/uploads/2014/11/sample_card.png)
That’s what a card looks like. There’s information about the book up top, and a link in the form of a [QR code](http://en.wikipedia.org/wiki/QR_code "QR code") in the middle. The link downloads a PDF version of that book. Obviously being a programmer, the cards all all automatically generated.
-[](../wp-content/uploads/2014/11/book.jpg)
+[](/wp-content/uploads/2014/11/book.jpg)
For the books where I have a physical copy, I put the card in the book, and it feels like I’m touching the digital copy. My friends can pirate their own personal version of the book (saving me the sadness of lost lent-out books I’m sure we’ve all felt at times). And I just thing it looks darn neat. Some physical books I don’t have a digital version of, since the world is not yet perfect. But at least I can identify them at a glance (and consider sending them off to a service like [http://1dollarscan.com/](http://1dollarscan.com/))
-[](../wp-content/uploads/2014/11/catalog.jpg)
+[](/wp-content/uploads/2014/11/catalog.jpg)
And then, I have a box full of all the books I \*don’t\* have a physical copy of, so I can browse through them, and organize them into reading lists or recommendations. It’s not nearly as cool as the ones in books, but it’s sort of nice to keep around.
wordpress_id: 279
wordpress_slug: tiny-cute-vampire-bat
---
-[](../wp-content/uploads/2015/10/vampire-bat-x16.png)
+[](/wp-content/uploads/2015/10/vampire-bat-x16.png)
Made using [Piskell](http://www.piskelapp.com/)
---
I wanted a partition to divide my room, and I had a whiteboard sitting around. I sawed it into three parts, and connected them with hinges:
-
+
-
+
-
+
I’m a little embarrassed at having done all this, since it was obvious as soon as I started the partition was way too short to work. I figured I’d still get some experience woodworking (this is my first project). Here’s where it went:
-
+
and I never saw it again
wordpress_id: 282
wordpress_slug: whoosh
---
-[](../wp-content/uploads/2015/10/action-potato.png)
+[](/wp-content/uploads/2015/10/action-potato.png)
It’s whooshing because it’s going as fast as a WEAK SPEEDBOAT.
wordpress_id: 288
wordpress_slug: whsh
---
-[](../wp-content/uploads/2015/10/Space-Action-Potato-2-big.gif)
+[](/wp-content/uploads/2015/10/Space-Action-Potato-2-big.gif)
In space no one car hear “whoosh” sounds but action potato is so cool you still can mostly.
Next up I have to clean the site up, because it looks like this:
-[](../wp-content/uploads/2015/04/20150402.jpg)
+[](/wp-content/uploads/2015/04/20150402.jpg)
I’ll also add HTTPS.
---
Compared with [last update](https://blog.za3k.com/wip-dead-tree-publishing-2/ "WIP: Dead Tree Publishing 2"), the Dead Tree Publishing website is looking nicer.
-[](../wp-content/uploads/2015/04/2015-04-16-184416_1366x768.jpg)
+[](/wp-content/uploads/2015/04/2015-04-16-184416_1366x768.jpg)
It’s served over HTTPS now (not needed for security, but it puts people at ease and enabled Chrome’s autocomplete) and you can order multiple books at a time.
---
I consider Dead Tree Publishing to be **G**ood **E**nough at this point. It’s launched.
-[](../wp-content/uploads/2015/04/2015-04-30-180400_1366x768.jpg)
+[](/wp-content/uploads/2015/04/2015-04-30-180400_1366x768.jpg)
I’m going to add support for URLs instead of uploading PDFs, and fix some bugs here for there, but it’s essentially done.
First you upload a PDF:
-[](../wp-content/uploads/2015/03/1.jpg)
+[](/wp-content/uploads/2015/03/1.jpg)
Then I tell you what your ordering options are (hardcover, softcover, color), and what they cost. I’m also supposed to ask you your address to ship the book, and for you to pay for it, but those aren’t done yet.
-[](../wp-content/uploads/2015/03/1.jpg)
+[](/wp-content/uploads/2015/03/1.jpg)
Hopefully in the next day or two I’ll have something up and running so people can order books, and then make it gradually nicer! I’m very excited about this website existing.
I don’t know how to make a PCB:
-
+
Or how to attach headers to the inside of an existing keyboard, which looks like this–:
But I found a project called [GOLEM](https://golem.hu/guide/keyboard-build-logs/) with an excellent guide to making your own keyboard. Here is their wiring:
-
+
I can do that! They got me out of a major rut.
[Their advice](https://golem.hu/guide/first-macropad) walks you through how to do a small keyboard in a cardboard plate. I did a few keys, gauged the effort, and decided to use my 3D printer. Cutting out 50-60 keys precisely by hand doesn’t sound easy. Worse, if you mess up, you have to start over. In plastic, I can’t mess up halfway, and the spacers to support the keyboard can be part of the print.
-[](../wp-content/uploads/2024/05/2024-05-20-233106_2560x1440_scrot.png)
+[](/wp-content/uploads/2024/05/2024-05-20-233106_2560x1440_scrot.png)
Above, I’m designing a “sampler” keyboard in CAD (OpenSCAD). I want to iron out problems in my process before I try a full-size keyboard. Below, Prusa-Slic3r is slicing the finished model for my 3D printer to print.
-[](../wp-content/uploads/2024/05/2024-05-20-235849_1920x1080_scrot.png)
+[](/wp-content/uploads/2024/05/2024-05-20-235849_1920x1080_scrot.png)
Here’s the finished sampler keyboard:
-[](../wp-content/uploads/2024/05/tiny_keyboard2-1.jpg)
+[](/wp-content/uploads/2024/05/tiny_keyboard2-1.jpg)
Currently I’m waiting on keycaps and switches ordered from China, and then I’ll put together my finished keyboard. But I have been making some progress in the meantime. Here’s the layout I’m going to try.
-[](../wp-content/uploads/2024/05/keyboard57.png)
+[](/wp-content/uploads/2024/05/keyboard57.png)
And I’ve started streaming some development of a case and keyboard on [Twitch](https://www.twitch.tv/za3k) (Tue/Thu 12pm noon, EDT). Feel free to join! Anyone can watch, but you need an account to chat.
-[](../wp-content/uploads/2024/05/stream.png)
+[](/wp-content/uploads/2024/05/stream.png)
---
I’ve gotten to the point in Zorchpad development where I’d like to see how the whole thing fits together and if there will be any insurmountable problems. We’re still trying to figure out some things like–will it have one screen or two? What form factor will it be? Will the keyboard fold in half? So I put together a cardboard model.
-[](../wp-content/uploads/2024/05/v0_cardboard_zorchpad.jpg)
+[](/wp-content/uploads/2024/05/v0_cardboard_zorchpad.jpg)
This model has:
- A custom keyboard (total power usage: variable/unknown)
The keyboard is closely modeled off a standard one, for now.
-[](../wp-content/uploads/2024/05/v0_keyboard.jpg)
+[](/wp-content/uploads/2024/05/v0_keyboard.jpg)
Immediately, a few problems pop out:
---
I’ve been designing a keyboard and case for the [zorchpad](https://blog.za3k.com/tag/zorchpad/).
-[](../wp-content/uploads/2024/06/all_parts_color1.png)
+[](/wp-content/uploads/2024/06/all_parts_color1.png)
There are four pieces in the first iteration.
-[](../wp-content/uploads/2024/06/bottom_shell-1.png)
+[](/wp-content/uploads/2024/06/bottom_shell-1.png)
A top bottom base, to enclose the keyboard electronics.
-[](../wp-content/uploads/2024/06/keyboard_plate_green.png)
+[](/wp-content/uploads/2024/06/keyboard_plate_green.png)
A keyboard plate. The keys fit into the holes here. You type on the top, electronics go in the bottom.
-[](../wp-content/uploads/2024/06/top_plate_green.png)
+[](/wp-content/uploads/2024/06/top_plate_green.png)
A top plate. You see the screens, and switches through the cutouts. Otherwise, it keeps the behind-the-scenes wiring out of sight.
-[](../wp-content/uploads/2024/06/top_clamshell_v2.png)
+[](/wp-content/uploads/2024/06/top_clamshell_v2.png)
And finally, the top piece.
-[](../wp-content/uploads/2024/06/printed_assembly.jpg)
+[](/wp-content/uploads/2024/06/printed_assembly.jpg)
Here are the pieces in correct position. In the top will be the screens and battery. The bottom is a keyboard you type on. The whole things is meant to fold on a hinge, much like a laptop.
-[](../wp-content/uploads/2024/06/printed_parts.jpg)
+[](/wp-content/uploads/2024/06/printed_parts.jpg)
The same pieces, spread out.
---
Another update on the zorchpad. We now have a working 16-button keyboard (sadly no QWERTY yet). Here you can see a simple typing program that shows what you type on screen.
-[](../wp-content/uploads/2024/05/zorchpad_keyboard-scaled.jpg)
+[](/wp-content/uploads/2024/05/zorchpad_keyboard-scaled.jpg)
-[](../wp-content/uploads/2024/05/zorchpad_keyboard_zoom.jpg)
+[](/wp-content/uploads/2024/05/zorchpad_keyboard_zoom.jpg)
As mentioned in a [previous post](https://blog.za3k.com/diy-keyboards-and-how-keyboards-work/), the reason we’re using a custom keyboard is to stay to low power usage–much lower than a standard keyboard.