Tag Archives: design

Pomodoro Pro WatchKit Architecture

My iOS app, Pomodoro Pro, is a constant work in progress. This post discusses how Apple Watch support was added to v1.1.0. Pomodoro Pro is a free, easy to use app for getting work done in continuous work & break cycles.

If you’ve looked into Apple Watch development, you’ve learned that the watch portion is an extension of your phone app. Your phone app is the brains of the operation, and your watch app relies on the phone app to do anything.

2 Way Event Binding Demo

From watch to phone

watch-final

From phone to watch

phone_8

App Lifecycle

With mobile development, it’s necessary to understand when a user will come into contact with your application. If the user comes across your application and starts using it when the visuals are incorrect, the user will lose confidence and not trust your application.

Working with Xcode and the watch simulator, my app has the following key lifecycle events:

  • watch starts up
  • watch resumes
  • watch actions (button presses) are reflected on both the watch & phone
  • phone actions (button presses) are reflected on both the phone & watch

Each of these events are essential for maintaining a consistent user experience that does not surprise the user.

Implementation

My implementation used MMWormhole for 2 way event binding. This means that the phone should know when a button was pressed on the watch and vice versa. Curtis Herbert has a great blog post on sharing data and events.

In order to have the phone app be responsible for the correct timer state, my phone app is responsible for returning a NSDictionary of the current timer properties. My watch app is able to get the NSDictionary and update the watch screen accordingly. It is important to note that my phone app is the ONLY source of the canonical current timer state. Trying to sync state between the phone and watch app would be a nightmare and a lot of work.

When the watch app starts, the watch app asks the phone for the current timer state (a NSDictionary) in order to set itself up correctly. When the watch app resumes from inactivity, it also asks the phone for the current timer state (a NSDictionary).

Using MMWormhole, I’m able to listen on events from the watch or the phone. When the user presses a button on the watch, the watch app passes a message to notify the phone, and the phone updates the timer state. Similarly, when the user presses a button on the phone, the phone app updates the timer state and notifies the watch app with the latest state.

Lessons Learned

  1. The phone app (not the watch app) is responsible for the correct state
  2. Use a Framework or shared classes (in File Inspector, add Target Membership) to DRY (don’t repeat yourself) out your codebase

Summary

With Pomodoro Pro, it was essential for a user to be able to start / pause / resume / stop the timer from either the phone app or the watch app. This required a way to manage the timer state (phone app) and have user actions occur on all screens (phone & watch).

In order to build a user friendly watch app, you should anticipate & identify where your app’s state and events come from. Make sure to account for those scenarios.

Pomodoro Pro v1.1.0 went live on 4/14/2015. Please let me know what you think @rexfeng

Brooks Brothers: Cutting to the Chase

I don’t do a lot of online clothes shopping, so I apologize if this is the norm. I suspect it isn’t the default.

There’s a current sale (May 9-12, 2012) at Brooks Brothers, and their Non-Iron dress shirts are pretty nifty.

Once you go to their site, it looks like this:

Brooks Brothers website sales page Screenshot

Not the prettiest page you’ve ever seen, but it cuts to the chase. This lets you only search for clothes in stock that’s your size. Brilliant! I could care less if there’s a $200 item marked down to $8 if it’s size XXL.

After selecting a size, you’re taken to a page where you don’t have to choose between View 15 per page OR View 25 per page OR View 50 per page.

Shirts Search Results page Screenshot

For my search, it shows all results on one page since bandwidth in 2012 America isn’t as much as problem as dial up 10 years ago.

UI/UX/design isn’t about looking pretty. It’s about having something that’s simple/easy/intuitive to use and gets the task done. In this case, I was able to search only the relevant sized dress shirts, add to cart, and checkout (without creating a user account) quickly.

Pier 15 – Downtown NYC

Pier 15 is just South of the famous South St Seaport in downtown Manhattan.

Street Side Entrance

With the Winter weather over, Pier 15 is a great place to soak up the Vitamin D on a lunch break for those near Wall St.

Pier 15 with South St Seaport in Background

Pier 15 is a two level structure, and they’ve applied to serve drinks here during Summer.

Stairs up to the Rooftop Lawns

From the upper level, you can see the Brooklyn, Manhattan, and Williamsburg Bridges.

East River Bridges

Upper Level looking Downward

SHoP did a great job here.

Northern Staircase looking towards Brooklyn

 

Upper Floor View towards Brooklyn

Wooden Upper Floor View towards South

From Pier 15, as well as most of the Southern portion of the East River, you can see the helipad and Governors Island.

Downwards View of Seating and Planted Area

 

Seating Area View from Ground Level

The design (including furniture) is mostly well done.

Large Open Space next to the East River (Facing Brooklyn)

 

Small Enclosed Tiered Seating Facing South

Pier 15 has a great, open air dynamic that allows many people to use the space at the same time.

Lower Level Room with South St Seaport Reflected

 

From Front to Back: Pier 15, the East River, and Brooklyn

With Winter behind us, this park will continue to get more and more attractive to the public.

Google+ Staging Screenshots

Is Google is ready to leave the familiar comfort of white backgrounds?

Google.com

This new Google homepage is part of their Google+ push. Notice the black bar at the top.

Google Reader

The black bar even invaded my Reader.

Updated Google Reader Mobile Appbar

An Appbar has even taken over their mobile web app.

Apps Section of the Mobile Appbar

This Apps Section shows when you press “more” on the screen above. Oddly, Apps (and not Search) is the default choice.

Search Section of the Mobile Appbar

This is what pressing “Search” reveals.

Bottom of expanded Search Appbar Section

This screen shows you what the bottom of the Appbar looks like. Just in case you forgot you were in the Reader mobile web app.

Google+ Invite Request Screen

Back to Google+.

This is what it looks like when you go to the site uninvited. You can request an invite by clicking on “Keep Me Posted”. Notice “+You” now appears at the top left of the black bar.

Google+ Invite Request Form

This form appears after clicking “Keep Me Posted”.

A strange gaffe here. I have to enter my name and e-mail? If you look at the prior screen, I’m logged into Google Accounts, but here they ask for my info again.

Google Maps (when it finally recognized your Google Account) was the best thing ever. No longer did you have to fill out both the “From” and “To” fields to e-mail map directions. As it currently does, the “From” is pre-populated with your Google Account e-mail address. Recognizing your Google Account after you click “Keep Me Posted” is what Google+ should do.

Camera Design

This is what constitutes popular (good?) camera design today:

Olympus E-P1 digital pen

An obvious design throwback to the days of film cameras, but not very imaginative.

I’m of the firm belief that camera design as we know it today has tremendous room for change. Take the micro 4/3 standard that is mirrorless.  It’s what enables the E-P1 above to be significantly slimmer than a traditional DSLR and retain interchangeable lenses. Going slimmer is just one possible direction.

Below are some camera concepts that break away from “the standard camera” look (think Leica).

D5R Concept by Ned Mulka

This is a neat concept, but not super practical. Why go through all that body change without a number of obvious benefits? Still, +1 for daring to make a camera body that doesn’t conform to legacy design.

WVIL Concept by Artefact

The WVIL concept excites me a lot more. I think the future of professional cameras may involve wireless lenses syncing to a generic touchscreen (think Android phone, iPhone, iPod Touch, or iPad). The WVIL concept is great, but why reinvent the wheel with a proprietary touchscreen when an off-the-shelf generic touchscreen suffices?

I can easily envision a world where a professional photographer has many wireless lenses (perhaps with a gorilla pod each) that are all controlled by a single iPad remotely. All a person would have to do is set up multiple wireless lenses before a sporting event starts. During the event, the lenses would (since this is the future we’re talking about) take continuous ultra high-definition video. The touchscreen controller would be used to monitor focus and other settings.

iPhone 4

Another trend in camera hardware is the disappearance of noticeable hardware. With smartphones packing incredibly better cameras (as in “decent enough”), it’s possible to get high quality photos without carrying around a point and shoot. The trend of nearly invisible camera hardware will only get better as phone cameras improve.

Uniqlo X Canon

Uniqlo rocks. I went there to return some stuff and ended up buying a graphic T while browsing. They have T-shirt collaborations with brands (such as MGS) that constantly cycle.

Naruto statue

While I enjoyed Naruto several years ago, I’m too old to be wearing Konoha merch.

EOS DSLR Body T-Shirt

They currently have a Corporate Collaboration theme for T-shirts. This includes brands like Canon, IBM, and Meiji.

EOS DSLR Parts T-Shirt

Not the sharpest shot, but this shows DSLR parts.

I didn’t end up buying either Canon shirt, even though Canon rocks. Maybe they could come out with a T-Shirt that has the DSLR (with a 70-200 please) & lens strap superimposed on it. Sort of like those tie shirts that are kind of cool, but not really.

Monster Hunter T-Shirt

As I mentioned, I picked up a T-shirt. I got this because it looks badass and I’d wear it in public. Plus, the games sell a metric ton in Japan, which is a plus.

 

Retail Clutter and Web Design

NYTimes:

… it turns out that lots and lots of stuff piled onto shelves or stacked in the middle of store aisles can coax a shopper to buy more.

After the recessionary years of shedding inventory and clearing store lanes for a cleaner, appealing look, retailers are reversing course and redesigning their spaces to add clutter.

This finding surprises me. Before this article, I assumed less clutter + more organization = always better for sales. Apparently, a cleaner look signals higher prices.

Retailers are putting their money where their mouths are by “adding items — and a little bit of mess — back to shelves.

Does this retail insight hold for web design? Which site would you assume has higher prices based on the design/look?

Furniture Site A screenshot, logo redacted

Furniture Site B screenshot, logo redacted

The two websites shown above were picked for their state of web design (and not for the brand/company).

Looking past the world of retail furniture, does a website with clean design signal higher prices to you?

eBay homepage screenshot

eBay has a relatively modern design (whether it is clutter-free is up for debate). Does the homepage signal high or low prices to you?

GoDaddy homepage screenshot

Media Temple homepage screenshot

GoDaddy’s design is arguably more cluttered, and their prices are much lower for hosting than mt.

In a physical retail environment, clutter signals lower prices to consumers. On the internet, this may or may not hold true. Perhaps websites with cheaper prices skimp on the design bill? A website can offer affordable/cheap service and have great, clutter free design.

As a person interested in great user experiences, I’d like to believe that great design is a competitive advantage and not a trait that subconsciously signals higher prices.

Doing Business 101

Excellent, lengthy presentation from Mike_FTW about doing business as a freelancer designer (via Zeldman). This applies to any field, especially startups. I am not a lawyer, nothing here is legal advice.

2011/03 Mike Monteiro | F*ck You. Pay Me. from SanFrancisco/CreativeMornings on Vimeo.

TL;DR:

Get a contract in place before you perform any work that is reviewed by your own lawyer. Contracts are in place to benefit both parties and remove uncertainty.