Hack-A-Day 2023 is done

Hack-A-Day 2023 is complete. I did 20 projects in 30 days. Pretty good considering I got a new job and moved!

The overview of the month is here and highly recommended.

I plan to do a little more followup this year than last. Today’s last-minute fixes:

  • Perquackey (01) works on phones, tablets, and with the mouse. There’s an easter egg that displays any words you missed at the end.
  • Typewriter (10) saves progress, and lets you type more than 1 page of content.
  • Screensaver (12) works on more screen sizes, including phones.
  • Synth (14) looks better on a phone-sized display.
  • Stuff.md (23) has an example from the database
  • Timelapse (24) has a partial video
  • Speed Reading (29) works better on a phone. It also saves your progress.
  • Music of the Spheres (30) works on a phone. It’s also louder.

Hack-A-Day, Day 30: Music of the (Celestial) Spheres

Hack-a-Day is a challenge to complete ~30 fun new projects in 30 days. In my case, I aimed for 20, because I knew I was getting a job and moving. I just barely made it with this last entry, a collaboration with nsh.

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, code is on github.

Hack-A-Day, Day 28: 90s Sitcom

Two friends and I wrote the intro to “Pint-Sized”, a 90s sitcom that never existed.

We used DALL-E and stable diffusion for images, Photopea to add captions, and Google’s AI Test Kitchen for the backing music. Cheers were added with audacity. The video was edited together with ffmpeg.

Credits: za3k, stetson blake, jeremy mcintyre

Hack-A-Day, Day 23: Packing

I’m moving, so I have to pack. I thought I’d make it fun with two projects.

First, I entered everything I was packing into a text file, stuff.md. That way, I can find stuff later. I have two friends who have done something like this, so I’m curious how it will go for me. Here is a sample:

Box 01 - banker
- USB Receipt Printer - in trapezoid box
- Thinkpad 460 Charger (x2) - cardboard box (x2)
- Cardboard box "eink"
    - eink communications converter for 7.5" eink display
    - Piece of fiberglass sized for 7.5" eink display
    - 1.54" eink display 152z152px never used, with notes on yellow paper
- Airtec electric duster (AC) - cardboard box
- Tiny UPS for Raspberry Pi - cardboard box
- Wireless receipt printer - cardboard box
- Playstation Eye (x2) - cardboard box
- Mini-router (2 eth, 1 usb), unconfigured - in cardboard box
- Pipe-sealing tape for vacuum - loose
- Multimeter, Kaiweets brand - in cloth case
- $1 in pennies, and penny sleeves - plastic bag
- Engraving pen - loose metal case
- LED Light bulbs (one white, one red) - cardboard box

Box 02 - banker
- HDD Copier - cardboard box
- HDD Dock (x2) - cardboard box (x2)
- Butane soldering iron - metal box
- Doxie Go adapters - loose plastic bag
- "Faces" M5Stack development. Stacking keyboard and screen, etc. - plastic case
+ Magnetic metal parts tray
+ Neodynium magnets, two disc sizes - Loose box
+ Receipt paper roll - loose

Box 03 - banker
- empty

Second, I took a time lapse video of packing. I wish I had time-lapsed moving in at my current place, but I just wasn’t set up for it. Sadly, my camera battery died after 90 minutes, so I only have a very short video. Next time I’ll plug in a power cable. Here is a short example video.

Both are much too personal for me to post on the web in full.

Hack-a-Day, Day 22: Homemade PCBs

Today I learned how to make PCBs. I didn’t invent anything here, this is all pretty well known by the PCB-making community, but it’s not well-known to me. So I taught myself a bit!

The first part was the design an electronic circuit. I decided I was short on time, so I grabbed an existing schematic.

Next, I downloaded KiCAD, and recreated the circuit there. I found this video tutorial very helpful to learn kicad.

Next, I made the actual PCB layout.

To my surprise, after a little jiggling I got it down to a one-layer design.

That means home-printing would be much easier. No having to line up the two sides carefully.

I printed out the image on paper (backwards) on my toner printer, and taped it to the copper-clad PCBs.

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.

Next, I tried the standard advice–sand the PCBs (I used 320 grit) and use glossy paper. This time, both pieces of paper stuck very well. I was wary about the iron coming off again, so I just left it on place on the highest heat–this worked fine for adhesion, but I had to iron out wrinkles at the end. The laminated piece had lose edges, while the ironed piece was on there totally flat.

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.

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.

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.

Hack-A-Day, Day 20: Hillsfar Lockpicking Spritesheet

For today’s hack-a-day, I meant to clone the Hillsfar lockpicking minigame. Instead, I spent all day just extracting the sprites. But I had a nice chill time, so it was great.

Edit: See the updated post for the finished game.

Here’s the original minigame:

Here’s my spritesheet:

I made it by splitting up screenshots:

Hack-A-Day, Day 18: A.I. Grab-bag

Today I got a variety of modern A.I. tools to work in a python library. This one is mostly install instructions, but it was useful for me, at least.

I took a day off after.

My conclusions were:

  • Speech synthesis runs at 400x realtime on CPU.
  • Speech recognition runs at 0.4x realtime on CPU, 60x realtime on GPU.
  • Generating chat at 0.05x – 0.5x realtime (3-30 wpm) on GPU.

I didn’t get image generation working on my allotted time.