Matthew Price

Apple Watch: First Impressions

The Apple Watch try-ons have officially begun, and yours truly was one of the first to check it out. James and I discussed this a little bit on episode two of Refactor, but I’ve written my full first impressions below. The list isn’t written in any particular order, but it is from the viewpoint of a casual watch wearer.1

Screen & Software

  • The retina display is gorgeous. I didn’t see any “air gap” on the units I played with, although I did see the screen edges at certain angles and lighting. That’s disappointing, but it’s not a deal-breaker.
  • While some people are reporting the demo units are laggy, the applications and animations I experienced ran smoothly. Data loaded from an iPhone over bluetooth will certainly be a different experience, but my impression of the built-in software was good.
  • I enjoyed using the digital crown. It’s a little awkward to use on the demo/table units but not on the units that you wear. I think I’ll prefer using it since you don’t have to stop and lift your finger to look at the screen—just keep on scrollin’.
  • If you’re used to mashing your finger on the screen, it might take you some time to adjust to Force Touch. When I first tried to interact with the Watch, a lot of my presses were registering as a Force Touch instead of a regular touch. Until I figured that out, I thought the software was buggy.

Models & Sizes

  • Both size watches are smaller than I expected. I went in thinking the 42mm would be too large for my wrist, but it’s actually smaller than my current watch. I suspect the size people choose will be much more about personal preference than a size “required” by their wrist.
  • Both size watches are simultaneously lighter and heavier than other watches I’ve worn, so you need to try one on in person if you’re worried about the weight. Overall, all models and sizes are light enough that I don’t think weight is a good primary reason to avoid buying one.
  • The silver Sport lived up to my expectations. It looks very similar to a MacBook or iPhone, but it’s not something I would feel proud wearing on my wrist each day since my current watch is stainless steel. If you can’t afford the stainless steel, the space gray is definitely more elegant, and it looks perfect with a black Leather Loop if you can afford to upgrade the band.

Bands

  • The Sport band is definitely softer and smoother than I expect of rubber watch bands. I didn’t notice a difference between the different colors, but some people have.
  • The Classic Buckle is amazingly soft leather, especially for its position in the pricing lineup. You won’t be disappointed if you’re looking for a simple, standard band.
  • The Leather Loop is a harder leather, probably because the magnets inside force it to be both thin and durable. It still feels great against your wrist, and I didn’t have any problems adjusting it to different sizes. I thought it was much easier to put on and adjust than the Sport and Classic Buckle.
  • The Milanese Loop was very smooth and bends more like a fabric than a metal.
  • The magnetic clasp in all the applicable bands was stronger than I expected, especially on the Milanese Loop. I feel confident they won’t accidentally come undone throughout the day.
  • I don’t care for link watch bands, so I don’t have a huge opinion on the Link Bracelet; however, it does seem much nicer than other link bands I’ve worn. If you like that kind of band, it’s worth the cost.

Discipline: Breaking the Cycle of Guilt

I often find myself caught in an unhealthy cycle. I’ll start feeling guilty about not being productive, which inevitably leads to less productivity and even more guilt—rinse and repeat as things slowly spiral out of control. If your income depends on these tasks, you can’t wait on motivation to dig yourself out of the hole you’ve created. The only way to reenter the world of the living is through pure grit.

So how do you discipline yourself in the face of no motivation?

By building habits – starting as small as you can manage, even microscopic, and gathering momentum, reinvesting it in progressively bigger changes to your routine, and building a positive feedback loop.

Discipline is a muscle, just like your attention span. The more you exercise that muscle, even on a small scale, the better you get. Like I’ve discussed before, tackling small tasks helps generate confidence and momentum. The key to breaking the guilt cycle is just to make progress on something. Little wins are still wins. If you try and fail, start smaller next time.

To quote Avery Edison:

When it comes to school, I don’t miss the people, or the rules, or the cafeteria food. But I do miss the clear sense of progression, of getting an assignment and completing it, of filling something out and receiving a grade. I miss the clear journey from the start of the path to the end, moving your feet and making your way.

I’m sure a lot of us feel that way, and there’s nothing stopping us from recreating that clear sense of progression in our adult lives. It all starts with discipline and little wins. Try a Seinfeld-style calendar or keep a list of your everyday chores so that you can experience the rewarding task of marking them complete.

iBeacon Delegates Not Being Called

There are a lot of glamorous iBeacon problems out there. This post doesn’t contain any of them. Instead, this is a post about two embarrassingly simple errors and how I fixed them.

Your CLLocationManager Must Be Recreated When You Return from Backgrounding

I read the documentation for CLLocationManager and its delegate methods, implemented them, and then thought I was done. Unfortunately, hidden away in the documentation for a related class, CLRegion, is something important (emphasis mine):

If the app is not running when a boundary crossing occurs, the system launches the app into the background to handle it. Upon launch, your app must configure new location manager and delegate objects to receive the notification. The notification is sent to your delegate’s locationManager:didEnterRegion: method.

My application was launching in the background correctly, but I wasn’t configuring a new location manager and delegate objects whenever the application launched. It’s a quick fix, and it makes sense in retrospect, but that note isn’t where I would expect to find it in the documentation.

CLRegion Doesn’t Notify When Individual Beacons Change

A CLRegion can contain zero or more beacons using the same UUID. While the didEnterRegion delegate method is called as soon as it spots a single beacon, the didExitRegion method is only called when there are no more beacons in range that match the region’s UUID. Don’t confuse didExitRegion with didExitBeaconRange (which doesn’t exist) or you’ll wear a hole in your floor running back and forth between rooms trying to figure out why your app is never notified.1

If you need to detect when you’ve left the range of one particular beacon, you need to actively scan for beacons (battery intensive) or give each beacon a different UUID so you can create and monitor multiple CLRegion’s.

  1. Hat tip to James Barrow for helping me figure this out. I had an idea for how I thought things should work in my head, and it took James to bring me back to reality.

Fresh Starts and Resolutions

January will be over in just a few days, so now is a good time to remind everyone that New Years isn’t the only time you can take steps towards changing your life. There’s a science behind successful resolutions, and it doesn’t require you to wait for a new year. Any milestone of time will work: a new semester, month, week, or even your birthday.

Don’t start out this year with a handful of lofty resolutions that you’ve already failed. Instead, cherry-pick one or two you know you can accomplish and start working on them at the beginning of next week, February 1st. The confidence boost you’ll get from succeeding will help you slowly build up to more difficult goals as the year progresses.

Merry Christmas

Christmas Card 2014

Merry Christmas, everyone! I hope you have a wonderful holiday season, however you choose to celebrate it.

You Don’t Pass or Fail at Being a Person

Nick Bradbury, in a great article comparing programming to life:

I realized that the people in charge are as clueless as the rest of us. Like our software, our society just kind of happened over the years and it’s always on the verge of coming tumbling down. Nobody really knows what they’re doing or what they’re talking about.

There’s no magical moment you grow up, understand everything, and become “good” at life. We can become better at the things we’ve experienced, but we’re effectively a kid again whenever something new and scary comes our way.

There’s a passage I love from Neil Gaiman’s The Ocean at the End of the Lane:

Grown-ups don’t look like grown-ups on the inside either. Outside, they’re big and thoughtless and they always know what they’re doing. Inside, they look just like they always have. Like they did when they were your age. Truth is, there aren’t any grown-ups. Not one, in the whole wide world.

We’re all just stumbling around in our own way, learning as we go, and yet somehow humans have managed to survive for the last 200,000 years. I always find that comforting whenever I’m worried about making the wrong decision. To quote The Ocean again, “You don’t pass or fail at being a person, dear.” Just do the best you can.

Waiting for the Best Solution

The Amazon Fire TV and Xbox One have started implementing voice control, and it’s likely we’ll see future Apple TV upgrades that offer the same.1 But why did it take us so long to make input less awkward? Were we so focused on the best solution that we forgot to look for better solutions that would suffice in the meantime?

We have a wonderful iOS Remote application for controlling the Apple TV but no quick way to open it. Even if our iPhone is within arm’s reach we still need to unlock it, find and open the Remote app, wait for it to load, select the Apple TV, and wait for it to connect before we can start navigating.

Earlier this month I tweeted:

The iOS Remote app should display a notification on your lock screen whenever a linked AppleTV is waiting for keyboard input.

How long would it take to build a solution that opens Remote and connects to your Apple TV when you tap on a notification? It’s not perfect, and it doesn’t cover every situation, but it would have temporarily eased our pain over the last five years.2

I’m not in any position to question Apple’s decisions—they’ve had unequivocal success without my input—but the rest of us could use this as a reminder. The next time you’re brainstorming, try not to toss aside all the imperfect solutions you come up with along the way. Maybe one of them is a simple solution you could implement now while continuing to work on the holy grail.

  1. WWDC 2014 kicks off next week, but the Apple TV’s release schedule isn’t consistent and there are ever-circulating rumors of bigger changes coming this Fall.

  2. iTunes Remote was released in 2008, and iOS has had push notifications since 2009.