Daniel's Weblog
Posts About
Tags Colophon

Tags / Posts

Digitizing Tapes in 2025

My friend ended up with a big box of vidoe tapes from their childhood from VHS, Video8, and MiniDV.

I have been given / volunteered for / chose to digitize these and I’m trying to strike a reasonable balance between cost, quality, and effort.

There is some very interesting work happening with softwared defined decoding in the VHS-Decode project but it’s a little more moving parts and soldering than I want to do right now. Perhaps in a few years when I can buy a single piece of hardware for a few hundred dollars I’ll revisit this.

1. First attempt: Try to get everything via an analog capture card

Camcorder -> Composite / S Video -> Black Magic Intensity Extreme -> Computer

Bought a used BlackMagic Intensity Extreme including a Thunderbolt cable which claims to be able to capture NTSC (fun fact, this is literally the first time I have ever touched a Thunderbolt cable!). These are pretty cheap. I read online that this isn’t great but I hoped it would be Good Enough™️.

It wasn’t!! Lots of black frames and stuttering. The video wasn’t watchable.

2. Second attempt: Convert the MiniDV tapes via FireWire

These should be the easiest. It’s digital data stored on tapes. The camcorder has a FireWire port on it… but I don’t own any devices with a FireWire port.

Apple made a FireWire to Thunderbolt adapter (MD464LL) which I could plug in to my 2014 MacBook Pro with Thunderbolt but they’re pretty pricey on eBay at this point.

2.1 PCIe FireWire card via USB

PCIe FireWire cards are cheap… but I live in an NYC apartment and don’t have computer with a PCIe slot lying around.

Camcorder FireWire -> PCIe FireWire card -> PCIe to M2 Adapter -> USB M2 NVMe Adapter -> Computer

Edit: This doesn’t work

  1. M.2 NVMe to USB adapter $16
  2. M.2 M-Key to PCIe adapter $10
  3. LinksTek 4-Ports 1394A PCIE FireWire 400 card $20

~Total cost $50. I probably should have just bit the bullet and waited for an Apple adapter to pop up for $100 and avoided this horrible chain of converters.

2.2 FireWire -> Thunderbolt adapter

Camcorder FireWire -> Belkin Dock -> Apple Thunderbolt 2 to 3 (USB-C) Adapter -> M1 MacBook Pro

This works!

Instead of the pricey Apple adapter, you can get a Thunderbolt dock with a FireWire port! I got the Belkin Thunderbolt Express Dock F4U055 on eBay for $29 + shipping. It’s big and bulky and requires an external power supply but it worked without any fuss or driver installation. If you have a Mac with a Thunderbolt port you can open iMovie and get to work!

I was able to buy a used Thunderbolt 3 (USB-C) to Thunderbolt 2 adapter cheaply allowing me to use this dock with iMovie and Final Cut Pro X on my M1 Macbook Pro (Sequoia 15.5). Again, no issues!

Warning:
Apple removed support for FireWire in MacOS 26. I assume that will break this setup.

Note:
There doesn’t seem to be much difference between importing videos via FireWire via iMovie and Final Cut Pro X. FCPX offers some options like “Remove Pulldown in video”, “Balance color”, and “Find people” for video and “Fix audio problems”, “Separate mono and group stereo audio”, “remove silent channels” for audio but I’m not using any of them. If you only have iMovie I wouldn’t rush out to buy a copy of FCPX.

3. Step 3: Get the Video8 via another camcorder with Passthrough to FireWire

I want to follow the instructions on page 88 of this manual. All of this to be continued as soon as I find a camcorder with both FireWire passthrough and a TBC on eBay…


Yalc is a better alternative to npm link. At work we package some React code in to Node modules to share them between our internal applications. This often involves updating the modules and then immediately testing them in an application running locally. According to the npm documentation the way to do this is via npm link but I’ve always struggled with it.

I’m not going to describe my issues in details because other people have encountered the same set of problems:

I wish I could give credit to my introduction to yalc but I can’t recall at this point. I strongly recommend it if you’re struggling with npm link.


GoPro Manual File Recovery I’ve never actually used any of the labs firmware but I found this tidbit interesting for repairing an improperly closed file. Reproduced here for posterity:

# Useful Tip - Manual File Recovery

So you have a corrupted/unclosed GoPro file. You crashed your drone, and the battery was disconnected before the file was closed, or you ran your car wheel over a recording GoPro, crushing it. If your SD Card survived, the file is likely recoverable using another GoPro.

0. You need any working GoPro camera, although the same model and firmware version is advised. If you’re using Labs Firmware and are using Altered file naming (this page’s Labs feature), reset the filenaming to the default.
1. Copy the file you want to repair to your PC
2. With a working GoPro, record for 10+ seconds then pull the power or battery, while still recording. You want an intentionally unclosed file. The camera will remember it needs to repair only this file
3. Add that SD Card to your PC directly (not via camera USB)
4. Copy the filename of the last MP4 captured. e.g. “GX010358.MP4”
5. Delete this dummy file from the SD Card
6. Add your previous corrupted (unclosed) file to the SD card, and rename it to the copied name. e.g. If your filename was “Drone03_GX010201.MP4”, or just “GH010330.MP4”, rename it to “GX010358.MP4” (your last MP4 filename)
7. Insert the SD Card with your corrupted file back into the working GoPro camera
8. Power on the camera, and the “last” file will be repaired
9. Once the camera completes the file repair process, you can eject the SD Card and backup and play the now repaired file

Compatibility: Labs enabled HERO8, HERO9, HERO10, HERO11, HERO12, HERO13, MAX and BONES

Manual Scrolling Capture (Shottr) I’ve been a convert to Shottr.cc for screenshots for a few years now but I’ve been frusterated that a MacOS update broke the scrolling capture feature recently. I looked around to see if there were any alternatives but was very pleased to find that there is a secret option where you manually scroll. Good enough for me!

To enable manual scrolling in Shottr, first of all, make sure that you run Shottr v1.8.1 or newer (you could check in menu Shottr → About). When it’s done, enter this line in your browser, and hit enter: shottr://settings/scrolling/manual/enable


AlarmKit iOS 26 finally lets apps interact with the system alarms and timers.


Fickle Friends Tour Diary I’m a big fan and today they’re releasing a new, self-titled album.

In celebration of that here’s an interview by Emily May and a collection of photos from various photographers from their first and only US tour in 2018 (Come back soon please!!!). Each photographer has their own style and each venue looks slightly different. I think they all work together nicely and convey the band moving from town to town.


where not in (Hugo) via jmooring I’ve been pulling my hair out over this for a little while, how do you write where not in in Hugo?

The docs say you can do it but I was never able to make it work.

Shout out to Joe Mooring on the Hugo forums for this solution:

  {{ $p1 := where site.RegularPages "Type" "in" site.Params.mainSections }}
  {{ $p2 := where $p1 "Params.categories" "intersect" (slice "moments" "thinks") }}
  {{ $p := $p1 | complement $p2 }}

The Faroes A great photo travelogue by Nagarjuna of their trip. Some of the later pictures of people standing on top of bluffs that appear to go straight down in to the ocean really poke at my fear of heights.

Warning: contains modern James Bond movie spoilers.


NYC $20 Dinner Map (Paywall) I’ve enjoyed Hellgate’s irreverant but thorough coverage of NYC for a while and they finally converted me to a paying member with their current 34% off first-year sale. I really like this map of inexpensive resturants.


Fallback Font Generator (via). This is a tool to help tweak system fonts to match the sizing of your fancy font and reduce Cumulative Layout Shift (CLS) when your fancy font finally loads. Built by Brian Louis Ramirez