Category Archives: Tiny Player for Mac

Tiny Player for Mac 1.6.3

Recently I had been getting reports that the playlist wasn’t saved properly but I couldn’t reproduce this error. I added tons of extra logging and asked people to send me log files.

Here’s what I discovered:

  • A database migration was failing while renaming a table column
  • …and it would happen only on macOS 10.14 or older
  • …because those systems include an older version of SQLite
  • …which doesn’t support renaming columns the way newer ones do
  • …and I didn’t notice any of this because my old El Capitan Macbook had died
  • …and some versions of the app silently ignored the migration error

It should be fixed now. Takeaways:

  1. Bundle a private copy of SQLite with the app
  2. Get an old Mac Mini with 10.11 and use it for regression testing

Also new in this version: simple feedback form. Open Preferences → Feedback and let me know what’s on your mind. You can attach the application log file & preferences with a simple checkbox.

Happy Ho ho.

Tiny Player for Mac 1.6.0

I’m happy to announce Tiny Player for Mac version 1.6.0. The headline feature of this release is Quick search. Here’s how it works:

  1. Open Preferences → Library and add your music folder(s).
    Files are not copied anywhere or modified.
  2. Press ⌘F to open the search box and start typing
  3. Drag, drop, boom

As always, if you like the app, you can buy me a coffee. Thanks!

Bonus tip: double click a file in search results to select all from the same folder.

An important step for Tiny Player

Both Tiny Player for iOS and Tiny Player for Mac have been rewritten in Swift.

It took a lot of time & effort but it was a necessary step and I’m happy with how it went.

Generally I wanted to keep the app working at the end of each programming session. I started with a few refactorings of the Objective-C code that I knew would make things easier later. Then I rewrote the smaller components and worked my way up to the main view controllers. Those took the most effort and multiple nights to complete.

In the iOS app, there are about 300 lines of Objective-C left, which I’m probably going to keep. They make interfacing with the C-based HTTP server a bit easier. I got rid of the C++ HTML templating code and replaced it with a simpler Swift version because it’s easier to integrate with the rest of the new code base.

The Mac app is 100% Swift, plain and simple. It felt quite nice completing the last bit and deleting all the @objc attributes.

I’m currently testing both apps, looking for regressions. The first release based on  this new codebase probably won’t contain any major user-facing changes. However, the rewrite opens the door to new features and performance & reliability improvements in the future.