Category Archives: Uncategorized

A Dynamic Siri

Siri, as shipped, appears already capable of adding functionality according to which applications are installed on the iPhone. Here’s a screen shot of before and after I removed Apple’s Find My Friends app from my phone. How does it do that?

Where’s “Where’s Jason?” gone?

I’m busy so I’ve not investigated this in depth but there are a couple of possibilities. First, Siri might know internally all about how to talk to Find My Friends and just turns on the functionality when it knows that Find My Friends is installed on the device. Second, and the option I think many developers hope for, is that Find My Friends somehow exposes itself to Siri, most likely via some settings in it’s Info.plist.

I took a look at the Info.plist for Find My Friends and there’s no special attributes listed. There are a few URL schemes that it accepts: “grenada:”, “findmyfriends:”, and “fmf1:”.

So, I wrote a little test app that implemented these URLs — no dice, Siri doesn’t enable the “Where’s Jason?” prompt. So then I changed the Bundle ID of the test application to match that of Find My Friends and I got this:

It appears that the presence of Find My Friends in Siri is predicated upon the Find My Friends Bundle ID, rather than some exposed capability. But it looks like Siri uses my application icon (none, in this case) in place of the real Find My Friends application icon. And then just goes and calls the app Find My Friends anyway, despite the fact that I called my app, “WTF”.

This makes sense — if I was making these choices I’d make all the same ones. The abstract conversation goes like this:

VP: How fucking cool is this Siri app?
DEVELOPER: Yeah, it’s tight!
VP: Tight? Is that like rad?
VP: Right on.

Two months pass.

VP: So, we bought it.
DEVELOPER: Bought what?
VP: That Siri thing.
DEVELOPER: Get the fuck out!
VP: What? I fucking pay you, never tell me to the fuck get out.
DEVELOPER: No, sorry, I was expressing my surprised excitement. I really didn’t mean to
VP: (interrupting) Fine. So, you’re on this. Make it better.
VP: Linen. It real needs linen.
VP: Yes.
VP: Yes.
DEVELOPER: Ok, well give me access to the code and a designer and I’ll get on that.
VP: Great. Now, get the fuck out.
DEVELOPER: Out? This is my desk.
VP: Get the fuck out.
DEVELOPER: Ok. I really should eat lunch, thanks?

Three months pass.

VP: Nice work on Siri. I am loving the linen. Why the fuck don’t you integrate with Grenada though?
DEVELOPER: Thanks, that linen background took a lot of eff
VP: (interrupting) Grenada. Have you heard of it? Make it work.
DEVELOPER: I’m sorry, I’ve never actually heard of “Grenada”. Well, beyond that place that Reagan atta
VP: (interrupting) What? It’s Grenada. We love Grenada. It’s got rich Corinthian leather.
DEVELOPER: I’ve not been disclosed. The Grenada project is something I’m unfamiliar with.
VP: Get the fuck out!
DEVELOPER: No, really, I’ve not heard about that project!
VP: Christ, It’s like you assholes don’t talk to each other. I’ll get you in touch with the Grenada lead and you two can figure it out.
DEVELOPER: That’ll be great, thanks!

One week later.

DEVELOPER: Hi, I’m in charge of integrating Siri. What do you do?
GRENADA: We Find Your Friends.
DEVELOPER: Oh, that’s pretty cool. How should we make this work?
GRENADA: Fucked if I know, I’ve not been disclosed about what you’re working on.
DEVELOPER: Ok, well let’s just base this functionality on your Bundle ID and you guys implement a URL scheme that we’ll call.
GRENADA: That’s cool with us. Have you checked out our rich Corinthian leather?


Springboard gets hardcoded to reserve a few URL schemes for an App that doesn’t ship with the OS.

There’s a tight integration between Siri and Find My Friends, but it’s not as tight as you’d imagine if there’d been total collusion between the teams. Siri will display the icon of an app pretending to be Find My Friends, and this makes sense because there’s no reason to bloat the OS with a Find My Friends icon if the two teams are separate and who knows what the final icon might be.

What does this mean? I predict that a Siri API is further off than you might think. The integration of services into Siri appears to be on a very case by case basis and even an internal app required special consideration.

I’ve shipped a number of platforms in my time — platforms are different. You need to make sure that you can guarantee the functionality you expose is something you can support going forward for months, years, and decades. Once you promise to support something, you’re locked in.

Apple doesn’t appear to have an internal SPI for Siri yet, and it’s my bet that they’re a year or so away from it. Even internally it appears that they’ve not yet drafted an approximation. And I don’t blame them. For an AI system like Siri that would require determining the plug-in based upon confidence that it could handle the request. How do you write an API that gauges the trustability of thousands of plug-ins to properly report their confidence?

I’d love a Siri API. I have custom software on a Mac Mini and my iPhone to control the lights in my place via X-10. If I could use Siri for that then Tony Stark would be calling me up for a couple of hints. But I don’t see it happening soon. I’m not sure how it could work, cleanly and while being scalable.

Siri is a process of disambiguation, but installing random apps from the App Store that support Siri can only increase how ambiguous any request is.

I’ll bet on an API later rather than sooner. If only because the success of Siri is determined upon it generating the best possible results and the ranking of those results must be determined by the plug-ins it uses. Once you allow plug-ins that potentially lie then you’ve ruined the entire Siri experience.

About Steve

I’m not the sort of person that has personal heroes. That’s what I thought before last night.

My story is similar to many of those in this community of my generation: I learnt to program on some iteration of the Apple ][ by typing in BASIC programs from books and magazines (mostly games. I wanted to play games and that was one of the few avenues available to me). I followed my love of software (though I spent much of the nineties on OS/2 and Windows NT) until eventually coming back to the Mac when Apple bought NeXT and Steve re-entered the fold. Steven Frank, Gus Mueller and many others have already told the story I’d have told of how I became enthralled with what I do. As time progressed I moved to writing first Macintosh and then iPhone software. Steve even used software I’d worked on during a demonstration at a WWDC. I’ve friends who have met him, I’ve friends who have worked with him, I’ve friends who have spent far too much time sitting outside his office while he picked his favourite desktop picture. There are a million humanizing stories about Steve Jobs that have yet to be told but they’re for those who knew him to share.

When I heard that Steve Jobs had died one of my first thoughts was, “Who do I work to impress now?”

That’s when I realized I’d had a hero figure all this time.

SecondConf 2011

I was flattered to be invited to speak at SecondConf this year. Billed as a, “three-day, Chicago-style, single-track conference” SecondConf should properly be known as, “the successor to the incomparable C4”. Following in the format prescribed by that earlier cult conference, SecondConf delivers the same spirit, intelligence and whimsy. Also, the Chicago style pizza.

The conference went off without a hitch, the organization and preparation were top notch, our hosts were gracious while still driving the event forward, and my fellow speakers were only overshadowed by the calibre of the attendees at hand. Writing a piece about a conference you’ve just attended tempts you to pick out highlights. I think that’d be a mistake though — there was far too much great content and far too many high quality after-conference chats to single anything out in particular. I met a bunch of great people and enjoyed the company of many friends I’ve made over the years I’ve been involved in this business.

I had the good fortune of attending C4 a few times. I met some terrific people there — Lucas Newman and Mike Lee while they were both still at Delicious Monster, Jessie, Maja and Terry too, who’ve all since moved upwards and onwards. With a crowd smaller than WWDC, C4 afforded me the opportunity to spend time with Chris, Gus, Brent, Daniel, my Rogue Amoeba compatriots and alumni, and many, many more. I met my Çingleton co-conspirator Scott Morrison at a C4. Matt Drance was there too, which was a pretty shitty thing for him to do. Still, C4 was a goldmine of intelligent talks, great people, and an invaluable experience for everyone who ever attended.

SecondConf is a worthy successor — don’t miss it next year.