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.

Hack-A-Day, Day 13: Blueprint Maker

Hack-A-Day is a challenge to try and finish 30 projects in 30 days in November.

Today I tried to write a tool to make a floorplan. You can try it here. As usual the source code is on github.

This was an ambitious project for one day, and I didn’t finish everything I wanted. My original goal was to support

  • drawing and erasing rectangles (done)
  • adding, editing, deleting, and moving text labels (not done)
  • adding, deleting, and moving icons (mostly not done)
  • autosave (done)
  • undo support (done)
  • zoom and pan (not done)
  • sharing finished projects (stretch goal, not done)

What I did do was pleasantly high-quality, and I made pretty good progress.