Take-N-Go

Date

I picked up an Apple QuickTake earlier this year. I’ve been having fun with it, but my process to get the pictures on to a modern machine was a little tedious.

  1. Pull the images on to a vintage Mac.
  2. Copy the images to a Netatalk server.
  3. Copy the images via Samba to a modern Mac.
  4. Run a shell script to convert the images to JPEG.
  5. Import the photos in to the Photos app.
  6. Adjust the time and location.

While steps 1-3 can’t be helped, and running shell scripts is fun, I decided to over-engineer a solution instead. Take-N-Go is a SwiftUI app that wraps libraw to convert the images. You set the time and location of the images and then either export them to file or import them to the Photos app.

Take-N-Go
Take-N-Go

Technical Notes

I opted to target just macOS 27. This let me use the new reorderable() APIs. These work, but they can cause some odd animations with multiple selections.

I also had drag-n-drop support from the Finder, but that conflicted with reorderable(). I couldn’t find a good solution to mix both, so I opted for reordering.

Dragging files on to the app icon works, but there was some weird behavior where the window would seemingly stutter resizing over and over. If you use SwiftUI’s onOpenURL(perform:), it can only handle 1-2 files and the rest are ignored. If you use an AppDelegete to handle the open, you get the weird stutter. But if you use both, it seems to fix it. You are handling URLs in two places, but it works.


Score Card 4.0.3 Released

Date

Score Card 4.0.3 adds design improvements to better fit with iOS 26. This is a subtle change and also keeps most of the design elements for iOS 18 the same.

Of note, the numeric keyboard is styled closer to modern iOS’s keyboard. The settings menu from either game type is now a standard popup menu. For iOS 26, a lot of the buttons were glass-ified.

The app also has a new icon, thanks to Icon Composer and Inkscape.

Check out the app on the App Store.




Hiking for Advent of Code 2024 - Day 10

Date

Day 10 of Advent of Code is a simple hike up a mountain. This visualization is just a representation of the searching algorithm, so a few more spaces are filled in that what represents a hiking trail.

Hiking

Lessons Learned

For the past couple of years, I always used SIMD4<Float> to represent a color, since that is what is directly used by Metal. That’s always tricky because it’s hard to eyeball what color something is when looking at SIMD4<Float>(0.25, 0.75, 0.01, 1.0).

I added an extension for using native colors directly, so I can instead ask for NativeColor.systemGreen.simd. Under the hood, NativeColor is just and alias for UIColor or NSColor.