My Photo Backup Solution

A few friends have asked about how we handle our family’s photo safety. Since I have two kids, a wife and a DSLR, we naturally have TONS of photos. If anything were to happen to those photos, you know who would take the full blame of the loss! This is the system we’ve come up with.

The Inputs

  • My iPhone
  • My Wife’s iPhone
  • The family DSLR

(Since we are both on iPhones, we make use of the Apple ecosystem. If you have an Android, Blackberry, PalmOS, WindowsCE device, YMMV.)


We each run on our MacBooks. We do this so our iCloud Photo Library will automatically sync and download to the MacBook. DSLR photos are downloaded to on my wife’s machine. (I wish we could put both photo libraries on one machine, but I haven’t found a way to get iCloud Photos to sync to two different accounts and iPhoto libraries)


iCloud: Both my wife’s phone and my phone are using iCloud Photo Library. We aren’t using the same account though. They are tied to our iTunes accounts. The bad thing about that is, we don’t have access to each other’s photos. We also pay the extra space fee on both of our devices (which stinks because the $2.99 plan on hers would easily cover the $0.99 one on mine). The good thing is that our photos are almost instantly backed up to all our devices. (

Google Photos: I’ve also installed Google Photos on our phones and laptops. We’ve chosen the free unlimited size plan that downscales your photos a bit. I figured this was acceptable as a redundancy solution. Better to have a lower quality photo than no photo at all. (

Shoebox: I just recently started using them as yet another redundancy option. It works the same as Google Photos. I just have the app on our phones automatically upload as new shots come in. (

Backblaze: In addition to an online photo service, we also backup our MacBooks via Backblaze. Backblaze creates online disk images of your machines and allows you to restore them or even have a thumb drive mailed to you if the machine dies. This backs up our local iPhoto libraries. (

Hope this helps out! Would love to hear your comments or concerns about our setup. Also, if you know how to get two iCloud accounts syncing to one iPhoto library, let me know!

My Favorite VS Code Extensions (June 2016)

I’ve written a bit about my usage of Webstorm in the past, but I haven’t lately. There’s good reasoning behind it, I’ve switched to Visual Studio Code! I’ve really been enjoying using it, especially since I started working in Typescript. It seems like more and more people are enjoying it too! With that expanded audience, comes community written extensions for VS Code. These are my current favorite ones:

Do you have an extension that you love that you think I will too? Reach out to me on twitter and let me know! @AdamWeeks


Creating a Barcode Scanner with Ionic 2 in 15 Minutes

One of my most popular posts is Ionic Framework Introduction – Barcode Scanner. Apparently, people like making barcode scanners! Who knew!?!

Today, we’re going to do a little update to that post and get our Ionic 2 on! Since the previous app was so basic, I’m not going to actually upgrade the code, we’ll just start from scratch. Since we only have “15 Minutes” (YMMV) let’s get going! Continue reading

Angular Blackjack: Converting to Webpack

It has been a while since I’ve touched my Angular Blackjack project. When I first started working on it, I created a build process that used gulp-concat to simply merge all our application files into one. Let’s bring our application into 2015, ES2015 that is, with a modular loading system.

For this exercise I decided to use Webpack. I could’ve easily used jspm or browserify, but Kent C. Dodds‘s series on was easy to follow and very informative:

For a quick TL;DR, you can see the pull request of all the changes made:

Continue reading

Angular Directive Isolate Scope Binding with Parameters

(First off, sorry for the long winded post title. It is basically what I google every time I’m trying to remember the functionality.)

Let’s say you have a directive that allows a user to enter data. When that user is done entering data, the directive processes the data, then sends the result back up to the parent. If we were to do this with two-way data binding, we’d have to set up watchers to know when the values were changed. There is a way to do it without the watchers though. We can use the parent scope binding type: “&”.

Continue reading