all micro contact rss

The Face of watchOS

While the toolset is inaccessible, its inclusion in watchOS 4.3.1 suggests Apple is at least considering opening that section of NanoTimeKit to outside app makers.

Whether a full-featured watch face customization toolset will ship to developers in a future version of watchOS, perhaps watchOS 5, remains unknown.

via AppleInsider

Man, I hope Apple doesn’t do this.

I know, it’s conventional wisdom that third-party watch faces would be the best thing since the Destiny’s Child reunion. But I think it would be a terrible mistake.

Designing a good watch face takes time and expertise. If you look at all the faces Apple shipped with the original watchOS, you can see they were all obviously painstakingly thought-out and implemented with care. Check out the custom animations in each one. The attention to detail. Even the faces I tend to never use are at least well-crafted. And there was a nice balance there between the more traditional and modern. More serious and playful.

It’s telling that of all the watch faces Apple has shipped since, only the Explorer is anywhere near the same quality of that original batch. All the others are either derivatives of the originals (e.g. Toy Story, Minnie Mouse, Timelapse), obvious examples of engineering over design (Siri, Activity), or complete WTF? (Kaleidoscope).

If Apple can’t even make good watch faces, what makes us think that random third-parties are going to do a good job?

Now that Jony Ive is back to paying attention to design at Apple again, what I’d like to see them do instead is contract out some experts in watch face design from the industry and have them work with the engineering team to add four or five really good new faces every year. Problem solved.

Flooding the market with crap, as we’ve seen in the App Store time and time again, would do more harm than good.

Do people really want the App Store to be overrun with “20 Awesome Watch Faces” apps?

Take a look at the Android Wear market, if you want a bird’s-eye view into exactly how hideous watch faces can get.

Sure, there may be the occasional winner. But I doubt it’ll be worth the effort of sifting through the garbage.

And given that there’s no way to charge directly for a watchOS app, there will be no financial incentive for anyone with skill to make faces, anyway. So then what? Watch faces with ads? Brand logos from Starbucks, MacDonald’s? It’s bad enough we’ve already got Nike logos.

So what, Joe? Just don’t use any of the third-party faces.

The watch face is the face of watchOS. Imagine Apple allowing third-parties to design macOS’s window style. (Yes, they allowed that many years ago, and it was a design crime of epic proportions.)

When Series 0 was introduced, people made fun of Apple’s attempt to make an elegant fashion timepiece. Apple has since retreated a bit into marketing Apple Watch primarily as an exercise device. I’d hate to see them cede the elegance altogether.

If Apple Watch is going to grow, it’s going to eventually have to get beyond the niche of exercise enthusiasts. That means it has to look good when you’re wearing something other than spandex.

Apple Watch needs to be respected.

I know when I’m wearing my stainless steel Series 3 I’m not wearing an Omega, Breitling, or Rolex. But I do want something that’s going to look nice with a button-down shirt or a suit. Turning the face of the watch into a third-party bottom-feeder billboard isn’t going to help.

Can you imagine Omega letting any Tom, Dick, and Harry design their watch faces?

I’m hoping against hope this was an idea tossed around for a few months, but now that Jony is back it’ll be emphatically squashed. It probably won’t be, but I’m going to keep hoping, anyway.

WWDC on a Budget

I know conferences can be expensive, and everyone has to judge for themselves what “affordable” means. But I’ve seen a lot of people lately say that they simply can’t do WWDC anymore because it’s “way too expensive” and I wanted to address that.

Now, of course, depending on your situation, any conference can be a financial burden. I would never want to imply that conference travel is cheap. But there are ways to cut down the cost of a trip to San Jose every year. Many I’ve found to be a great help in making it possible to continue going.

If it’s just not even within the realm of possibility for you, so be it. But maybe you’ll find something here that helps make the yearly sojourn a bit more attainable.

Don’t go to WWDC. Just go to San Jose

I have never gone to the WWDC conference itself. For years I wasn’t a developer, so I didn’t feel the need. Now that I code as often as I design, I could probably benefit from going to the show. But at $1,600, that’s a huge chunk of cash right out of the gate. Many smaller conferences are far cheaper than that.[1]

There are plenty of things to do in San Jose that week that don’t involve watching talks. In fact, the talks are the last reason to go to any conference. In the case of WWDC, it’s even less a factor, as the talks are made available on video almost immediately after they happen. Even if I had a ticket, I’d probably spend most of the week in the labs and in the hallways, networking with as many Apple employees as I could, rather than sitting and listening to talks I could easily watch later.

Another benefit of not getting a ticket: not having to wait for confirmation you won the lottery before booking your flight. Waiting will absolutely make your flight more expensive. More on that in a bit.

Also worth noting: not having a ticket means you’ll feel less compelled to stay the entire week. More on that, too, below.

Don’t Stay at the Fairmont

San Jose has more than one downtown hotel. (Crazy, I know. But true.) The Fairmont is nice, but it’s way overpriced. I know, “everyone” is staying there, and you want to bump into your favorite people. Here’s a secret: the bar and lobby at the Fairmont is open to non-guests. Also, catching people at a coffee shop during the day is a better way to have a memorable conversation, anyway.

While getting a bargain hotel for WWDC in San Francisco was probably a bad idea, in San Jose the prospects are far less sketchy. The hotel in which I’ve stayed for the past two years is called the Convention Center Inn and Suites. If that sounds like a less-than-luxury experience, it is. (When I first arrived last year, I thought I was walking into a Cohen Brothers movie.) But you know what? It was clean. It was cheap. It was safe. And it was a few blocks closer to the Convention Center than the Fairmont.

Get a Roommate

Both this year and last, I split a room with my friend Curtis Herbert of Slopes fame. He’s a reasonably nice guy, and he doesn’t mind that I tend to snore—a huge plus. This year, we booked a “suite,” which has two beds and even a wall between them. The cost? $170 per night. That’s $85 for each of us. Try getting that deal in most major cities in the US.

Book Your Room Early

There’s a caveat to that great room rate: we booked it in January, before Apple announced WWDC. It’s not hard to predict when WWDC will be most years, though. There was only one week that made sense this year, so we just took a chance. The rate was fully refundable, in any case, if we happened to be wrong.[2]

In years when the dates are less obvious, I’ve been known to book two different reservations at two different hotels, just to cover my bases.

If you try to get a room at the Convention Inn now, it says “Call for Pricing.” That’s what happens when an unsuspecting hotel manager wakes up to discover one morning in April that 99% of the hotel is booked for a single week in June.

Don’t Stay All Week

This is the hardest one for me, because I don’t like to miss any of the action. But if it’s between not being there at all and only getting three days in San Jose, I’ll take the three days. Get there on Sunday (so you can catch a live stream of the Keynote somewhere with friends on Monday morning). Hang a few nights for the parties, etc. Then leave on Wednesday or Thursday. I stretched it to Friday myself this year, but last year I left on Thursday, and I had no regrets. The night-time free events are pretty much done by Wednesday night (since Thursday is the night of Apple’s Bash). 90% of your friends will be gone by Friday morning.

In years past, I’d stay from Saturday until the following Sunday, and that got really expensive. Cutting just a few days off the trip saves not just on hotels, but on food and other incidentals.[3]

If you’re flying in from a really remote location, where a three-day trip just makes no sense, consider three days in San Jose, then an extended trip in another American city close by that isn’t so expensive. Turn it into a mini-vacation.

Take Advantage of Free Activities

Between parties like the Loop Bash, live podcast recordings, music concerts, AltConf, and more, there are lots of free events during WWDC week. You should not have to spend that much on keeping yourself entertained. Most of these events feature free beverages and in some cases food.

Spend Less on Food

Sure, your friends may be dining out every night at San Jose’s most expensive restaurants. You don’t have to. Grab a burrito and catch up with them later. But do make sure you catch up to them later. Not spending time socializing defeats the whole purpose of this trip, after all.

One slightly expensive meal with the right people could benefit you way beyond the money it costs you, though. So make these decisions carefully.

Research Your Flight (But Don't Make it All About Price)

This is one area where I don’t recommend bargain hunting too much. There’s no good way to get your flight cost down, really. You can shop around, but most of the tricks you use to get a cheap hotel won’t apply to flying.

  • You can’t book super early, because most airlines don’t let you cancel or change your flights without a serious penalty.
  • It doesn’t pay to do crazy layovers and connections or to fly crap airlines. The stress it adds is not worth whatever you save in most cases. Fly as direct as you can.
  • It doesn’t pay to choose crazy flight times just to save a few bucks. You will be sleep deprived enough that week. You don’t need to add to the problem by flying at midnight, if you can avoid it.

My rule of thumb—if it saves me several hundred dollars, it may be worth considering. But if it’s a $20 or $50 difference, I don’t bother.

Flying into San Jose can be cheaper than SFO, depending on where your origin is. I’d research. Personally, from New York, I find that direct flights to San Francisco are plentiful enough to be the cheaper and more convenient option. You can split a Lyft down to San Jose with friends if you plan it right, and it won’t cost that much.[4] The train down to San Jose from SFO is cheaper, though it will take longer than you want just to get to the train. Plan accordingly.

Although you can’t book before Apple announces dates without taking a huge risk, I would recommend booking immediately after Apple does make the announcement. When I learned this year that the dates were confirmed, my first stop wasn’t the “Compose new Tweet” button. It was the Delta app.

Flights fill up fast. And airline prices get higher as seat availability decreases. Every minute counts when thousands of people jump to book flights at once. If you wait until Apple announces its lottery winners, prices are sure to be hundreds of dollars more expensive.

The Bottom Line

So let’s add it up: I’ll spend just under $400 for the hotel, another $450 or so for the flight, and a likely incidental food/drink expense of another $600. That means I’m looking at roughly $1,500 to go to WWDC this year. That’s not nothing, but it’s not the most expensive conference trip I’ve ever taken by any stretch.

The bottom line is that if you’re a member of the iOS/Mac tech community, this is not a good time to be getting less social. When your indie business is down, or your full-time job is driving you to insanity with too much work, that’s no time to be isolating yourself and limiting your future options. It’s the right time to be building your network and fostering long-term relationships with people you don’t often get to see. The people I’ve met and spent time with at WWDC have often turned out to be the most important people in my career.

Maybe even with all these cost-cutting measures, you still can’t afford to go. Or maybe the timing just doesn’t work for you. Okay. Maybe next year. But don’t make a hasty decision based solely on financial assumptions or poor planning. After all, not putting yourself in a position to succeed can often be more expensive in the long run.

And if you decide WWDC is just not for you, consider one of the many other great conferences happening around the world. Despite suggestions to the contrary, there are actually more conferences than ever happening in our community. And networking with peers is valuable enough to be well worth the expense once or twice a year, as far as I’m concerned.


  1. This is a moot point, of course, if your company is paying for your ticket (and your hotel, etc.) Of course, if that’s the case, you probably don’t need to be reading this. ↩︎

  2. Most hotels will give you a decent refundable rate if you’re booking very early and the hotel’s name doesn’t start with “Fair…”. ↩︎

  3. Some flights could be effected negatively by shortening the trip, however. But usually not by as much as you’ll save everywhere else. ↩︎

  4. Many folks are willing to wait around the airport for up to an hour just to half their Lyft price. Ask around to your friends who are arriving on the same day as you. ↩︎

The iPhone SDK Turns Ten

I don’t think it’s an understatement to say that this release changed a lot of people’s lives. I know it changed mine and had a fundamental impact on this company’s business. So let’s take a moment and look back on what happened a decade ago.

(via Craig Hockenberry for Iconfactory)

A beautiful trip down memory lane by Craig Hockenberry. It is impossible to describe how different I saw my career path before the iPhone SDK vs after it. A lot has happened since, but nothing as significant—yet.

The Power of the Pan

Way back when I shipped Fin 1.0, it wasn’t very easy to set the timer to anything except a small set of presets. The presets weren’t even editable.[1]

The only way to set a timer for anything beyond the presets was to swipe up or down to add or subtract one minute at a time. You could change the increments in settings—to make it two minutes, or five minutes, or whatever, per swipe—but this gesture was always meant for quick adjustments, not as the primary way to set the time.

To make matters worse, because I wasn’t very skilled at code at that point, I did what many developers do: I punted by using UISwipeGestureRecognizer rather than implementing a UIPanGestureRecognizer.[2]

Later, when I added an animation to bounce the time label up or down with the swipe, and I still left it as a swipe gesture, that really didn’t sit well with me.

A swipe is almost never a simple yes or no. You want your interface to react to the swipe as it’s happening, which usually means moving something on the screen in a similar direction to your finger movement. A swipe gesture recognizer is incapable of reacting in real time.

In this case, I wanted the time label to move in concert with the motion of your finger. But all I could do with a swipe gesture was wait until it recognized the swipe and then move the label. If you swiped fast enough and with conviction, it almost felt okay. But any combination of changing speed or direction immediately gave it away as an inauthentic experience. I wanted a slower swipe to result in a slower animation. I wanted the gesture to be cancellable in mid swipe if you changed your mind.

But I had other fish to fry, so I let it slide.

Along the way, I added left and right swipe recognizers to toggle between the slower 5-second increment for the circle gesture and the fast 1 minute increment. This was a great shortcut for me personally, but it wasn’t very discoverable and probably was getting triggered accidentally more often than I wanted to admit.

Between swiping in all four directions, a long press to bring up the circle, and one and two-finger tap gestures, it was getting to be a pretty complicated gesture landscape on that main screen. Something had to give. The more time passed, the more features I added to that screen, the more daunting the prospect of getting a pan gesture to behave exactly the way I wanted became.

Fast forward to a few years later, and I decided enough was enough. The next update was going to put an end to the madness.

So I replaced all four swipe gestures with a single pan gesture that recognizes the difference between horizontal and vertical swiping, tracks with your finger, and allows you to cancel the gesture mid-swipe if you don’t swipe past a certain threshold.

For vertical pans, once you hit the threshold, time gets added or subtracted. As a bonus, if you keep holding, it will keep adding or subtracting every half second until you let go. So you can add or subtract several minutes with one gesture.

The circle gesture is probably still the way to go for bigger changes to the timer, but for adding or subtracting one or two minutes at a time, panning works great. The gestures work whether the timer is running or not, of course.

While I was at it, I added some icons to the horizontal panning to show the customer what the gesture is about to do.[3] Now it’s clearer that this gesture will change the circle speed. In prior versions, you’d just get a message that the speed had changed after the fact.

As a final bit of fine-tuning, I added haptic feedback on compatible devices. And that really tied the room together. So much so that I added haptics to the circle gesture as well.[4] There’s just something so visceral about that little click under your finger when a gesture gets recognized.

Anyway, now that one of the longest-standing embarrassing reminders of my early-developer years is gone, I’ll have to find something else that irks me about Fin to fix next.

The point is, most of the time you’re thinking about using UISwipeGestureRecognizer, what you really want is a pan. 9 times out of 10, it’ll feel way better to the touch.

That’s not to say I should have done all this work the right way years ago, by the way. Sometimes punting on the tough stuff and getting the product out the door is absolutely the right thing to do. It’s just nice to be able to go back and smooth over some of those rough edges in an app—even if you haven’t gotten around to it for years.


  1. I hadn’t yet added the circle gesture for adding and subtracting time, either. The early versions of Fin were really limited. ↩︎

  2. Swipe gestures are super simple. Set the direction, and when UIKit detects the swipe, you get a method fired. But you only have that one data point: a successful swipe. Pans are far more capable, but also far more complicated for a newbie developer to manage, with distances traveled and velocities with which to contend. You get a lot more data than you usually need, and thus you have to learn to pick and choose which data are important and how best to react to them. ↩︎

  3. Full credit to the makers of Twitterrific for my animations here, as I stole the idea outright from them. The icon pans in from the side of the screen in grey, then lights up to the highlight color when it is “active.” Let go while it’s active, and the toggling of circle speed is performed. Swipe your finger back to make it inactive before letting go, and the action is cancelled. It’s one of those things that’s easier to show than describe. But Twitterrific uses it to great effect when swiping left or right on a Tweet. ↩︎

  4. I really wish iPad had the Taptic Engine. I realize that Force Touch is probably technically really challenging on a larger screen, but I hope Apple does manage to add it eventually. ↩︎

How to Treat a Customer

I really can’t say enough about how awesome Baratza is as a company. I’ve had my Virtuoso grinder for more than five years. Up until recently, I’ve only ever had to replace the occasional $5 part once or twice. (They have detailed videos and instructions on how to purchase spare parts and make the repairs yourself for the most common issues.) That’s not bad, considering how much wear and tear is involved in the grinding of coffee beans.

A few weeks ago, however, I finally ran into an issue I couldn’t repair myself. The grinder just kept getting jammed, despite my best efforts.

After five years of daily use (sometimes multiple times daily) I figured, if it was finally time to replace this thing, so be it. But given that Baratza offers a service where you can mail in your grinder and have them fix whatever is wrong with it for $60, I figured it would be worth a try vs. spending $229 on a new one.

Sure enough, a week or so later I have my grinder back. They basically rebuilt the thing’s entire insides, and now it’s working good as new.

If you like coffee, and you’ve ever looked at the Virtuoso and thought to yourself “$229 is a lot to spend on a grinder” I can assure you, you will get your money’s worth. Heck, you can spend that much in a few months at Starbucks. At the very least grab the entry-level Baratza Encore at $139. I assure you, you’ll spend more money breaking cheaper $30 grinders.

In an age where most companies are full of short-sighted executives who maximize next quarter’s profits over longtime customer loyalty, I’m glad to see there are a few who still know how to make great things and treat customers right.