Monday, January 23, 2017

Quick bio - I've been programming since I was 9. Started my own software company at 16. Degree in Computer Science from U of Washington. Been a professional developer for 21 years (turning 42 in Feb). I’m comfortable working in C#, Java, Ruby, Python, Node.js, JavaScript, Go, and Swift. History in or studied C, C++, Scala, Erlang, Rust, Elixir, CoffeeScript, TypeScript.

TL;DR - I committed and moved away from the Apple ecosystem and was happy to do so. I'm back after only a couple of months. Here's my (abbreviated) story.

Background

I was working in mobile web development when the original iPhone came out and developed a Staff Pick web app for it the day after it came out.

That experience changed my computing life. I had been a Microsoft platform user and developer from ABASIC on DOS through VB6 and then through C#/.NET from the beginning. The original iPhone convinced me to convert to a Mac user and I have been since then. Even converted my whole family. I have owned every iPhone from the iPhone through iPhone 6 Plus (yes, I’m that guy who likes the Plus). I have an Apple Watch (original) and an older Apple TV.

As a Development Manager/Director, much of my time has been managing mobile development teams and I had to focus on Android at times, so I’ve been back and forth between Android since it first came out and iOS. Last year, I cofounded a startup and developed an iOS app full time using Swift 2.x and 3.x.

While I had managed teams that had been building both Android and iOS apps, I had never built an iOS app myself, so I was excited to get my first iOS app into the AppStore!

Trying to Drive Me Away?

I’ll be writing another post shortly to share more details about this, but let’s just say that the experience of developing an app for iOS made me start questioning Apple's ability to keep things together long-term. Add to that the lack of updates for Macs (which I NEED to do my job), the removal of the headphone jack (I use bluetooth a lot, but also have noise cancelling Bose headphones), and now the TouchBar along with continued slimming of devices when all I want is full-day use of my laptop without charging, I have spent the last 6 months considering a switch away from the Apple ecosystem.

Quick note:
I love the Surface Pro, Surface Book and Surface Studio ideas. And while I don’t hate Windows, it just makes more sense to use an OS that can support ALL the development I do—Linux and iOS. As a generic platform, Windows makes sense and I think they are in the best spot to pull together all the best from Apple (devices, OS) and Google (services) into one platform. But I also see them doubling down on Enterprise with their Azure/Microsoft Cloud strategy, so oh well.

Back to mobile.

Making a Smooth Transition

I staged my migration. My music has been iTunes Match mostly but also the Apple Music Family Plan. So, to move things to a more platform-agnostic area, I paid for YouTube Red which also got me a Google Play Music subscription and allowed me to upload my FULL music library as well as stream songs I don’t own myself, just like Spotify/Amazon/Apple Music. I also have it all uploaded to Amazon Music as well. Here's the full rundown:

I already had been telling my iPhone to use my contacts from Google, not from iCloud.

I started using Google Play Music on my iPhone and my Mac (web).

I also have Amazon Music as a backup (but the track-to-album-art logic is badly broken, and has been for years).

We mostly use the Kindle apps for books, but I also put any eBooks I've purchased into iBooks and Google Play Books because those apps do a better job of rendering the content--especially development books and code snippets. Google Play Books and Kindle are available on all platforms.

I stopped using Overcast and went back to Pocket Casts since it’s available on Android (sorry Marco--but read on).

I use Instapaper, so that is also on Android.

I switched to Google Keep from Apple’s Notes app. (NOTE: I also migrated some of my Evernote content to Google Keep and Google Docs since Evernote now has a device-count limit).

I had already been backing up my photos from my iPhone to Google Photos, so I just installed the Google Photos Backup app on my Mac to pick up the rest from my iCloud Photo Library.

We mostly use Netflix and Amazon Prime Video and an Amazon Fire TV at home (even though we have an Apple TV, but the Apple TV doesn’t stream well and is very buggy), so we were already set for video.

We never trusted iCloud after it lost some docs. Been a Google Drive/Docs user since day one. Nothing to do there.

So, we were ready. My wife and I bought Samsung Galaxy S7 Edge phones and got with them a Samsung Gear S2 watch and a Samsung Tab E tablet.

Put Our Money Where My Fear Was

We were so happy. The screens on the phones were amazing, they integrated so well with our Google accounts, and our watches had their own phone numbers, but you could use AT&T NumberSync to have them send/receive messages and phone calls — without your phone present!!! So EXCITED! I also switched to the Google Now Launcher (Launchers are the term for what Springboard is in iOS), so I had my trusty, native Android experience (no stupid Samsung TouchWiz). Additionally, the staging of our apps and data into multi-platform-accessible services paid off. Didn’t miss a beat and we were free of the "limiting decisions and investments" Apple has made about their devices and platforms.

Fast-forward 2 months. I’m having issues...

The phone constantly thinks that when I'm picking up the phone it is me pushing the “buttons" on the outside of the screen to bring up “split screen” mode or the back button. Many times during that motion, my palm on the screen is mistaken for dozens of touches and I end up deep in an app I wasn’t interested in even using or I sent garbage tweets out and didn’t know it. I had forgotten how great the iPhone was at knowing what a true “touch” is.

Even though I can use NumberSync to sync up phone calls, messages, etc., each device is it’s own sender/receiver, so I get the notifications twice — once on phone and once on watch and have to manage them independently.

Related to #2, I had to use the Samsung Messages app in order to have it work with the Phone. It sucks. Also, each “sending app” for messages (SMS, etc.) is independent. Even though they call all read the incoming messages and organize the conversations, the sent messages are stored in each app independently. So I constantly have intermittent missing communications, but I usually don’t notice it, which is bad. I ended up sending the same things multiple times, thinking I had lost the messages before I sent them.

I missed having the Messages app on my laptop. AT&T has a messaging site where, when you use NumberSync you can send and receive your text messages from the site. Again, sends from other apps didn't show up even though part of using NumberSync means that AT&T supposedly backs up your conversations and keeps them all in sync. Did not work as advertised.

Related to 2-4, it’s clear that the way I want to work is for my phone to be the master and for the watch to be constantly in sync. I’d like it to also be it’s own device when the phone is not near, but I would want it all synchronized regardless. Samsung only achieved the ability to make calls when your phone is nowhere near you.

Even though I’m a developer, and a picky person at that, the “ability” to customize behaviors in Android actually became less of a feature and more of a burden as I tried to make apps flow better (e.g., opening attachments from email that I eventually need to Print). Honestly, I just gave up because it was too much effort and time for something that I had (annoying) workarounds for, but that punched my developer “if you have to repeat it, automate it” values in the gut.

Samsung has wonderful (wired) earbuds and a process where they take you through hearing tests and can customize the levels to better fit your hearing ability. This is amazing and works beautifully. What I didn’t expect? No matter what app I use to play music--Google Play Music, Amazon Music, and even Apple Music—the sound quality and EQ were noticeably worse than any Apple Products. Even my son’s old iPhone 5S sounded better.

Even though I can clearly see Android has made significant improvements in the UI responsiveness over the years, using an Android device is like watching film at 24 fps (frames-per-second), whereas using an iOS device—even the old 5S—is like watching HD Video at 60 fps. The same is true for me for Windows vs. macOS.

The watch band of the Samsung Gear S2 had the same issue ALL watches I’ve worn have, with the exception of the Apple Watch: typing on my MacBook Pro makes the watch band's buckle dig into my wrist all day and hurts and is annoying and makes “clackity” sounds while I type. The Apple Watch is all rubbery and comfortable all day. Plus, I couldn’t unlock my MacBook with my watch automatically like I could with Apple Watch.

Apple Music with iTunes Match does the best job matching ripped/downloaded music to actual music tracks and then replacing them with high quality (AAC) versions. Google Play Music is really good, though, and does a better job of recommending new things for me to listen to. But nothing beats the audio quality of the Apple Music app on an Apple device.

My (Current) Conclusion

So, hedging my bets and moving away from Apple products and putting my money where my mouth is, I have come to this conclusion: while I’m VERY, VERY concerned for Apple and it’s impacts on me as a developer and therefore on my family, I simply think Apple has made the best tradeoffs when it comes to these devices I use every day, all day.

Additionally, I restored my iCloud Photo Library before it fully deleted, re-added iTunes Match subscriptions, and added more iCloud space back to my account. I'm back to using iCloud Library as primary photo backup and Google Photos as secondary -- especially since my wife is still on Samsung and happy with it. I'm also back to using Apple Music because of the audio quality and seamless integration across devices. My wife and son also use the Apple Music app on Android, which was great because their playlists and Apple Music-only songs all came along. And yes, I'm back to using Overcast.

Now, if only Apple would make their cloud and server-side application support capabilities and their first-party apps live up to the quality of the hardware, I’d probably fully convert to Apple. For now, I’m staying in Google for most "services" offerings. Google has made it clear they are investing in iOS development and trying to offer everything on iOS as well as Android.

Next up: Addressing my frustrations and fears as a developer in the Apple ecosystem for the last year. I will write a separate post for that and update this post when it's ready.

Reactions:

5 comments:

Anonymous
said...

Appreciate your ecosystem insight from a developer POV. Curious as to which generation Apple TV you are having issues with...

Dear Guys,Have an awesome day. Hope everybody doing great. Music freaks are all the same: they want to hear music, find information about their favorite songs, and sing the songs. Nowadays, they can get their favorite songs much more easily. They don't need to search for their favorite songs at radio stations.Digital and Physical Distribution. Online and Offline. MP3s and Physical CDs. Once you have finished music you'll need to start selling it. You will want to make it available online at digital download stores like iTunes and made available to record stores around the world. There are several companies that offer online and physical distribution, each with slightly different pricing and services.Thanks.Google Music, Apple Music, Transfer your tracks and playlists to Spotify