Choosing Between Google, Amazon, & iCloud Photos

PhotoOptions

I recently went down the rabbit hole of figuring out if I am using the right solution for offsite storage of my photo library. I’ve been using iCloud Photos for over a year and am not totally happy with the solution. I decided to try out both Amazon Prime Photos and Google Photos.

My home Internet connection has a 5Mb/s upload speed which feels pathetically slow. I wanted to test each solution with a good chunk of my photo library uploaded which made this a time-consuming experience. Here’s what I came up with after about two weeks of futzing.

My Scenario & Options

  • Using macOS & iOS primarily. Support for Android would be nice but isn’t 100% required.
  • 20k photos & videos
  • 120GB of disk space
  • Sources of images:
    • Canon Digital Rebel (including CRW RAW)
    • Canon 40D DSLR (including CR2 RAW)
    • iPhone 1st gen through iPhone 7 Plus
    • iPod nano videos
    • Other shitty digital cameras over the years
    • Handful of scanned photos & negatives

iCloud Photos

This solution sort of just works for me. I can take pictures on my phone and they’re automatically backed up into iCloud when I’m back onto a WiFi network. My iMac at home downloads all originals so I have a copy of every photo and video on disk without an Internet connection. iCloud sync is built into the Photos Mac app and into iOS.

The downside is every time I take an HD video or a ton of photos it swamps my WiFi connection. During the summer we’re at our camper/cottage and have a very slow 2Mbps down/1Mbps up connection. I have to frequently shut off WiFi on my phone so our connection is usable. There is no way to be explicit about when sync happens.

iCloud Photos can also intelligently cache items on your devices with less storage than your library size. While this seems magical it also means it uses WiFi or cellular data when you want to view a photo or video that isn’t cached on the device yet. Spending an evening reminiscing with friends going through images and videos from years back can easily chew through gigabytes of cellular data. There is also no way to mark an album or set of items as more important so they’re always cached.

Faces also do not sync across iCloud. Every machine/device that is connected has to process faces independently – or so it seems. If I take time to train/teach/curate faces on my iMac they don’t show up on my laptop or iPhone.

Storage is pretty cheap – 200GB is $2.99/month. I’m getting pretty close to that limit which means my only option is to move to 1TB at $9.99/month. When that limit is breached I’d probably end up using iCloud for more file storage (instead of DropBox) since I’ll be paying for it.

Amazon Prime Photos

I have Amazon Prime for our house which means I get their Prime Photos option included. This service provides for unlimited image storage and 5GB of video storage. You can upgrade to unlimited storage of any files for $60/year.

Amazon has a sync tool that you can drag your Apple Photos library file onto and it’ll sync all of your master images. The uploader gives you options for the number of concurrent uploads as well as how much bandwidth each upload can take. If you leave it with the default settings you’ll most likely swamp your connection if you’re at 5Mbps or less so some tweaking is required. Sync can be automatic as well but I don’t have a ton of confidence that it’ll be able to sync changes “magically”.

Uploading took forever and I never let it finish as I wanted to try out the service before investing in a week of uploading. The web interface has face detection, subject detection (find me photos with dogs, etc), and places if you recorded GPS coordinates in the metadata. Randomly some of my RAW images shot with either Canon camera would be mirrored for no real reason. This was a hard stop for me.

Google Photos

Google Photos gives you unlimited photo and video storage for free if you choose their compressed option. With this option they’ll shrink the items down without any real visible difference. You can also buy more storage if you want to store the originals without compression.

The uploader tool seems to understand how an Apple Photos library is structured and handled initial sync really well except for my RAW images. All of the raw images I shot with my Canon Digital Rebel from roughly 2004 – 2008 couldn’t be imported. I should take the time to convert to Adobe Digital Negative format as this is better supported by software since it’s not hardware-specific.

Google’s photo interface is a bit weird especially if you’re not familiar with Android and the material design paradigms. After a while I did get used to it and preferred it over Amazon. I ended up uploading my entire library and purchased 100GB of storage for $1.99. That and the extra storage I earned was just enough to store all of my originals which means iCloud has 20GB or more of bloat.

I ended up not going with Google Photos because of the failed import of all of my older RAW images. Every time I restarted my computer the sync tool would try to re-upload all 2,500 failed images taking time and bandwidth up. If I end up converting those old images into DNG format I may try again.

The Comparison

Storage

  • iCloud Photos – 5GB free, 50GB $1/month, 200GB $3/month, 1TB $10/month, 2TB $20/month.
  • Amazon Prime Photos – Unlimited Photo Storage (included with Prime $99/year), 5GB free for videos & everything else, unlimited everything $60/year (plus annual Prime membership).
  • Google Photos – Unlimited Photo & Video Storage (if you’re okay with compression/reduction in quality), original quality uses Drive storage plans: 15GB free, 100GB $2/month, 1TB $10/month, 2TB $20/month.

Winner? Depends. If you have Amazon Prime already their $60/year unlimited beats them all. If you’re okay with compressed images & videos, Google is the winner. If you want original images & videos stored then iCloud has the best price breaks under 1TB.

Sync

  • iCloud Photos – Relies upon your library being in Apple Photos or iPhoto and on a Mac or solely stored on an iOS 9+ device. Sync is automatic on WiFi on iOS, automatic all the time on any Internet connection on macOS. All metadata except detected faces is synced. Client is integrated with the operating system – nothing else to install. Sync includes new photos, changed metadata, edited photos, and deletion. Devices can also choose to not sync all images and only download on demand.
  • Amazon Prime Photos – Amazon has an app for syncing your Drive folders and also functionality for uploading items without syncing. If you upload your Apple Photos library it knows how to pick out the originals only. Further changes to your library aren’t synced automatically so I’m not sure how well deduping will work later on. Amazon Prime Photos does not then keep your photo library in “sync”.
  • Google Photos – Google has an app for syncing your Drive folders and a Desktop Uploader app. The uploader app knows how to access an Apple Photos library to upload originals and it’ll keep track of changes so Google Photos gets all new items and possibly edited items. It will not remove deleted photos.

Winner? iCloud Photos. Being able to keep a library synced on multiple devices and changes pushed across all of them makes it the clear choice on my end. If you want to make Amazon or Google the “system of record” for your images then real synchronization isn’t as important.

Bells & Whistles

  • iCloud Photos: macOS Photos app, iOS Photos app, and iCloud.com Photos browser. Apps have Face detection, geolocation, shared photo streams, automatically generated albums like “best of last two weeks”, etc. Supports a ton of RAW camera image types going back 13+ years of models.
  • Amazon Prime Photos: iOS & Android apps, Amazon.com Photos browser. Face detection and tagging server-side, geolocation, family albums. RAW image support is advertised to be fairly limited to newer models but does support older cameras albeit buggy.
  • Google Photos: iOS & Android apps, Google.com Photos browser. Face detection, tagging, geolocation, and automatically generated albums are all server-side. Supports a much more limited RAW image format range & uploader app does not gracefully handle failed image uploads.

Winner? Google Photos. The discovery mechanism for finding memories is the best experience by far. Their photos assistant will suggest fun animations, photo treatments, album groupings, and mosaics. iCloud Photos feels like it’s emphasis is on flawless sync rather than server-side experience consistency with the discovery features like faces and locations.

Verdict? Sticking with iCloud Photos

For now I’m sticking with iCloud Photos. I didn’t want to lose any fidelity in my library and I wanted a sync solution that just worked that included deletes and edits. It’s not the cheapest solution after 200GB or the most flexible with the software options for syncing and bandwidth throttling. Amazon’s flakey RAW image support & Google’s graceless unsupported RAW images in their uploader stopped me from picking either of those options.

Easy Mac to Mac Screen Sharing

Screen sharing over iMessage is not a terribly well-known feature of Mac OS X – but it’s incredibly awesome and easy to use. The only requirements are the person needs a relatively new Mac OS X install (Yosemite or higher) and iMessage enabled on their Mac.

  1. In Messages, find your existing conversation (or create a new one with the user).
  2. Click the Details button up top and click it.
    2015-11-02_19-09-28
    2015-11-02_18-50-29
  3. Find the little icon that looks like two squares with an offset between them and click it.
    2015-11-02_18-53-03
  4. Select Ask to Share Screen.
  5. The other person should get a notice and they can accept it.
    2015-11-02_18-54-08
  6. Once you’re sharing you are in view-only mode – you have to click the icon in the upper left to request control of their desktop.

Pretty simple! I’ve had some issues in the past with the notifications never coming through for screen sharing but it seems to be resolved with Mac OS X 10.11 (El Capitan).

View Apple’s Support Documentation on screen sharing in Yosemite

Extending your Apple Watch with WiFi

WiFi on Apple Watch!?

It’s not completely obvious but the Apple Watch supports WiFi networks starting in Watch OS 2.0. How does one configure WiFi to work with the Watch? It’s not terribly obvious so I threw this guide together.

My Situation

My Apple Watch was not configured to work with WiFi. I have both 5GHz and 2.4GHz networks in my home. I normally do not join the 2.4GHz network because it doesn’t work as well as the 5GHz. I looked at the Apple Support page on WiFi for the Apple Watch and realized my situation. Apple Watch only supports 2.4GHz networks.

DOH!

The solution for me was to join the 2.4GHz network so the iPhone knows the password. Those credentials are then shared automatically with the Apple Watch.

The Process

Step 1 – Join a 2.4GHz network. In my case, sourapple. I normally use sourapple 5GHz. FBI Surveillance Van is the WiFi in my garden shed but it’s at 5GHz. I’m disappointed that my Apple Watch won’t work with my WiFi when I’m out in the yard without my phone.

IMG_7137

Step 2 – Give the iPhone a few moments to do whatever magic it needs to do to copy the new credentials to the Apple Watch. I ended up just launching the Watch app on my iPhone and poked around for a bit. This step may not be necessary.

Step 3 – Bring up the settings glance on your Watch.

IMG_7138

Step 4 – Turn off Bluetooth on your iPhone.

IMG_7139

Step 5 – See the icon of the iPhone turn into a cloud on your Watch.

IMG_7140

What’s the Big Deal

Turning on WiFi support means you can put greater distance between you and your iPhone and your Watch will still have connectivity. The downside is that WiFi uses more energy than bluetooth and it’ll impact your battery life.

Even Apple Leaves TODOs in Production Code

My credit card got charged today for my Apple Watch which wasn’t supposed to ship until June. I was so excited that I tweeted the shipping notification to sarcastically note the availability in June still.

Screen capture of the Preparing Shipment notification with a note of the watch being available in June

Copying that text into a tweet, I actually got:

Preparing for Shipment TODO: Pull info bubble content div up to the order list level (only need 1 per page) and refactor info bubbles into single conditional & span based on group status type OR alternatively, refactor to single info bubble per delivery group based on status shipped shipped Available to ship: June

So it appears that even Apple developers leave TODOs in production code. I don’t feel so bad now that I do it. 🙂

Apple at 9:41am

In my post on using QuickTime to record an iOS device I mentioned the carrier and time are fixed at simple dots and 9:41am. Why 9:41am? Well I knew there was a reason behind it and did a quick search to review the reason.

January 9th 2007 .. iPhone announcement day .. 9:41am:

9:41am - "This is a day I've been looking forward to for two and a half years." "Every once in a while a revolutionary product comes along that changes everything. One is very fortunate if you get to work on just one of these in your career. Apple has been very fortunate that it's been able to introduce a few of these into the world. In 1984 we introduced the Macintosh. It didn't just change Apple, it changed the whole industry. In 2001 we introduced the first iPod, and it didn't just change the way we all listened to music, it changed the entire music industry."

Source: http://www.engadget.com/2007/01/09/live-from-macworld-2007-steve-jobs-keynote/

Creating your Verse in the Play that is Life

I’ve recently become a fan of Walt Whitman’s poem from 1892 entitled “O Me! O Life!”. I’ve heard the poem in the past but it has never resonated with me until hearing Daniel Steinberg, an iOS developer and trainer, used it in his keynote at CocoaConf Chicago.

O Me! O Life!

Oh me! Oh life! of the questions of these recurring,
Of the endless trains of the faithless, of cities fill’d with the foolish,
Of myself forever reproaching myself, (for who more foolish than I, and who more faithless?)
Of eyes that vainly crave the light, of the objects mean, of the struggle ever renew’d,
Of the poor results of all, of the plodding and sordid crowds I see around me,
Of the empty and useless years of the rest, with the rest me intertwined,
The question, O me! so sad, recurring—What good amid these, O me, O life?

     Answer.
That you are here—that life exists and identity,
That the powerful play goes on, and you may contribute a verse.

I knew I had heard this before – most likely in commercials and referenced in other stories. I realized where I had heard it recently when Daniel played the Apple commercial that the late Robin Williams narrated lines from Dead Poets Society. It was actually one of the last productions he worked on before his death.

The challenge is to find out how you can contribute a verse to the play that is life. Daniel’s message to us as software developers is that we can both construct our verse and help others contribute their verse to life. The apps we write can unlock the inspiration, provide the accessibility, and fuel the creativity to let people bring their verse into existence.

I’ve never considered the work I do to be something that is capable of changing a person’s life until this past weekend. Viewing the ad Robin narrated again with an understanding of Walt’s poem hit a heart string.

I create apps that people use and touch from the moment they wake up in the morning to the moments before they go to sleep. I am a part of people’s own verses in life without them even knowing I’m there acting as a muse. I help provide the means for the users to help others with their verses.

All of our contributions to life are intertwined. I exist because you exist. Finding your verse in life will ultimately help someone else discover theirs.

Mac OS X 10.9 Mavericks Calendar + Google Sync Problems

On occasion my Calendar on Mavericks gets hosed when syncing with Google.  If I look in the console, I see errors like the following mentioning “An error exists on principal”:

6/5/14 10:05:00.337 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [iCloud]]
6/5/14 10:05:00.338 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Time Off]]
6/5/14 10:05:00.340 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Events]]
6/5/14 10:05:00.341 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Launch]]
6/5/14 10:05:00.341 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Conferences]]
6/5/14 10:05:00.342 AM Calendar[59555]: [com.apple.calendar.ui.log] [An error exists on principal: [Some Team]]

Hitting Command-R in calendar results in it sitting on Updating for some time (minutes?) and then an exclamation point appearing next to the calendars in question.  I finally found a solution to fix it until the next time it happens.  I’m not sure what the actual cause is but this can get you back up & running.

  1. Close the Calendar app.
  2. Go into System Preferences.
  3. Click on Internet Accounts.
  4. Click on the Google account (if you have multiple you may have to do this for each).
  5. Uncheck “Calendars”.
  6. Click Show All or close preferences.
  7. Open Terminal.app (Applications > Utilities)
  8. type: killall -9 CalendarAgent
  9. type exit or close the window.
  10. Go back into System Preferences and turn Calendar back on for the Google Account(s).
  11. Start up Calendar and hit command-R – everything should refresh properly.

Let me know if you have questions!

Apple’s Public Mailing Lists

You may not be aware but Apple has a pretty extensive set of public e-mail discussion lists.

https://lists.apple.com/mailman/listinfo

There are topics ranging from fundamental Objective-C issues through to development for their various desktop applications.  Some of the lists are quite chatty but you can subscribe in digest format to get a daily e-mail instead of each individual message.  This is a great way to reach engineers working on the piece you’re interested in and is a quite interesting place to lurk.