Showing posts with label data lock. Show all posts
Showing posts with label data lock. Show all posts

Thursday, July 06, 2023

Converting from Aperture to Apple Photos: Personal results Jan 2022 through March 2024.

Preface

This blog post was written during conversion of my Aperture local and Photos.app iCloud (System) Libraries to a single integrated Photos.app Library. The first post is from Jan 2022 and I finished the process on 3/7/2024.

One of the very last things I discovered was that Aperture will run on Apple Silicon without Retroactive. I've tested under Ventura but not Sonoma. That is so weird. I have my old Aperture Library and a copy of Aperture.app on an external SSD and if I have post-conversion concerns it's a great help to browse the original Aperture Library.

The post is more-or-less made up of sequential updates. Only a desperate person or an AI would have the patience to read and use the material here. If you are reading this I presume. you are desperate. Some of the things described here for Photos.app migration are also necessary for migration to Adobe Lightroom.

Many Apple have mercy on your soul.

--------------------

I've begun early experiments in converting from Aperture to Apple photos. I've not found any good user descriptions of the process. This post will be updated as I do experiments or use the results of experiments to refine my searches.

Before beginning Jason Snell's freely available book chapter on Aperture conversion is a quick read. I also suggest reviewing a fine photofocus post on moving to Lightroom which might be less of an ordeal than migrating to Photos. I chose Photos because of my distrust of Adobe and my knowledge that any commercial photo management solutions is a hard and eternal lock-in. [1]

Trial 1/9/2022

For my first trial I created a new project from a single JPG image and one version using Aperture under Mojave. I copied it to an Intel Air running Monterey 12.1 and opened it in Photos.

Photos said it could not open the Aperture library. It did not say why.

I then regenerated full sized previews per Apple's directions and I tried again. This time the import proceeded. I could see the Version of my original photo but not the original. I then chose Revert to Original and Photos displayed the original image. Then I tried "Undo Revert" but that did nothing. My Version was lost.

Opening the package I could see a file in the originals folder named with a GUID and a .jpeg extension. It had a size of 2.3MB which is the size of the Aperture original.

I tried to repeat the process but Photos declared that "the content of the Aperture library ... has already been migrated to Photos". The famous léonie of Apple forums explained - the conversion process changes the extension to "migratedphotolibrary", I renamed the extension to .photolibrary and I was able to repeat the import process.

On repeating I saw my Version image. I then tried to edit it and got this message:

"Cannot Start Editing Photos cannot edit this image because it uses an unsupported format"

I explored the new Photos library (Package Contents) and could not find any JPG other than my original. I am puzzled as to how Photos generated the version I could see.

There does not appear to be any way to see the original image other than by reverting to original -- which cannot be undone. There also doesn't seen to be any indication that an original exists! (This appears to be a global Photos problem however).

If one wanted to see both a Version and the Original one would need to export the latests version then open that in Preview, then in Photos revert to Original, and export that. Then compare in Preview.

Update 3/31/2023

I finally resolved the stacks Aperture created when I migrated from iPhotos (original image and iPhoto edited).  The trick was to find all photos with keyword iPhoto Externally Edited (or similar) then save them to an album then in that album remove any that weren't stacked then unstack, delete externally edited, and re-edit originals (non-destructive).

Then I did "Reprocess Originals" for about 8000 RAW images; about 6,000 were reprocessed and about 2,000 didn't need it. That leads Aperture to slowly regenerate previous/thumbnails. It's been about 24h and that is mostly done, I find that I have to periodically pause the task then restart Aperture (or my laptop) and resume. If I really need to regenerate all full sized previews that processing may take a week or so.

Update Preview is also very slow, it in fact may the rate limiting step since I assume "Reprocess Originals" secondarily also updates previews.

Apple's Published Recommendation (for Mojave)

Choose Aperture > Preferences, click the Previews tab, then change the Photo Preview setting to Don't Limit. Close the preferences window.

From the list of projects in the Library inspector, select all of your projects. For example, click the first project listed, then press and hold the Shift key while clicking the last project.

Click the Browser layout button in the toolbar, so that all photos are shown as thumbnails.

Choose Edit > Select All to select all of your photos.

Press and hold the Option key, then choose Photos > Generate Previews.

Aperture now generates full-size previews for every photo in your library. To follow its progress, choose Window > Show Activity from the menu bar. Quit Aperture when processing is complete.

Open the Photos app, then choose your Aperture library when prompted, as pictured above. If you aren't prompted to choose a library, press and hold the Option key while opening Photos. If your Aperture library isn’t listed, click Other Library, then locate and choose your library.

In my testing "Generate Previews" goes very quickly through JPEG originals. DNG images take longer. RAW images may take longer but I think previews were done when "reprocess originals" was run.

I'm going to partition my images by types (including other) to better understand this step. I think unstacking all photos is also wise.

Update 4/8/2023

In testing I found Photos.app (Monterey) only needs Aperture previews for edited images. I've already created previews for all RAW images. Plan is:

  1. Remove previews for all images without adjustments including RAW.
  2. Regenerate high res images for all images that have had adjustments (I already did RAW so don't need to redo those). I think quick view requires previews so I may be able to use that feature to confirm which have previews and which don't.
Update 7/4/2023

What happens to metadata during conversion. Aperture claims it can write IPTC data to images that can handle it. There are many oddball IPTC metadata tags, I've listed only the ones I sometimes used below. Some of these conclusions are based on studying the Photos.app SQLite database.

[3/27/2024: I learned more much later. iOS does not provide access to Photo Titles, only macOS Photos.app shows them (I'm too tired to be angry about this). Captions in both cases are seen only in the Information screen. Contrary to what was documented by Apple below Photos.app uses the term Caption, not "Photos Description". Were I starting over I'd have copied the Title to Caption when I had no existing Caption value set.]

Aperture                   Photos

Version Name               There's no documentation on how
                           Photos is handling Version Name and 
                           suspect it varies by macOS release.
                           In Monterey my test show the Version 
                           Name is at least sometimes used as the               
                           Photos.title rather than the 
                           Aperture title or the filename.
Filename                   Copied to Photos
Title (IPTC)               Copied to Photos
Caption                    Copied as Photos Description
Keywords                   Hierarchy (path) flattened, 
                           and each string becomes a kw
Project Name               Becomes an album (iPhoto Events)
Project Path               Unknown at this time.
Flag                       Not converted
Date                       Seems to use Aperture date
Badges                     Not converted
Location                   This is saved but location name is lost
Named faces                Saved
Star rating                Become keywords (1 star, 2 star)
Headline (IPTC)            Lost but can write to JPEG
Location (IPTC)            Lost but can write to JPEG
City (IPTC)                Lost but can write to JPEG
Creator (IPTC)             Lost but can write to JPEG
Date Created               Unknown at this time
Date (adjusted vs. file date) Image date is used
Last Modified Date        Not converted

I was able to retrieve Apple's documentation from the wayback machine (https://web.archive.org/web/20190515155043/https://support.apple.com/en-us/HT204478) to see how conversion proceeds. Here's a plain text version:

Photos and organization:
Photos and movies migrate without changes. Photos migrate with the adjustments and filters that you applied in Aperture. You can't change the adjustments in Photos, but you can revert to the original image.
Projects and subfolders migrate to folders that are labeled "Aperture Projects" and "iPhoto Events" in the Albums view.
Photos preserves albums.
Photos preserves most Smart Albums. Smart Albums with selection criteria that Photos doesn't support usually migrate to Smart Albums with "(modified)" added to the Smart Album name. If Photos doesn't support any of the Smart Album criteria, it doesn't migrate the Smart Album.
Photo books migrate to Albums.
Photos preserves slideshows. If a slideshow theme isn't available in Photos, it uses the default Photos slideshow theme. 
Photos preserves Faces data.
Keywords and other metadata: 
Photos preserves keywords.
Photos preserves user-defined titles. Images without user-defined titles show as "untitled" in Photos.
Star ratings migrate as similar keywords in Photos, such as "1 Star," "2 Stars," and so on.
Flagged images migrate with the keyword "Flagged" and appear in the "Flagged" Smart Album in the Albums view.
Color labels migrate as keywords, such as "Green" and "Purple."
Photos preserves captions.
Most metadata is preserved in Photos. Some IPTC metadata, including Copyright, won't appear in Photos. This metadata is still associated with the image, and you'll still see it in other applications that show IPTC metadata, like iPhoto and Aperture.
Custom metadata fields don't migrate to Photos. 

It's possible to use AppleScript to copy Version Name to Title. As of 7/2023 the following script was copied from Github

tell application "Aperture"

  set selectedImages to (get selection)

  if selectedImages is {} then

    error "Please select an image."

  else

    repeat with i from 1 to count of selectedImages

      tell library 1

        tell item i of selectedImages

          set versionName to (get value of other tag "VersionName") as string

          log versionName

          make new IPTC tag with properties {name:"ObjectName", value:versionName}

        end tell

      end tell

    end repeat

  end if

end tell

These were PhotoJoseph's 2014 directions for use of this AppleScript

Launch AppleScript Editor and create a new script (File > New).

Paste your clipboard contents into the new window, and click the Compile button to ensure it's all good. If not, just make sure you've copy and pasted all the content from the github page.

Save the AppleScript to the folder ~/Library/Scripts/Applications/Aperture (if any of those folders don't already exist, just create them). Name it something clever like “Copy Version Name to Title field”.

Open the AppleScript Editor preferences and ensure that “Show Script menu in menu bar” is enabled. Without that, you won't be able to access the script from within Aperture. [I think there's a Mojave bug such that this setting may not stick.]

On my not-too-fast Air it takes about 2.5 minutes to process 1000 images. I've set it to do 2000 at a time and check back after 5 minutes. I tried doing 8,000 at a time but that seems to cause Script Editor to hang so the maximum is between 2000 and 8000.

For best performance sort list view by Version name (since it doesn't change), show the Info panel, start at the bottom and select above (2000). The Info panel updates when the script reaches the last row selected.

Update 1/17/2024 - A retrospective note on keywords

This post is basically a chronologic dump of my Aperture slog, but I'm going to stick this update back in time. After I was done with the major migration I had a lot of keyword cleanup to do. Photos can't merge keywords, so this was tedious. Photos also can't handle Aperture keyword hierarchies, it only keeps the keyword itself. Prior to migration it's best to flatten the hierarchy and look for keywords to merge (variation in case, etc).

Update 7/6/2023

From an Apple Discussion post I learned that Apple's conversion process will write the output to the same drive as the input. A tech article on moving the photo library is also helpful to review. Because of the way macOS hard links work (certainly in Monterey and later) the output takes up much less space than one would expect.

I'll be working with a 2TB USB-C/Thunderbolt drive so this is good news.

Fat Cat Software's PowerPhotos also does Aperture conversion. I own it (it mitigates the pain of losing Aperture) so I asked the author about metadata. Note PowerPhotos can browse the original Aperture Library and do conversion even on versions of macOS that don't support Aperture. Here's his response:

Most of that metadata will come through as expected using PowerPhotos. The things I would note:

Version name won't be retained

Aperture projects are stored in the database analogous to iPhoto events. The PowerPhotos conversion mimics Photos' previous migration process, and creates a folder named "iPhoto Events" in the album list, and creates an album for each event/project coming from the source library.

Dates should be retained, though in certain cases there can be oddities with time zones. When you add the Aperture library to PowerPhotos' library list though, you can use the View > Show Subtitle > Date menu item to show the photos' dates and browse through them to see if PowerPhotos is reading them as expected.

For locations, the latitude/longitude will always be retained, but if you had assigned any custom names to particular places in Aperture (e.g. "My House" or whatever), those won't come across.

Star ratings become keywords just like in Photos migration

You're correct that those other IPTC fields will be ignored

Photo stacks should appear as multiple individual photos in PowerPhotos, but again you can double check by browsing through the library first in PowerPhotos to see how they show up.

PowerPhotos is really designed to migrate iPhoto Libraries, it only works on Aperture because they shared a common database. Parts of Aperture that are not supported in iPhotos don't migrate. This includes folder relationships (nested folders are flattened) and all Folder/Event relations. Events end up in a flat list.

Update 7/10/2023 iPhoto Externally Edited Cleanup

I have reviewed all the photos that were edited in early versions of iPhoto (previously I'd done a key subset of these); these were stored in Aperture as stacks with the edited version as the "stack pick". I unstacked and either deleted the non-pick or reedited the original and deleted the edited image. There were about a thousand of these so this took a lot of work.

I have learned that stacks will become separate photos in Photos app with the keyword "stack pick" assigned to the pick. 

Version name assigned to title when title empty

It took about 30-40 repeat applications of the above referenced AppleScript but all empty titles now hold the version name. I could only do about 2,500 images at a time without crashing Aperture and I went through about 58,000 images.

7/18/2023

Consolidate referenced files

I created a smart album of all referenced files and then consolidated them into the database.

7/19/2023

Update or regenerate previews of all images that Aperture identifies as adjusted. This took a very long time to do for RAW, JPEG was fast. Several hundred were identified as needing updated previews. Images I have not adjusted I'm ok with Photos managing with a preview. Before you do the conversion step redo "update previews"; if previews are current it should go quickly. In my case however, after a database rebuild, some had to be redone. I don't know if that was user error or something weird.

Identify other file types: At one time iPhoto/Aperture could hold audio files and even PDFs. Standard Aperture search shows audio files, I exported those and delete date originals. Search does not support PDF file types but I searched on "PDF" and found 5 images. I removed these from Aperture, a few I converted to JPEG and restored to Aperture. In my testing JPEG2000 images were supported as well PSDs, but I converted the latter to JPEG anyway.

Update 7/25/2023

Preparing for merger with existing Apple System Photo Library. I submitted my plan to Apple Discussions for review, basically I plan to make my converted Aperture Library the Apple System Photo Library which should merge with the smaller older iCloud Photo Library I have now.

Photos Preparation (Current System Photo Library)

  • Download all images to my Apple System Photo Library. When you change the download setting in preferences Photos will start bringing down the image files. You can switch to Moments and scroll to bottom of screen to see a transfer progress dialog. A mere 2000 files takes an hour or more on an Intel machine. (Later I did this on an M2 where conversion of a 50,000 image library takes about 3h; that's then followed by Photos' processing that can take days. The conversion is probably 10 times faster on an M2 though.)
  • Backup my current Photo Library
  • Remove images from the Photo Library that have been exported previously to Aperture (I tagged them with keyword) then purge them from iCloud. Allow sync to happen
  • Remove albums that are empty, in general cleanup of the Photo Library
Update 7/26/2023

Repair Library Database: Cmd-Opt on launch gives the option to repair the Aperture Library Database. This is a good measure to make prior to conversion. You can also rebuild the database. In my testing rebuild seemed to work well and I did not have to regenerate Previews for RAW images. It may be wise to do a full database rebuild followed by a database Repair prior to conversion. Look for a Recovery Album to see if anything shows up.

Identify Problematic Video: I have been told it will take weeks to synchronize the ApertureConverted Photos Library. Some old videos may cause the process to hang.  A support article has some advice. As of 7/2023 though I exported the originals of 170 AVI movies and after a bit of experimentation it seemed as though most were fine in both Photos and iCloud. Only 4 that didn't show any preview icon in the Finder needed to be opened in QuickTime ("converted") then saved as .MOV and then they worked. So I will proceed for now without additional video work.

I come across a 2012 blog post that shows I went through the same movie/ video transcoding problem converting from iPhoto to Aperture.  I see that in 2012 I could use QuickTime to change the video file wrapper from ?? to MOV without transcoding and that appears to be what I did for 4 small AVI files.

7/29/2023 - Legacy Media

A comment by léonie (192K "points" on Apple Discussions, I wonder if it's a single person!) sent me to their article on How to Weed out Legacy Media in Photos. Here I see that support for PDFs and audio files was removed, so my intuition to pull those was correct. The problematic items query is excellent. I'm copying his shared image here for posterity. Some of these queries can be done in Aperture but "unable to upload" is Photos.


In Aperture I used this query. I was surprised to find some PSDs and some jp2! However, in my testing Photos including iCloud sync handled both file types (added externally, not through an import).


7/29/2023 - 600 items missing?

UPDATE: I've left this in place but you can skip to the next update for now

I did a test conversion, only took 3h on the M2 Air. Sadly there are 600 fewer items in Photos than in Aperture. I'll document my investigations here using friggin' spaces and a fixed width font because tables aren't supported anywhere any more...

File Type             Aperture       Photos
RAW                     7333                7,333
JPG/JPEG           48,576           48,031

After a full rebuild of the database the JPEG count remained 48,576 and total count was 57,854. After import to photos the result was again 48,031 -- so it's very consistent.

I'm starting my research by focusing on the missing JPG/JPEG. 

It's possible to get a list of all filenames in Photos Library using the Photos SQLite database (see also and a forensics post.) [Update: Simon Willison has the best post on this, including a link to the dog sheep-photos tool and osxphotos]

Sadly, based on my Google Searches and ChatGPT questions there's no way to do this in Aperture. However you can use Aperture's metadata export to create a tab delimited list of some metadata for a list of Aperture images. (Most of the columns are null and I found rows where the title in the list didn't match the title in Aperture or in Photos but it was the best I could do.)

Once I used BBEdit to eliminate duplicates I used an online tool, https://comparetwolists.com, to show me what was in the Aperture list but not in the Photos list. I took that result of 127 rows and then looked for a sample in Photos. Most of the time I could find them, though in at least one instance Photos was using the Aperture Version Name or File Name rather than the Title. I wondered if there was a length limit enforced during conversion (Aperture and Photos have no documented Title length limits.) but I don't think that's the case. I'm continuing to investigate.

Update 8/25/2023: Image count discrepancy - Bursts and Live Images

At least part of the above image count discrepancy is because of the way iPhone "Live Photos" and "Bursts" work. In both cases an Apple proprietary metadata identifier is used to tie files together. In a "Live Photo" it's the assetIdentifier, in a burst it's the burst's BurstUUID. These metadata values are set by iPhone when the image files are created. Aperture doesn't know about these identifiers so in Aperture images that were part of burst and files that make up a Live Photo are all counted separately. On import to Photos they are recognized and the "burst" is counted as one image. If you know how to expand a burst in Photos (it's actually less obvious than I'd like) you'll see the images are still there.

After additional date partitioning to compare mismatches of a limited number of images over a problem date range I found no other causes of image mismatch. I decided the conversion process was not losing images.

Update 8/28/2023: Do all my images have previews?

After all the work done to get reapply legacy (ancient) iPhoto edits I want to be sure every image that needs a preview has one. The gear menu has for the Library has a menu item "Maintain previews for all projects". Despite my preview work it showed a dashed line rather than a check mark. When I chose it about 1600 images were identified as needing previews and those were generated. When I selected ALL 54,000 images and chose "update previews" 1387 were identified as needing a preview update. Even thought those seemed to update normally when I repeated "update previews" I got the same number.

So there's something wrong there. I wasn't able to find out what however. I checked all images "with adjustments" and preview update reported they were all current. I then did a database repair, which caused regeneration of thousands of previews and thumbnails. Despite preview update for all photos always identified 1387 items as needing a preview update. I decided to just live with this.

Update 8/30/2023: Conversion day attempt (did not succeed)

I moved the external SSD with my Aperture Library on it to my Monterey M2 Air and copied it to the Air's external SSD. Then I ran the conversion for the 56K images, it took about 2-3 hours. When completed I could see I had about 170 burst images; that fits the "missing" 600 photos. I'll be going through them and choosing images to save while removing the others.

I then turned off Photos iCloud sync on my legacy Mojave machine and, after confirming I had my copy on the new machine and backups, I deleted my Mojave Photos.app Library. I'll leave that machine on Monterey for now and Aperture will be untouched.

The next step will be to merge my converted Photos.Aperture Library into my existing Photos.System Library. I will wait until Photos is done processing the Photos.Aperture Library; that may take a day or so. There will be backups.

Update 9/12/2023: Burst delete bug (see Apple Discussion)

There's a bug in Photos Monterey and Photos Ventura with managing "Burst" media images generated from an iPhone and stored in Aperture. It may be related to changing either the file name or version name in Aperture. I suspect it's related to version name changes.

The Burst appears to open normally, but count of selected images may be anything from 1 to all and it may not change when an image is selected. Essentially Photos doesn't correctly match the user's selection (user interface) to its internal list of the selected image. I've seen all of the following:
  1. Nothing happens. You select images, click done and you don't get the usual save all vs save selected dialog.
  2. You get the save all or save selected dialog but whatever happens next is unpredictable. Some may be saved. In some cases, perhaps most often, all images in the stack simply disappear. The "recently removed" folder does not appear and the images are not in the system trash. If you rebuild the Photos database they may reappear.
I was able to demonstrate the bug to Apple Level II media support. They confirmed it as an "issue" but said there was no hope of a fix. I was able to show it happen in a Library converted by Monterey in Monterey and also when moving the same Library to a Ventura machine.

I have not found a workaround. I may work within Aperture to identify the bursts there and remove all but one image from each burst. I may try to use ExifTools to remove the MakerNotes (or just Burst ID) from those that remain in Aperture.

[In later testing I tried using the native Photos.app import tool to convert my large Aperture Library. It failed midway through repeatedly. So PowerPhotos became my only option.]

Update 9/12/2023: Eliminating Bursts

From Photos Media Bursts folder I identified the date of oldest and latest burst. Then in Aperture I created a query for that date range restricted to .JPG and camera has iPhone. Then I set Aperture to auto-stack any images .09 seconds apart. I then had about 6,900 images to review. I put those that had a stack count > 0 into a "Probably Bursts" folder. This took about 20 minutes to do 1/3 of the work.

Once I've done a couple of scans this way I'll remove all but one image from each burst. Then I hope to use ExifTools to remove the Burst ID.

Update 9/13/2023: Thoughts on eliminating the burst problem

Ben Smithett wrote a 2020 article on how Apple implemented bursts using Exif.Photo.MakerNote: "key 11 ⁠— this UUID is shared by all photos taken in a single iPhone burst and is what the Photos app uses to identify and group multiple photos into a single burst." He mentions an iOS app - The Photo Investigator and this post. He provides a set of examples for making a set of images appear as a Burst in Photos.app:

exiftool -tagsfromfile ./iphone_burst.jpeg -makernotes ./target_photos
exiftool -G ./target_photos/gopro_burst_1.JPG
exiftool -BurstUUID="$(uuidgen)" ./target_photos -overwrite_original_in_place
exiftool -BurstUUID ./target_photos

I need to look at the MakerNote for a non-Burst iPhone image to see if I need to remove key 11 or set it to some non-burst value (ex: 0, NULL, etc).

My tentative plan of attach:
  1. In Aperture eliminate all but one image for each burst (as above).
  2. Use keywords to tag these images.
  3. Revert to original and remove previews.
  4. Review version names and update filenames to match version names with a distinctive filename suffix like _iPhoneBurst.
  5. Export as test library
  6. In test library open package and view folders of masters and identify images.
  7. In test library run ExifTools to make changes as needed across these files using the -r option. I believe I will need to "clear" key 11 with something like [exiftool -TAG= /path/to/files/]. The -r option is not compatible with wildcard filenames but there's an if option: -if '$Filename=~/_AppleBurst/'.
  8. Move Aperture test library to Monterey machine and convert to Photos Library.
  9. Review behavior.
Update 9/15/2023 - ExifTools
Progress today:
  1. Created test library 
  2. Installed ExifTools DMG, no Perl install required
  3. Found that iPhone non-burst images lack the BurstUUID Tag completely
  4. ExifTools can't remove individual tags in MakerNotes but it's possible to remove the entire MakerNotes: exiftool -MakerNotes= noMakerNotes.jpg
  5. Created a test library and tried converting that on Monterey Photos. I found the same bugs as before with burst photos but the image I removed the MakerNotes from shows as a regular image. Sadly the burst version wasn't imported, perhaps because Photos.app considered it to be a duplicate and excluded the entire burst. See a later comment on duplicate photos and bursts.
My current version of the ExifTool command is:

exiftool -r -overwrite_original -P -progress -MakerNotes= -if '$BurstUUID ne "" ' ./TestSuite.aplibrary 

The -r flag means it will recurse over all subdirectories of the TestSuite Aperture Library, overwrite_orginal manes that the original image is removed, -P keeps the modification date of the original, -progress gives me a list of changed files, -MarkNotes= means the MakerNotes group of tags is removed, the -if statement tests for presence of the BurstUUID. 

The -progress output can be copied out of terminal and with a bit of regex I was able to extract file names (not guaranteed unique!) for 1,564 images stored in Aperture that had a BurstUUID.

You want to remove the MakerNotes from both images and previews. You do want to create previews for every image despite my earlier experiments with not creating previews for non-edited images.

Despite removing the MakerNotes about 68 images still rendered as Bursts. On inspection with ExifTools they don't appear to have MakerNotes and thus no BurstUUID visible to ExifTool. I am mystified. My best guess (see my stackoverflow comment) is that Aperture cached the EXIF data and Photos read it from that cache during the import process.


Update 9/15/2023 - Photos Conversion Duplicate Delete Bug

In a test library I had two versions of a single image in a test album. One had the MakerNotes removed. They also had different titles. After converting to Photos the image with MakerNotes removed was missing, but it's container album said two image were present. After rebuilding the Photos database the album reported one image present.

I don't know if this is "normal" (albeit buggy) Photos behavior or if it's an indirect result of the Burst Bug. I fear it is normal behavior for converting an Aperture Library; that metadata is ignored and perhaps edits and versions are also ignored.

On the other hand with non-Burst images in my testing Photos did retain multiple Aperture Versions from one Master image as long as the images differed.

Update 9/17/2023 PowerPhotos Migration of an Aperture Library

My sanity feels restored. I used PowerPhotos to convert my Aperture Library. This can work with post-Monterey macOS as well as Monterey. The results are reassuring.

PowerPhotos reported 97 images in my Aperture library and 97 images in the post-conversion Photos Library. When I opened Photos it showed 87 images and 10 videos. For the first time the counts agreed!

Most importantly - NO BURSTS. All the burst images are now independent. So there wasn't anything in the Burst images or the Previews; the (flawed) resurrection of the Bursts in the absence of the MakerNotes must have been related to copying some unknown data source (independent cache of EXIF data?) from Aperture. (I did not find BurstUUID in the Aperture.xml file stored in the Photos package by the Photos conversion process.)

I am further evaluating this process but my initial take is that PowerPhotos migration is vastly better than trying to use the native Photos conversion.

Update 9/17/2023: Puzzling test results, need remove BurstUUID and use PowerPhotos conversion

I created a single Aperture test library with a single known burst in it called MicroBurstTest. I also retested my larger BurstTestLibrary.

The results surprised me. To get a reliable translation I needed to use both the ExifTool step and I had to use PowerPhotos.

MicroBurstTest NoBurstUUIDRebuilt: FAIL with Photos Conversion
MicroBurstTest: PASS with PowerPhotos Conversion, 4 images in burst, can edit
MicroBurstTest NoBurstUUID: PASS with PowerPhotos Conversion 4 separate photos
BurstTestLibrary 2: FAIL with PowerPhotos Conversion, image selection bug.

Everything failed when I use Photos native conversion, even if I remove the burstUUID (MakerNotes) from all images and then fully rebuild the Aperture database. I thought that would deal with a hypothetical caching bug but it made no difference. (I didn't try creating an export Library then importing the Export Library into an empty Aperture Library -- mostly because I'm very tired of this and I may have a fix.)

PowerPhotos conversion seemed to work in my small library even if I left the BurstUUID intact, but when I tried a larger library the bursts I tested sometimes behaved properly and sometimes the selected image vanished

I'm hoping I can move on, but for now I'm thinking there are two issues/bugs:

Burst image selection bug: This doesn't happen to every image. I wonder if it's something triggered by version renaming or title or file renaming in Aperture. The image you select can vanish and the count of selected images doesn't match one's selection. I have a few burst images that work properly following a PowerPhotos Conversion but many do not.

Burst reconstruction:  a Burst is reconstructed even though the BurstUUID is gone, I think this is due to Aperture storing EXIF data from an image and not updating that even with a complete database rebuild.

I'm now proceeding to testing running ExifTools against the entire library, then regenerating Previews, then trying the bug library with PowerPhotos.

Update 9/17/2023 PowerTools import of entire library: 57,844 images

After using ExifTool to remove all BurstUUIDs and converting to Photos using PowerPhotos I had 57,844 images imported with one error in the log that I need to look at. Likely a corrupted or incompatible video. The process was slower than Photos native conversion. There were no Bursts in Photos after the import. This number lines up with what I expected.

Update 9/20/2023 Testing ok so far, Aperture clean-up continues.

So far testing is good. I'm cleaning up Aperture for the final migration; I may test Photos in Sonoma to see if the Burst Bugs are any different.

There's a feature that lets you write the modified date into the exif header and maybe the file date; I realize I should carefully do that in Aperture for some of the photos I've re-dated to the time they were taken (vs. when I scanned them).

I posted this summary to the Facebook Aperture Group, when I'm done it will end up as part of an introduction to this post.

If you haven't migrated off Aperture yet  and you hope to keep any of your titles, version names, dates etc time is running out. You should always be able to get your Originals out, but access to edits (Previews) and especially metadata (names, titles, descriptions, folder relationships, etc) is at increasing risk.

So far testing from my latest attempt to migrate to Photos.app is good. As per my prior notes I needed to use:

ExifTool to work around the Burst bugs.
PowerPhotos to do the migration (because of bugs with Photos native conversion)
An Apple Script to copy Version Names to titles. (Apple script itself is on the edge of extinction btw)

There was also a lot of review and cleanup including removing files not supported by Photos (esp iCloud) or most other media apps.

I don't know how migration to anything else would work. Life is way too short to test. I chose Photos seeking safety in numbers. I wish a competitor had a solid "exit" strategy.

If there's any chance you will need to use Photos you should buy PowerPhotos (https://www.fatcatsoftware.com/powerphotos/) *now* and let the dev know of your interest in the Aperture library conversion feature (works in Sonoma). For him the Aperture conversion was very much an afterthought (built atop some old iPhoto conversion). He's a much better dev than the poor intern who got suck with the Photos conversion. PowerPhotos also provides core functionality that should have always been a part of Photos.

I'd recommend saving a copy of my blog post on the process [1]. I'm not immortal, it could go at any time. I'm sure it's wrong and flawed but this kind of knowledge is dying fast. Some things I found in only one old, almost forgotten, web page. You should also assemble the tools I used just in case you end up on Photos somehow.

If you want to send a bill for your time to Tim Cook please do. I figure $20,000 would be about right for me [2]. Apple could have prepared a high quality Aperture export to a well documented public intermediate data model that Lightroom or others could read from with good results. Including documenting Apple's edit rules. They didn't because they didn't (and don't) give a sh*t. (sorry, expletive earned).

I'll clean up my blog post when I'm all done. For now it's relatively agreeable cleanup of existing content in Aperture prior to repeating my migration.

Backups? Oh, yeah, I got backups 😳.

[1] https://tech.kateva.org/2022/01/converting-from-aperture-to-apple.html
[2] Plus a pittance for PowerPhotos and a donation to ExifTool.

Update 10/16/2023: Another migration attempt only partly successful

Today I am making a hard push on the migration. I did not rerun the AppleScript that copied version name to 

In Aperture
  1. Remove all flags from images.
  2. Empty rejected and trash
  3. Regenerate previews for my Video search folder for which many were lacking previews for some inexplicable reason.
  4. Document photo count: 57,518 items
  5. Update previews - this always seems to require regeneration for about 1300 JPEG for no good reason
  6. Keyword cleanup - review the keyword hierarchy
  7. Run repair database (again) - recheck image count, check for creation of "recovered ..." album/project. (no changes found).
  8. Update Aperture Vault.
In Finder
  1. Lock Current.aplibrary to prevent further changes to it.
On target system
  1. Unlock Current.aplibrary and rename it Current_20231016.aplibrary
  2. Run: exiftool -r -overwrite_original -P -progress -MakerNotes= -if '$BurstUUID ne "" ' ./Current_20231016.aplibrary
  3. Run PowerPhotos Conversion
  4. Manually recreate folder hierarchies and folder event relationships. This is bad but it isn't quite as bad as it sounds because when you select a folder on the left panel the albums and subfolders display on the right side. You can multi select those and move them together. I marked my 4 and 5 star (keyword) photos and my slideshow photos as Photos.app "favorites".
Update Oct 29 2023

After the Oct 16 post my big surprise was loss of folder/album relationships due to limitations of Power Photos (updated above). I had to recreate album/folder relationships. It's doable because in some views you can select multiple albums and move them between folders by drag and drop. The PowerPhoto conversion process turns Aperture/iPhoto Folder/Album relationships into keywords with an internal | delimiter. I didn't find the keywords useful but they are a guide to how Albums and Projects in Aperture were organized; I used them to selectively apply the same folder/album relationships in Photos.app. Then I deleted them.

Some photos have incorrect orientation. I think this is related to a bug in an old version of iPhotos (exif orientation tag bug). I believe they were fixed in Aperture but that appears to have been lost in conversion.

Otherwise I've been doing cleanup. Both PowerPhotos and Apple Photos.app will identify and resolve duplicate images but I'm waiting to understand Apple's undocumented rules for metadata management.

I have not yet merged my new library yet with my iCloud Library. I'll be organizing and cleaning up for a while. Keywords alone will take a bit; PowerPhotos made parent albums into keywords so there's a lot to remove.

When I do merge I will
  1. Verify current system library has all images local.
  2. Organize current system library so all albums are in one folder
  3. Backup current system library.
Update 1/17/2024: Post-migration PowerPhotos hierarchy Keyword Cleanup

Since Photos.app was unable to migrate my Aperture Library I used PowerPhotos. That seems to have worked pretty well although since PowerPhotos was made to convert iPhoto Libraries some album/folder/project relationships were lost (however the albums themselves were preserved). PowerPhotos generates keywords that have folder/project/album relationships so these can be used as a guide to creating folder/album relationships in Photos.app. They can also be used as keywords of course, but I ended up with hundred of them so I used them as a guide to recreating folder/album collections that I found useful. Then I deleted them.

This is roughly how I did that
  1. search for album in Photos search.
  2. When click into the album the left pane will open the folder that contains the album (but it doesn't highlight the album -- that's just dumb)
  3. Decide if there's a folder I should create to group things. If not then delete keyword.
In practice I deleted most of these hierarchy keywords. When several albums shared the same "path" then it was often useful to create a container folder. You can select multiple keywords and delete at once.

Some keywords were from albums that were organized in Aperture under Projects. In Photos both the Project and the child Albums become peer albums. In this case the keyword path will include the Aperture Project name and the Album name. Sometimes you might put them both in a folder.

The single window Photos.app UI makes reorganizing folders and albums pretty frustrating, but this was a flaw in Aperture too. To navigate long lists of albums I found sort by name helpful.

I did end up with collections of albums that belonged to an Aperture Folder that were better moved into other Photos.app hierarchies but that can be done over time. Since one cannot search on Folder names in Photos.app 2024 I have to rely more on folder hierarchies than I did in Aperture.


Update 1/17/2024 - Comment on Gamma and Color Profiles.

I realize all my images look darker than I remember. I suspect it's because of Aperture's ability to adjust images for "gamma", screen type and so on. Of course Photos has none of Aperture's extensive color profile and gamma support.

Update 2/6/2024 - Garbage keyword cleanup

Following migration I had multiple instances of the same keyword as upper and lower case. I'm not sure keyword selection is actually case specific in Photos. In all cases the lower case version was not actually used by any images and I removed them. There were about 10-20 oddball keywords I don't recall using in Aperture.

At this point I need to confirm some backups and then, after testing my backup Libraries I'll begin the iCloud merger between my migrated Aperture Library and my original System Library.

Update 2/28/2024 - Duplicate cleanup - time zone bug in conversion

During the conversion process a number of duplicates were created in addition to genuine older duplicates. It looks like correcting times in Aperture (esp timezones) somehow resulted in duplicates during the conversion. I'm using PowerPhotos and native Photos.app duplicate detection to slowly work through the duplicates and decide which to keep.

I think the way Apple's duplicate selection works marking one as a 'Favorite' will bias selection to that one. I saved all my Duplicates to a local folder then inspected them and sometimes marked on as a favorite and the other not. When done I removed the Favorite tag from the images retained in the folder I'd created from Apple's Duplicate list.

Update 3/1/2024 - Syncing with iCloud continues

After resolving duplicates I tested my backups (full image locally) and then made my converted Aperture Library the new System Library. For about 12-24 hours it simply said "Syncing with iCloud". After 1-2 days it started saying "Syncing #### from iCloud". Activity Monitor Network Activity showed lots of traffic with bursts of 20-30sec activity followed by longer intervals of no traffic. I assume it's throttled by Apple's servers. I assume this will take a week or two.

On the machine holding the former Aperture Library the image count hasn't changed but the video count it going up. Other devices show the same Folder/Album and images as before but the total image count is going up. Based on that count I'm guessing I'm about 2/3 done after 3 days. The delays are all on Apple's side.

Update 3/3/2024 - completed syncing with iCloud

It's possible that turning off iCloud shared folders helped the sync go faster. I'll turn them on again when done. [3/27/2024: I recommend turning off shared albums then turning them on when iCloud synchronization has completed.]

After 3-4 days of intermittent bursts of throttled iCloud synchronization I have one large collection that appears to include folders, albums, keywords and images. I merged a small number of new duplicates -- two video and one still. I can't confirm metadata has survived yet.

Update 3/27/2024 - After the migration

It's been several weeks since I turned on iCloud synchronization. That seems to have worked as promised -- which is unusual for anything related to Apple Photos.app. I did discover that iOS does not display Photo Titles; much of what I have now in Photo Titles could be copied to Caption and I am looking into ways to do that especially where Caption is empty. If I succeed that will be a separate blog post. Titles do display (optionally) in macOS photos.

The real strength of Apple Photos.app is making a pile of unorganized photos more valuable to the user. Any active management of Photo metadata or organization, even attaching a comment to a photo, is poorly supported.

I would say the migration succeeded with probably 97% of information salvaged -- at enormous cost. I have thoughts about what this means for, say, Apple antitrust litigation. I believe Apple's de facto monopoly ("Hotel Cupertino") has caused it to lose interest in legacy customers. In retrospect I don't think Apple every worked on an Aperture migration path, I think they just did an iPhoto migration path. Aperture migration was sort-of supported because of the shared iPhoto/Aperture Library format.

Post migration I evaluated Houdah's Photos Workbench. I took me about 5 minutes to go from trial to purchase. With the direction Apple has taken both PowerPhotos and Photos Workbench are necessary purchases. I am also evaluating osxphotos and I will work further on AppleScript supplementation. I believe both osxphotos and Workbench use Apple's PhotoKit APIs.

Historical posts related for shared misery

[1] Laughably I chose Aperture because I figured Apple's user base and resources were large enough that if Aperture died Apple would provide a good migration path. So my choice of Photos is very debatable. What we need is a media management solution that's open source and used by multiple commercial vendors. Ask me if you want the requirements and design spec for this :-).

Friday, July 22, 2022

Getting Outlook to export Exchange contacts as vCards (vcf) with proper email addresses for use in macOS

In 2009 I wrote about how it was getting harder to move contact information out of Outlook into something else (like macOS Contacts). I wrote about some options, but that's not what I do now.

Here's what I do (tested in Mojave, which I'm still using because Aperture):

  1. Create a simple list Contacts view. I usually only want people so I sort by last name. In a few cases last name of people is blank so I fix that.
  2. Now create an empty email. Drag Contacts from Outlook's view into the email body. It has to be to the email, dragging to desktop creates a .msg file. It might fail if you do too many so I distribute 300-400 contacts across 4 separate emails. Outlook creates a vCard file as an attachment. It resolves the email too, so instead of an Outlook x400 (?) you get a proper email address.
  3. Send the email to your Mac
  4. On the Mac download all attachments. They show as VCF files and macOS renders them quite well.  If they have photos the photos show within the card icon. Spotlight indexes them all. You don't even need to bother with dropping them into Contacts (though that's easy to do, you can drop them into your Contacts Groups (folders)).
It's pretty easy if you know the trick. I've not seen it described anywhere else but I'm sure others know it.

Saturday, September 19, 2020

ToDo apps: Microsoft's solution

I've used Appigo's ToDo app for about 12 years (with Toodledo at first). It's had problems over the years, but in general it's been a good subscription choice. There's a fairly hard data lock (maybe SQLite?) but manual reentry is feasible albeit annoying.

Lately, however, ToDo has been more ragged. A recent server side change induced a date bug (time zone?) that in turn showed me I was using a macOS app last updated in 2016. It appears to have been abandoned on the Mac App Store. When I went to Twitter I found Appigo's account was closed years ago for violating TOS. Eventually I found I could download a current version of their other App Store app from their web site.

At the moment the app is more or less working again, though parts of the macOS app UI are kind of weird. I figure there was some violent ownership transition with lost dev passwords in Appigo's history (maybe they got ransomwared?).

I decided to go shopping again. I'm looking at:

  • Apple Reminders: hard data lock and I have to upgrade from Mojave to get to latest version (not happening).
  • Google Todo: this is one hell of a weird product. WTF is their web strategy? Tied to Gmail? Tied to Calendar? At least there's data export.
  • Things
  • OmniFocus: poor Omni is in some disarray ...
  • Microsoft To Do
Today I dug into Microsoft To Do. Of course it's a mess, but this is 2020 so we expect that. The mess starts with Microsoft reusing product names. To simplify a bit:
  • There are classic Outlook Tasks. I'll call these TasksClassic. TasksClassic was excellent in many ways, including, once upon a time, great import/export options and lots of view flexibility (I like to sort by last modified!). Unfortunately it's dead, just barely hanging on in the current desktop app with some degree of synchronization with the new product.
  • There's the new Wanderlist-based product variable called Microsoft To Do and ... Outlook Tasks (name reuse!). I'll call these TasksW for Wanderlist.
If you open the Help screen page for macOS TasksW (To Do) it takes one to a page on Outlook synchronization that's obsolete -- because the Outlook.com version of Tasks has switched from TasksClassic to TasksW. On the other hand the version of Office 365 on my Mac still has TasksClassic, and it does synchronize with TasksW as displayed on macOS and iOS Microsoft To Do.app.

Are you still with me?

This gave me a brief moment of hope that there was some data freedom here. I remember the import/export options of old Windows Outlook. Alas, the only import/export from macOS Outlook is Microsoft's PST format. There might be some way to do things with Outlook Windows or with 3rd party tools but I don't have the energy for that.

At this time I think TasksW is probably a decent enough product, but this has reminded me how screwed up Microsoft is. So I'm setting this one aside for the moment.

See also:

Thursday, October 31, 2019

Aperture to Photos.app - preparation (And CYME's Avalanche)

Original 10/31/2019

I despise Apple in general and Tim Cook in particular. I wasn’t always that way. In the 00s I was kind of fond of Apple.  That ended with the way Cook killed Aperture in 2014. Apple could have provided an exit, but they didn’t.

Being unable to leave Apple has not improved my mood over the past six years. The exit cost is too high. On the bright side my Apple resentment has made it easier to resist the Apple watch. So I have a bit more time in my life for family, bikes, skis, and CrossFit. Thanks Tim!

I’ll still be on Aperture into 2020, three years beyond my original plan. The Catalina catastrophe has made staying on Mojave more agreeable. I’ll have to switch sooner or later though, almost certainly by 2021. So I’m working on a list of what I need to do prepare. I’ll update this post with items I think about:
  1. Eliminate all stacks. I have hundreds of unwanted stacks created by Apple’s original hacked up iPhoto to Aperture migration (that was horrible). I need to edit each of the stacked images and remove the duplicate.
  2. Flatten the keyword hierarchy (the marvelous hierarchy is from a time when giants walked the earth).
  3. Regenerate images from RAW (this will take eons and is high risk).
  4. Be sure image locations and face recognition (never worked) are turned off.
  5. Simplify all smart albums not supported by Photos.app.
  6. Create an empty shell of current Library, then use that to import all images from past Library. Confirm everything is correct.
  7. Rebuild database to confirm no errors.
  8. Per Apple’s migration directions, create full-sized “previews”.
  9. Ensure iCloud is empty of images and that Photos.app destination library is empty with no iCloud sync. Disconnect from network.
  10. Import into Photos.app
  11. Validate.
This project will take many months, many backups, and purchase of at least one other 1TB SSD.

Update 2/17/2020: Avalanche claims ability to migrate from Aperture to Lightroom (Mojave and up). I'm looking for reviews.

Update 1/9/2022: Still on Aperture! Reviewing this post I decided to copy Apple's directions for migrating to Photos. (For older photos consider reprocessing before generating previews.)
Choose Aperture > Preferences, click the Previews tab, then change the Photo Preview setting to Don't Limit. Close the preferences window.
From the list of projects in the Library inspector, select all of your projects. For example, click the first project listed, then press and hold the Shift key while clicking the last project.
Click the Browser layout button in the toolbar, so that all photos are shown as thumbnails.
Choose Edit > Select All to select all of your photos.
Press and hold the Option key, then choose Photos > Generate Previews.
Aperture now generates full-size previews for every photo in your library. To follow its progress, choose Window > Show Activity from the menu bar. Quit Aperture when processing is complete.
Open the Photos app, then choose your Aperture library when prompted, as pictured above. If you aren't prompted to choose a library, press and hold the Option key while opening Photos. If your Aperture library isn’t listed, click Other Library, then locate and choose your library.

I tested CYME's Avalanche "export to file system". Unfortunately it doesn't export previews, only the master file. It's designed to translate Aperture's lossless edit directions to an alternative format, then have the receiving system generate the Previews.

Saturday, February 16, 2019

Migrating from Blogger to WordPress ... again ...

I’ve been contemplating migration to WordPress for almost a decade, but Google kept Blogger good enough to keep that headache at bay.

Alas, the days of good enough are ending. Google is removing their photo management API without recourse. They do support posts with images, but only by using their web interface. It’s a concrete and undeniable sign that Blogger is either dead or going to a bad place.

I though I’d migrate first to wordpress.com then to my Dreamhost open source wp install, but via Twitter Daniel Jalkut tells me he got better results using the open source importer directly.

I’ll do a dry run on one of my big blogs first. The URL won’t change but I’m sure feed subscriptions will have to be redone (ugh).

Update 2019/04/06 - results of the pipdig import process

I tested the Dreamhost free version of the pipdig importer from a Dreamhost wordpress (open source) blog. The results can be seen here for the moment, I’ll eventually delete them. I found:

  • It doesn't remap internal links. This is a big disappointment. Links continue to direct to blogger, once that account is gone they will be invalid
  • There’s no option to migrate images that I can see.
  • It missed at least 4 posts from the source blog — specifically from early on. No idea why and it suggests more are missing.
  • It does copy drafts over.
  • It requires a LOT of access to your Google account! If you use this utility I suggest creating a new google account, give it access to your blog, then after the import destroy it. 
  • The paragraph breaks are missing - line feeds vs <p>. This is an ancient Blogger problem with MarsEdit; a legacy of the original sin of English language text formatting end-of-line standards. I think Blogger is mostly to blame.
  • Images were not relocated locally, they remain at their original locations.

Pipdig is better than nothing, but I’m going to try wordpress.com’s import tool next. I wonder if a better solution wouldn’t be a static site that I could archive on my personal web server, then do a web server redirect to handle the links. For now I’m still on Blogger. The porting experience reminds me of the impossibility of leaving Apple’s defunct Aperture photo management app.

(As I write this the wordpress import is processing - result should eventually show up at gordontest.tech.blog temporarily, but we’ll see if it works. It’s taking a long time.)

Update 2019/04/06b

Well, that wordpress migration didn’t go so well:

Your site has been suspended from WordPress.com for violating the Terms of Service. If you believe this was done in error, please contact us as soon as possible to have the suspension reviewed….

I sent a contact inquiry, nothing yet.

Saturday, January 12, 2019

Simplenote web (beta) version has much improved notes export

The beta version of Simplenote’s web client will export notes as text files and will use the note title as the name of the text file. When I’d previously exported from my Simplenote library the text files names were all GUIDs. 

This is obviously much better. It means, as long as you don’t mine plaintext, you can get your data out of Simplenote in a portable and useable form.

To use the beta version of the Simplenote web client use the URL simplenote.com/new.

I’ve been using nvALT to enable data freedom for Simplenote [1], but it’s good to have a second option. (nvALT works on Mojave, but had issues with High Sierra. I’m planning to skip from Sierra to Mojave.)

PS. Recently Simplenote added plaintext note import, though needs Electron version for Mac.

- fn-

[1] It took years longer than it should have, but Automattic fixed search in the Mac client.

See also

Saturday, December 29, 2018

Extend Aperture's lifespan with Adobe DNG Converter for Mac

Aperture on Sierra doesn’t support RAW files from my Canon EOS SL2. I don’t know if there would be any support if I upgraded to High Sierra or Mojave, but I think not. I tried using Canon’s RAW to JPG converter but it was achingly slow and it defeats the purpose of shooting RAW in the first place.

So I’ve been shooting JPEG [1]. Today, through Facebook’s Aperture User Group, I learned that Adobe DNG Converter output can be treated by Aperture in Sierra as a type of RAW format. So I downloaded the app and tried it on a CR2 file from my SL2. It was extremely fast and produced a DNG a few MBs smaller than the CR2 file. Aperture opened it a bit more slowly than I remember it processing my older Canon RAW files, but there no real issues.

Adobe DNG Converter has a truly ugly Mac UI, but I have no problems with that. I suspect DNG is only a minimal archival improvement on CR2 so I’ll mostly continue to shoot JPEG (because everything sucks [1]), but now I have the option to do CR2 when I want better results. Since I already use Image Capture to bring images off my devices rather than Aperture the extra conversion step is a modest cost.

- fn -

[1] Twenty ago I was sure we’d get one of many better lossy image formats, of which JPEG2000 is the only one I can remember now. We never did, partly due to patents and partly for reasons I don’t understand. I think cameras have gotten better at making the best use of JPEG, which itself has iterated over time. In 2018 some SLRs shoot DNG (not Nikon or Canon of course), Apple’s cameras shoot patent-encumbered HEVC (not HEIF, that’s the container damnit), and there’s lots of proprietary RAW. I suppose HEVC is an improvement over RAW, but only by a bit. HEVC is likely to lose out in the long run to AV1 and disappear — with no comment from Apple when it converts. In terms of a practical archival image format we basically have PNG and JPEG with no metadata standard and perhaps some flavor of TIFF. Basically everything sucks, which is very 2018.

Incidentally, the image formats Preview can export to in Sierra when you use the Option key trick (apple doc) — prior to Mountain Lion they were all shown. OpenEXR was from Industrial Light and Magic but it’s as dead as old JPEG-2000. (As near as I can tell Mojave has the same list and it still doesn’t include HEIF/HEVC, which seems a vote of some sort.)

PreviewExportFormats

Friday, April 27, 2018

Appigo Todo Cloud.app - don't forget to unsubscribe when you leave

Even since iOS 11 editing in Appigo’s Todo Cloud.app has been buggy for me on iPad and iPhone alike. Just aggravating. Feels like they failed to revamp something. I wasn’t delighted with their sync technology, but I could live with that. The editing bugs finally broke me.

So I decided to exit. Somehow I remembered Todo Cloud is a subscription service. I found my way to the somewhat hidden account settings and disabled premium. Turns out that turns off auto-renewal. 

Screen Shot 2018 04 27 at 2 53 24 PM

Hope it really works.

Appigo is a textbook example of how subscription solutions can disappoint. They never provided a good export strategy, so there’s a strong data lock. Then they failed to do minimal maintenance but continued to collect subscription revenue and sell the app.

So what will the replacement be? I’d like a product that

  1. Did what Appigo ToDo Cloud did but actually worked
  2. Had a web client as well as Mac, iPad and iPhone client
  3. Supported family sharing
  4. Had good data export (exit strategy).

I evaluated Things.app and OmniFocus. Things got #1 and 3. OmniFocus got #1 and 4. Neither got #2.

Hmm.

On the other hand, Reminders.app for iOS got #2 and #3 and it’s free. So it’s weirdly in contention.

For now I’m using Reminders.app for tasks and Trello for projects. I manually copying over tasks that had dates, it’s not too bad. The backlog of ‘someday’ tasks I’ll gradually slog away at.

If Things gets some data export I’ll probably buy it, but it’s expensive since it’s not a universal app. If OmniFocus gets family sharing I might buy it. Meanwhile I’ll see what I can make Reminders do.

I think this is my first significant iOS functional regression.

Update 5/22/2018

I just discovered I wrote about this in 2011 …

There are no great task managers for the iPhone - but there's hope for 2011

… Neither Things, nor Appigo’s ToDo.app (which I have used incessantly since 2008), nor OmniFocus, nor Remember the Milk.app nor Toodledo.app are a great solution. They all fall short…

Seven years later and ToDo.app is moribund (I’ve been using it for 10 years!) and both OmniFocus and Things are still flawed.

Since I first wrote this I’ve run into issues with Reminders.app — including sync bugs and even text editor bugs. On the other hand, OmniFocus is promising a web client. I’m going to transiently switch back to ToDo.app and see if WWDC providers some kind of family sharing for subscriptions. That would make OmniFocus pricing less extreme.

Tuesday, September 26, 2017

Life with Apple: Podcasts move to streaming only

In a move that feels as inevitable as death and taxes, Apple has made podcasts effectively streaming only. The same thing is likely to happen to all media, Podcasts just went first.

Until recently macOS iTunes and iOS Podcasts.app supported both file based sync, including Playlists, and streaming based distribution with an unreliable sync of podcast metadata.

With iOS 11 iTunes playlists are no longer represented in Podcasts.app. You can still create Playlists in iTunes made up of local files and/or cloud references, but they stay in iTunes. The Playlists were the main way I organized listening to my large collection of file-based In Our Time podcasts and my medical education podcasts. No more. I’m now dependent on the very limited (ok, crap) organization abilities of Podcasts.app.

Apple has long had problems with video that moved to an iPhone from both iCloud and iTunes. iBooks synchronization is a mess too if you mix non-Apple store ePub with streamed iBook.

This is ugly and going to get worse. We’re moving fast into the DRMd hard data-lock rental-only future.

Update: Many good threads on this in Apple Communities. They reminded me to leave feedback. Stations are not a substitute for playlist sync, but even on their own they are missing a key filter — limit to on-device items.

Sunday, September 03, 2017

Annals of iOS inconsistency: Contacts vs Notes vs Reminders - backup and sharing

https://www.icloud.com/#settings currently shows an “Advanced” subsection for restoring Contacts. It provides options to restore an iCloud data set “archive” from iCloud (not to be confused with restoring an entire iOS device backup):

Screen Shot 2017 09 03 at 11 38 36 AM

Notes aren’t on the list though. They have their own note-specific backup restore option, but it’s at the level of an individual note and there’s no version restore, only the ability to undo a delete for 30 days by restoring a Note from “recently deleted”. (BTW, if you Share a Note only the Owner can “delete” — but anyone with Edit privileges can remove all content — and since there’s no version undo that means anyone who can edit a Note can delete it without a recovery option.)

Screen Shot 2017 09 03 at 11 43 45 AM

Sharing is another area of odd inconsistency. Notes must be shared one at time, but multiple Reminders can belong to a set of People.

I’d like to see Notes add Google-style Note-specific version save/restore and share by container (folder) as well as Note, but there’s no rumor of that in iOS 11. I’d pay for a third party solution for iCloud, similar to what CloudPull does for Google App docs, but I fear the demand is too small (for example). An Apple iCloud Drive folder view of Notes [1] would be a big help; I’d then be able to restore an individual Note from a Time Machine or Carbon Copy Cloner backup …

Anyone have an AppleScript to create a local daily snapshot of Notes? (There is this, but in Sierra Apple omitted AppleScript dictionary support for PDF creation).

The world moves in unexpected ways. We seem to be converging on a form of backup that’s a regression for people like me, but a big improvement for most. There’s probably some kind of futurist principle there — the good-enough mass solution will drive out the elite ideal …

- fn -

[1] The main reason I’m still on Simplenote is that nvAlt on my Mac maintains a synchronized file store that works just like this. Perfect data freedom — but almost nobody appreciates this …

[2] As of Sierra at least some parts of Notes are in /Users/[username]/Library/Group Containers/group.com.apple.notes. This location has changed a few times. Note content is distributed between media files (PDF, etc) and text in a sqlite database, so recreating an individual Note document as, say, an RTF file, is a non-trivial task. For example (sqlite browser):

Screen Shot 2017 09 03 at 12 20 57 PM

I suppose Time Machine backups of this folder might be a kind of ‘restore all notes’ option, but restoring a version of an individual Note would be tricky…. (There’s something deep here about the ways in which we assemble bits to create something our brains perceive and our tools manipulate, but it’s beyond my ken. Once upon a time a BYTE article would have traced the roots of the Notes sqlite store back to database file systems of the 1980s…)

Wednesday, April 05, 2017

Migrate Contacts from Outlook/Exchange server to OS X Contacts

I last wrote about migrating contacts from Outlook/Exchange server to OS X in 2011.

Back then one of the issues with migration then was that Exchange uses X400 format email addresses. One way to make Outlook convert to internet is to drag contacts into an email — that produces .vcf files (undocumented) with internet email addresses. In 2011 I wrote that dragging into a local PST did the same thing. Not sure that still works.

Here’s what I did recently …

  1. Drag and drop from Outlook/Exchange into email (undocumented export)
  2. From email save to desktop.
  3. Drag and drop the .vcf files into OS X Contacts (undocumented import.

From OS X contacts they can go to iCloud as usual.

Incidentally, i couldn’t see any way to readily import a set of single contact .vcf files into Outlook 2016. It only wanted to import them one a time. Drag and drop of the files into Outlook resulted simply in Outlook opening each one until Windows 10 die.

Sunday, March 12, 2017

Escape from Outlook Notes - export as text files, import into NvAlt or other

Back in 2010 I wrote Gordon’s Tech: Escape from Outlook Notes - ResophNotes, Simplenote for iPhone and Notational Velocity.

Seven years later ResophNotes, Notation Velocity (I now use nvAlt), and Simplenote are still around — despite lack of a revenue stream for any of ‘em. Not only are they still around, but it’s still possible to keep notes in plain text or RTF — which is as future proof as computing gets.

They are still around — but not in great health. ResophNotes was last updated in 2012 or so and it is donation ware (always was). Simplenote was purchased by Automattic (WordPress) and is now open source and apparently run as some kind of charity operation [1]. nvAlt is ancient but Brett Terpstra recently updated it to run on Sierra (a notoriously buggy version of macOS).

These apps are old and kind of worn — but so am I. So we’re a good fit. 

Recently I had another set of Microsoft Outlook Notes files to move to Simplenote. Talk about old and kind of worn! Outlook Notes is old, odd, and useful. It’s a winner in a category of one. Functionally it’s a lot like Simplenote — though you can’t print from Outlook [2].

The problem with Notes isn’t that it’s old and odd, it’s that everyone has given up on it. Microsoft tries to make it invisible. Apple dropped support for Notes sync via iTunes/iCloud — though I think Exchange sync may still work. Google ignores them too.

Which is why I needed to again move a data set of out Outlook Notes. I think export to Outlook CSV them import to ResophNotes is still the best bet. From there to Simplenote and from Simplenote to nvAlt, etc.

There’s another way to go though. You can use VB to script export from Outlook to c:\notes:

Sub NotesToText()
    
Set myNote = Application.GetNamespace("MAPI").PickFolder
  
For cnt = 1 To myNote.Items.Count
        
noteName = Replace(Replace(Replace(myNote.Items(cnt).Subject, "/", "-"), "\", "-"), ":", "-")
        
myNote.Items(cnt).SaveAs "c:\notes\" & noteName & ".txt", OlSaveAsType.olTXT
   Next
End Sub

The key thing is this script creates file names with the note title. It’s not a perfect result because the top of each file looks like this:

Modified: Thu 1/12/2017 2:36 PM

accidents and injuries

In this case ‘accidents and injuries’ becomes both the file name and the third line of the note. The “Modified: …” bit is just annoying. I suppose it could be removed using regex and a text editor that can iterate over a set of files … or script the removal.

I imported the plain text notes into nvAlt where they got the title from the file name so it looks something like this:

accidents and injuries

Modified: Thu 1/12/2017 2:36 PM

accidents and injuries

A bit of redundancy in there, and, of course, the Modified string is still around.

Overall this doesn’t work quite as well as the ResophNotes method, but it’s helpful to have options.

- fn -

[1] Automattic recently released a redo of the macOS Simplenote client. I haven’t tried it, but I hope it fixes the perennially broken search of the current client. In any case, Simplenote is not dead yet.

[2] Outlook 2013 broke Notes by essentially removing the list view — I think this might have been fixed in Office 365.

Update 3/13/2017

Speaking of ResophNotes, the current version has an impressive set of import options. Outlook CSV, Toodledo Notes CSV, text files, single file with note separator …

ResophNotesImport

I donated years ago, time to send another donation.