Siri Is For Your Mom

As I watched the iPhone 4S and Siri announcement today, I was reminded 3 years ago when Siri was kind enough to drop by the AdMob offices. They came by to demo and get feedback on their app. At the time I was impressed with the technology but I could never envision myself using it.

In the past couple years, since switching to Android, the only use case I have for voice actions is sending a text while driving. However, Apple thinks Siri is cool, $200 million cool. Cool enough to make it a marquee feature of the iPhone 4S. Why?

Then it dawned on me. Siri is not for me (or you). Siri is for your Mom.

Go take a look at the iPhone 4S Siri feature page. For every task that you can ask Siri to do, a techy can do faster with a UI. Need to find a Greek restaurant in Palo Alto. Open up Yelp, type in Greek and you’re done. Need a location gated reminder for when you arrive home? Tap the reminders app, location gate a new reminder, done. What time is it in Paris? Google search “time Paris”.

Now think of your Mom, or some other non-techy in your life. Could they answer the same questions or complete the same tasks? That’s where Siri comes in. In plain English, anybody can now unlock the full magical potential of the iPhone. Apple’s goal is to sell an iPhone to everybody on the planet. Making it easier to use is the best way to accomplish this goal.

I do look forward to Siri’s promise of being your own personal HAL 9000. I just think it’s going to be delivered in two or three generations.

Comments Off

How Good is Your Idea?


You know what’s easy to come by? Ideas. You know what’s hard to come by? Ideas.

I’m sure everybody has doc sitting in the cloud or on their desktop where they jot down the best ideas that come to mind. (If you don’t, start immediately.)

One day, you’ll end up opening that doc to decide which one of your ideas deserves to be turned into a product. How do you choose? They all seemed so good when you had those epiphanies.

At Churn Labs we have an idea sheet shared amongst everybody. Everybody is encouraged to contribute. We’re closing in on over 100 ideas and every one of them seem good. The problem is we only have a finite number of people to execute these ideas. How do you separate the “good” ideas from the cruft ones? Here’s my list of criteria when evaluating an idea.

  • Solve a real problem – Even better if it’s a problem that you personally have. When you’re chasing a solution to a problem you’ll never need to know what to do next.
  • Take advantage of emerging trends/technology – Is your idea only possible now because of an emergent trend/technology? At Churn, we ask is this idea only possible now because everybody has a smartphone in their pocket? Ride the waves.
  • Risk : Reward – How quickly can you create an MVP? Crazy ideas are worth testing if you can build and launch a product fast.
  • Less crowded spaces – How many other startups are in the general space your idea occupies? Ideally, the answer should be close to zero. Less noise, greater chance of lift off.
  • Distribution – There are literally a thousands of startups. Once again, how do you rise above the noise? If you’re idea is inherently viral, it will be much easier to gain traction. You’ll spend much less effort and time to acquire every new user.

Qualifying ideas well help you sort out your own noise and you’ll spend less time on ideas that looked great at first blush.

Also, share your ideas with everybody, don’t be secretive. The mere act of talking through an idea with another person will help you solidify it. You’ll be forced to formulate your ideas into coherent sentences. You’ll be surprised how a great idea on paper sounds utterly ridiculous when you say it out loud.

On the other side, if you’re lucky enough to be a sounding board for someone with an idea, do NOT start off by putting up road blocks. “I don’t think that will work because ….” or “but what about …” are absolutely the worst things you can say. Instead, pause and think about how you can make the idea better. Fan the flames of creativity instead of extinguishing them. At the very least you’ll be exercising your idea muscle.

image from bitzcelt

Comments Off

UITapGestureRecognizer With Parameters

A small blog post for those attempting to create multiple UITapGestureRecognizers handled by one function. Coming from JavaScript, it’s easy to “attach” arbitrary data to elements or objects and references them on the event handler. (el.rel = ; var photoId = event.target.rel;). I explored all options in Objective-C from using the UIGestureRecognizer’s .hash in an NSDictionary to finding out how to implement an NSMapTable in iOS. (Currently NSMapTable is not available in iOS 5).

Finally, I RTFM’d the UIView base object documentation and found exactly what I was looking for; .tag. Although limited to NSInteger, more than enough to identify which view the taps were coming from.

For example, if your project programmatically creates multiple UIImageViews and you want one function to handle all incoming taps, the code is as simple as.

int i;
for(i = 0; i < count; i++) {
    // some image
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    // attach to some view
    imageView.tag = i;

    UITapGestureRecognizer *g = [[UITapGestureRecognizer alloc]
                                    initWithTarget: self
                                           action: @selector(imageTap:)];
    [imageView addGestureRecognizer:g];
}

// handler
- (void)imageTap:(UITapGestureRecognizer *)sender {
  // identifier can be referenced in sender.view.tag
}
Comments Off

ChromeBook CR-48 On Vacation


The CR-48 is the pilot program for Google’s new Chrome initiative ChromeBook. CR-48 is a basic non-branded ChromeBook handed out to a lot of Googlers as a Beta program. I brought mine on vacation last week to Asia to experience what life would be like with a ChromeBook as my primary computer (and admittedly I didn’t want to risk bringing a $2,000 MacBook).

Pros

  • Instant On – Forget booting in 8 seconds, the best thing about ChromeBooks is their instant on. You never shut them down so you’ll never have to boot them. Flip the lid and you’re on the web instantly.
  • Full Keyboard – Having a full keyboard (say over your mobile or a tablet) is an absolute must for a primary computer. I despise cranking out full emails or doing heavy duty web surfing on tablets.
  • Shareable – With guest mode, the CR-48 was easily shareable with my girlfriend. Open up the laptop, click on guest mode, and she has a blank slate to work with. I can imagine it being a communal device as opposed to the your iPad which is very personal.

Cons

  • Web Limited – I need to import some .RW2 formatted files while I was on vacation and unfortunately no image services I could find accepted them. (Not Picasa, not Flickr, not Imageshack, etc). I ended up going to the hotel’s business center and downloaded a simple shareware program.
  • Needs more Horsepower – The CR-48 just couldn’t keep up in some cases (eg. full screen HD YouTube). This is something that can be fixed as components become cheaper. However, the newest ChromeBooks announced from Samsung are pushing the upper price ceiling.

The canonical question is of course, how is the ChromeBook better than a netbook? My answer is that it’s not. A better question to ask is, “Is there room for another device in a world of desktops, laptops, tablets, and mobile phones?”

Comments Off

Don’t Just Build a Mobile App. Build a Business.

Last week I had the pleasure of speaking at Google’s largest conference, Google IO. It was 30 minute overview of how to build a business instead of just building a mobile app.


Don’t just build a mobile app. Build a business.

Comments Off

My Password Manager Solution

After Gawker had a massive security leak, I began to rethink my password solution. I had essentially 3 classes of passwords, high, medium, low. High security passwords, used for financial instituions, were unique for each site and saved in an email thread in my Gmail. Medium and low security had a handful of rotating passphrases and easily guessed 4-8 letter passwords. In general, I didn’t care if one of my medium or low level security accounts was hacked since access to those would net nothing.

However, so many of my web services are crosslinked that it was becoming difficult to keep track of my security holes (see the Twitter hacks as a good example).

So, I figured it was high time that I start using a password manager. After looking at my options, I chose 1Password. My requirements:

  • OS X support – my main computer and laptop
  • Chrome extension – main browser
  • Dropbox integration – Drop dead easy syncing between all my devices
  • Android Support – currently my main phone
  • iPhone Support – previously my main phone but I’d like to keep my options open

1Password fulfilled all these and fulfilled them extremely well. The OS X is easily one of the most well thought UIs I’ve used in a long time. Dropbox integration is built directly into both the OS X and Android applications. Agile Web Solutions, the company behind 1Password, is a commercial endeavor. Usually I favor open source solutions, but in this case I’m guaranteed longevity. (I imagine migrating to another password manager will be a nightmare.)

I spent a few hours transferring and changing my passwords on all the accounts I could remember. The count is up to 51! Odds are that 1 out of 51 of these sites will have a security breach at some point. Now that all my passwords are unique, I can sleep easy.

Comments Off

jQuery Mobile

jQuery Mobile Alpha was released yesterday and it’s very good for an alpha. I think John Resig and team have a long way to go but the project itself is very ambitious. A full mobile framework for iOS, Android, Blackberry, webOS, MeeGo and more is nothing to sneeze at.

For example, after a few minutes on Android, I noticed that the persistent footer nav doesn’t always stick to the bottom of the screen. Since most mobile browser do not have css fixed positioning this ui paradigm is one of the hardest problems to solve. Notice that toolbars simply disappears on touch and reappear.

I look forward to the the next release, at the moment I wouldn’t say it’s ready for a production deploy. It is an alpha after all.

Comments Off

A case for AngelGate being truthy

Watch Joel Spolsky and David Heinemeier Hansson battle it out over Facebook valuation. Save this on in the archives, we’ll see who is right in 5 years.

Winners of the node.js KO contest, very cool stuff.

Posterous shows us how it’s done with some awesome css3 buttons.

Not so fast, H.264 is still not “free forever”.

Seems the xsphere, is all a buzz with js/css compression via png. Turns out gzip is still far better, research here by Cal Henderson.

Part of the 1k JS comp, water ripple effect done in canvas.

Official jQuery Mobile project was just announced. Now we’ll have quality open source and commercial mobile javascript libraries (see Sencha).

A few CSS hacks later and you have an imageless loader. Useful for Android version older than 2.2 (Froyo) since they don’t support animated gifs.

Rock Paper Scissors Strategy, it’s more than just guessing.

7 security experts hold the keys to reboot the internet, sounds like this would make a great movie in about 10 years.

God’s Number, the minimum number of moves required to solve and Rubik’s Cube position, has finally been proven to be 20. Alternatively, the Devil’s number remains unsolved.

JavaScript Pull to Refresh

After seeing Leah Culver’s blog post entitled “iPhone Pull to Refresh“, I was disappointed when I clicked through to find out that it was an ObjC library and not a javascript library. So I set out to see how hard it would be to replicate the UI pattern in javascript.


DEMO | javascript source

This is a prototype/proof of concept which gives a good idea of how to implement pull to refresh in javascript. It uses no javascript libraries so you could easily port it over to your favorite.

To implement the UI pattern properly, javascript must take over the browser’s default scrolling functionality. Any touch javascript framework already does this (PastryKit, jQtouch, etc). Mobile browsers block rendering when the user is scrolling so exposing the “Pull and Release to Refresh” hint is impossible. This limitation also makes it difficult to develop a plug and play javascript library because each framework handles scrolling differently.

This code works on iOS/iPhone and Android. Please don’t abuse this UI pattern too much. :)

6 comments