July 6, 2007

iPhone's AJAX SDK: No, thank you.

Writing a good SDK so that third-parties (like me!) can write apps for the iPhone will be hard for Apple. I understand this. They've only just barely started writing their internal application frameworks for this beautiful little device, and we developers are demanding that they clean those frameworks up for general use, make them totally secure (so we don't accidentally or maliciously crash, infect, or slow down people's phones), AND keep them from sucking up too much of the iPhone's precious RAM.

Not easy tasks, any of them. I'm willing to wait.

What I'm not willing to do is starting programming in AJAX, as Steve so gleefully announced we should do at the (non-nondisclosured) WWDC keynote this year. What you might not have heard, if you only saw the video online, were the moans of the developers in the room when he announced this "no-SDK" SDK... if this AJAX thing was just a trial balloon, as some have theorized, then Steve should have had Jimmy Page up there, because it flew like a lead zeppelin.

Now, to be fair, even if the iPhone never gets a decent SDK for outside developers, I'll still love the little guy. The iPhone does what it does very well -- it's a wonderful phone and organizer, beautiful and fast. This is like bitching because my Lotus doesn't have an SDK... well, it's a car. It accomplishes its car-related duties very well. It'd be fun to be able to hack my ride, but I'm not shedding any tears about it as I bomb along the road at 135 MPH.

But Apple has tried to tell us developers we can immediately make and (presumably) sell web-based applications for the iPhone, while ignoring that none of us are set up to run apps off of giant web servers (whose power and bandwidth must scale based on the number of customers we'd have), nor to program in JavaScript, nor to do the recurring online billing we'd have to do to pay for these servers (and store our customer's data). To strain my analogy, this is like Lotus telling us: "Hey, you can mod out your car by, uh, putting different songs on the CD player." It's like: (a) no duh, and (b) not really.

This is only the beginning of the problems with the AJAX / web browser approach:

- Not very many companies on any platform are successful at selling web applications. Sure, there are some high-profile exceptions, but they are high-profile because they are exceptions. Google, for instance, gives their web apps away. What does that tell us? It tells me I don't want to compete in this space. I mean, sure, I could write a web site that sells, like, wine on the net, but that's not really an iPhone app, is it? It's a web store that looks good on an iPhone, at most. I don't want to write web stores, I stopped doing that in 2001, when the web collapsed the first time. I want to write apps.

- The iPhone really isn't a good match with any kind of subscription-based websites anyways, since it doesn't remember passwords or autofill forms, so my supposed paying customers would have to laboriously type in their names and passwords EACH AND EVERY TIME they used my putative for-pay site. Yah, that's gonna fly. After two days I have stopped using my iPhone to access even free sites that require a name and password (like my bank, or calorie-count.com), just because I can't stand typing when there's no auto-correction (it can't auto-correct your e-mail address!) and I can't remember my passwords from day-to-day anyways.

- It would be kind of horrible UI for my AJAX iPhone app to always have a useless (in the context of my app) URL bar at the top of the screen and back and forward buttons at the bottom -- I can't customize what controls the user sees from inside Safari. I can't help but notice none of Apple's built-in iPhone apps have extraneous widgets taking up 1/6th of the screen. I feel like maybe there should be a UI guideline against burning up a bunch of the screen on widgets that are worse than useless, except maybe not because it is SO DAMN OBVIOUS THAT RUNNING AN APPLICATION INSIDE A BROWSER IS AN INFERIOR USER EXPERIENCE.

- My AJAX iPhone app wouldn't get its own launch icon on the iPhone's home screen, no matter how cool it was or how much users loved it -- I'd have to train my users to bookmark my page, and then open it by going to iSafari and pulling up the bookmark, which doesn't even have an icon, EVERY TIME. Awful, awful user experience.

- I became a Mac developer so I could program in Cocoa, not because I have some inherent love for objects with a big Apple on them. If I wanted to program in a crappy language just so I could get more customers, I'd switch to Windows, not stinking JavaScript. Cocoa has EIGHTEEN YEARS of design and evolution behind it from some of the brightest people in the business. It's famous for being fast, concise, and powerful. JavaScript was thrown together by some dudes a couple years ago to make web pages kind of, like, do shit and stuff. It's famous for being slow, hard to read, hard to program, and incompatible across different platforms.

- I don't trust any "SDK" made by a company that won't use it themselves. Where are all of Apple's AJAX apps for the iPhone? Anyone? (*chirp*) The iPhone apps are not written in JavaScript -- or at least no JavaScript I know. Show me the secret JavaScript commands to get at all that CoreAnimation goodness you guys use, and to get at the Bluetooth and 802.11 and multitouch and local storage, and then maybe... well, no, actually, I still don't want to write code in JavaScript.

This is why I've never tried to program for any of the many, many systems Microsoft has tried to foist off on us over the years (Direct-stuff, Active-thing, C-sharp, .Net, Live-whatever) -- because they don't fucking use their own stuff. They write demo apps in them, sure, and tell *us* that their frameworks are going to be the basis of the next generation of wonderful applications, but in the end Microsoft's OSes and their Office apps are just a bazillion lines of old C code, and the programmers who got duped into using Microsoft's new untested frameworks realize that, surprisingly, untested frameworks never work.

Us programming in AJAX while Apple programs in real OS X is basically a case of Apple not eating its own dogfood, except that JavaScript isn't dogfood, it's dog shit.

- Pretty much all the cool stuff I'd want to write for an iPhone can't be written inside the straightjacket of AJAX:

+ I want my customers to be able to scan in barcodes with the iPhone's camera... nope.
+ I want them to be able to wirelessly send these newly-scanned items to the base computer... nope.
+ I want them to be able to scroll through a page full of beautiful renderings of all their books... well, ok, I could (and will) do this by publishing to a web page, but that requires the user to have a web server somewhere, AND wait for her books to download over EDGE, instead of having them locally.
+ I'd like them to be able to re-sort their libraries with CoreAnimation effects, delete books with a flick, etc. Nope nope nope.
+ I'd like for two people who have iPhones to be able to click a button and have the iPhones quickly wirelessly compare their likes and dislikes, and pop up the resulting matches. "Hey, you both love these films... here's some recommendations Bob has for Sally based on your shared likes, and here's some recommendations Sally has for Bob".... nooooooope.


Apple's got a decision to make: it can try to fix all the myriad problems with developers actually trying to deploy non-free applications using AJAX, OR it can say, "Look, this isn't going to be easy, but we're smarter than hell, and we're going to make a secure, tight, mini-Cocoa for the iPhone -- this is our chance to start fresh and do everything right. No NSCells, everything animated, resolution-independent from the start, no CF stacks under and NS stacks, always garbage-collected, all database-driven..."

[There is a third rail, that I've suggested to some at Apple: allow advanced users to specify, in iTunes, that they want their iPhone in "hacker" mode, and thus open to unsecured apps, and then just let the community play around willy-nilly and see what we come up with. Apple could then take our best ideas and put them in mainstream iPhones, akin to what they did with CoverFlow, or iTunes, or iMovie. These crazy iPhone users would forgo support, obviously, but re-securing the phone would be as easy as re-installing the original firmware.]

If you look at it from another perspective, this is a "crisortunity" -- it's Apple's chance to write a new, tighter Cocoa, that has a HUGE built-in market (eg, all iPhone users) to attract developers to it. And, then, eventually Apple could port this back to Macs, and in a few more years it could gently replace the old, kind of bloated Cocoa we have now, as Cocoa is doing with Carbon as we speak.

As I said, the iPhone is a great device. I'm not going to start some crusade about the SDK; I'll love the iPhone even if it never has a real SDK, but I'll also be keeping an eye out for a device from another company that lets *me* be creative, and not just Apple's chosen few engineers.

So what's it going to be? JavaScript on steroids? Or a secure, small, robust Cocoa-light? Either one is going to take time, but only one is going to have me programming for the iPhone at the end.



Anonymous Anonymous said...

I think it's pretty obvious that Apple had its hands full getting the iPhone out on time, what with the user interface, adapting the OS, working with AT&T, etc. People wanted a way to develop things for the iPhone, and this is all Apple had ready.

My gut feeling is the real reason we have no iPhone SDK (aside from the development time) is that Apple wants to make sure we use the iPhone and get used to its very unique (and very intuitive and usable) interface. After all, a lot of assumptions have been tossed out the window, including the clipboard, menus, scroll bars, windows, etc. This is a whole different ballgame, and I could see a lot of crap showing up otherwise. It may also be the case that Apple just hasn't finished their own internals enough to write a proper SDK. I don't expect current limitations such as lack of a clipboard and a keychain to last for long, and that will heavily affect the types of applications developers write.

In the meantime, web-apps seem to be better than expected (little solace to Cocoa/Carbon programmers, but work with me here). A framework of sorts for iPhone applications has already been created to properly hide the surrounding chrome, create iPhone user interface elements, etc. The folks doing Trillian already have their chat program working pretty well as a web app. Others already have SSH and psuedo-VNC access to remote systems via cleverly done web sites. So for internet-focused applications, things are actually not all that terrible. No, it's not "real", it has no launcher icon, and lacks the polish and local datastore that a real application can provide, but it's a lot better than nothing.

A "real" SDK will come soon enough. If it doesn't, then Apple will really be in trouble.

July 08, 2007 10:14 PM

Blogger Matt Chaput said...

Wow, slagging someone else's language. You might think a Cocoa programmer might not be so quick to do that, given the level of ignorance other programmer show about ObjC, but then you wouldn't be Wil Shipley.

I often enjoy reading these entries, but you always come across as a little bit of an asshole. Full of yourself, overly critical and a bit mean. Dismissing and dissing, out of pure ignorance and spite, the work of the people who made Javascript -- people who have done more for the world, and written a better language, than you have or likely ever will -- is truly a huge asshole move.

July 08, 2007 10:21 PM

Blogger wisequark said...

I couldn't have said it better myself. WWDC this year was fantastic but the keynote actually got me angry. Leopard has a ton of great features for developers but the "top secret" stuff from last year? You mean a new dock and a menu bar that just about everyone hates? Then the SDK for the iPhone is no SDK at all? Come on Steve, that's stretching the RDF a little bit...

When he said "And it's sweet" I thought we were going to hear about the next generation of Cocoa. Instead we got sweet nothings shoved into our hands and told to run with it. As someone who works in Cocoa and writes web apps, I still think this development model sucks. I write web apps because I have to but I write OS X apps because I want to and unless Apple can somehow give us Objective-Cscript and CocoAX I'm not wasting my time on writing iPhone apps. I'll wait until I can do the real thing.

I don't know how everyone else reacted but I found the keynote to be almost a bit insulting where the iPhone was concerned.

July 08, 2007 10:21 PM

Blogger Patrick said...

Your "third rail" that you've suggested is essentially what Danger does with the Sidekick.

Basically they require from you an "original" app - something that you wrote on your own and didn't just download from somewhere and tweak (I wrote a dice roller) - and then they will give you a developer key for your device which unlocks it for whatever you want. You forgo software support at that point, but you can hack to your heart's content.

They don't expect very many of their developers to actually write anything that ends up in the catalog of software available to "mortals", but there are a lot of really cool apps that the community has come up with anyway.

An SDK is one of my four "things that Apple needs to fix" before I will buy an iPhone. (But the things are so SEXY...)

July 08, 2007 10:22 PM

Blogger Wil Shipley said...


You kind of kill your own point by insulting me while telling me it's not cool to ever insult anyone. It's like holding a gun to someone's head and yelling, "GUN CONTROL! NOW!"

Honestly, have you ever noticed that people who immediately accuse others of ignorance and spite are usually coming from a position of both?

I've programmed JavaScript, I know its origins, and I've written a fucking web browser that's older than Safari or Internet Explorer or Netscape; I'm not speaking out of ignorance.

And I have nothing personally against the 10,000 guys who wrote it. It's just ugly as hell and was designed by committee, sort of, except really it was designed by several competing committees and companies. And it shows.

If you'd like to argue that JavaScript is somehow a better language than Objective-C, please go ahead and start a blog to do so. And I promise I won't go there and call you an asshole for dissing my language.

In the meantime, try to get a little bit of a sense of humor when you read my blog, or just don't read it if it upsets you so much. Seriously; if you think I'm a jerk, don't read my stuff. Please. It's hard enough trying to write without having people tell me that nothing I've ever created is any good.

Ms. Manners once said the rudest thing to do is point out someone else's rudeness in public. By extension, what do you suppose the biggest asshole move is?


July 08, 2007 10:36 PM

Anonymous George S. said...

A recruiter from Apple called me a couple of days ago to ask if I would like to join the team working on the iPhone SDK. I passed on the offer, so please don't stalk me.

July 08, 2007 10:55 PM

Blogger Brad Fults said...

I agree that Apple should (and probably will) make a real SDK for iPhone app developers.

I enjoy your caustic wit when it's crapping on everyone else. Not so much when it's in my backyard.

But then I recognize my bias and your right to an opinion. JavaScript is awesome.

Oh, and, ObjC is icky. :)

July 08, 2007 11:33 PM

Anonymous Anonymous said...

Excellent post. Thanks for putting into words what many of us are thinking.

July 08, 2007 11:43 PM

Anonymous Anonymous said...

Argh, the Internets ate my post, which was probably too long, personal, and rambly anyway. (Blogger timed out -- maybe an avalanche of people submitting comments?) Must remember -- when writing a long-winded comment, keep a copy somewhere before hitting "Submit"...

*Anyway* -- great post, it got lights going off in my head.

July 08, 2007 11:51 PM

Blogger Jay said...


I'm sure you're aware of the difficulties of making a low-level language such as 'C' secure. Since Objective-C is a proper superset of C, it shares the security issues of C. The Cocoa frameworks are pretty good, but I question if Objective-C is appropriate for a device such as the iPhone.

I'm curious if you have any thoughts on the security issues of Objective-C as it might relate to the iPhone, and if you think that any other language, coupled with the Cocoa frameworks (or a 'mini-Cocoa'), using the existing Objective-C runtime might have potential as the basis for a more full-featured iPhone SDK.

Apple has backed away from Cocoa Java, so that wouldn't seem to be in the cards. And honestly, I don't know enough about Python or Ruby to know if they (with the current state of their connections to the Objective-C runtime) would be possible contenders.

Bottom line, I seriously question the suitability of Objective-C for platforms such as the iPhone where security is a high priority. Unless and until Apple addresses the language issue, I doubt we'll see anything resembling a 'real' SDK.

July 09, 2007 1:12 AM

Blogger earthboundkid said...

Wil, I think you're right about the SDK, and mostly right about JavaScript sucking, but in a way the problem is you're comparing apples to oranges. JavaScript is a language with half-assed support from a bunch of browsers and few compilers, whereas Cocoa is a bunch of APIs supported by one company and one OS. Comparing a language to some APIs isn't exactly a one-to-one correlation.

You've gotta admit Wil, you wouldn't keep programming in ObjC if you couldn't have the Cocoa APIs, right? I'm sure you like ObjC as a syntax, but it's Cocoa that makes ObjC so powerful.

So, I think the problem is that when you say, "JavaScript is dog shit," people read that as meaning, "JavaScript the language is dog shit," when what you mean is, "JavaScript the language isn't really my cup of tea, and JavaScript the collection of APIs is dog shit in heat with an infected colon."

Of course on top of that, your blog is frickin' hilarious because you state your opinions in an over the top way, which I guess some people find off putting. I say keep it up though, because a non-asshole-ish "Call Me Fishmeal" would be boring as sin.

July 09, 2007 1:47 AM

Blogger Mike said...

So when did you change your view on Garbage Collection Will? I'm sure I remember see several posts from you on how unnecessary it is.

July 09, 2007 2:17 AM

Blogger Wil Shipley said...

I cannot talk about my feelings on garbage collection yet, sadly. Everything I would say is under NDA, and I've been told explicitly I cannot have an exclusion on this issue.



July 09, 2007 2:51 AM

Blogger Wil Shipley said...

You're right I wouldn't like Obj-C as much without Cocoa around it, but I wouldn't really like JavaScript even if it had Cocoa around it...

It's just too fast and loose. I want compile-time checking. I want a real debugger. I want type checking... etc.

July 09, 2007 2:53 AM

Blogger Wil Shipley said...

I don't necessarily fully understand buffer exploits, but it appears that Apple has locked 'em down to a great extent in OS X, by marking data pages and not executable and executable pages as not writable. I mean, I would sure think that would do it.

I have no idea if this is the case on the iPhone, but one would imagine so.

July 09, 2007 2:56 AM

Anonymous Tyler D. said...

Yesterday I watched the WWDC stream (kinda late) and it was almost painful... oh the horror!

Steve: "I do have One Last Thing..."


"...what about developers?"

(Audience cheers and claps)

"We've come up with a very sweet solution."

(All are eager to know what comes next)

"…full Safari inside …Web 2.0 + Ajax…"

(Bitter silence.)


Why? A few speculations:
1. At&t doesn't want it, because an VoIP App would be developed.
2. Apple wants to control all, the whole package, and will provide (sell) every App.
3. They are just not ready yet.

I hope there a native SDK coming in the next few months. Think about games: You can't make kickass games just with html+Javascript. You need at least flash (and even than you are limited). But with an SDK Apple would instantly rival the Nintendo DS and Sony PSP. And this are gadgets which are selling in the tens of millions!

> ask if I would like to join the team working
> on the iPhone SDK. I passed on the offer

Well at least this keeps me hoping.

July 09, 2007 3:53 AM

Anonymous Anonymous said...


I was about to tear you a new one, but I see that Wil has already disabused you of your belief that he must not know Javascript.

On another note, the iPhone's non-SDK actually is entirely adequate for my purposes, as it happens. All I need to do is connect to a Mac Mini in the trunk of a car, and let the phone provide the UI for web apps that have one and only one client.


I'm pretty sure Apple will give us a proper iPhone SDK in the near future. I've asked them for an iPod SDK on several occasions, but the outcry for an iPhone SDK is vastly bigger than it ever was for the iPod.

Oh, and I don't believe for a second that Apple will be "in trouble" if they don't issue an iPhone SDK. It's not like people love their Symbian and Windows Mobile phones.


July 09, 2007 4:03 AM

Blogger Mitch said...

I could get on board if Apple said an SDK was six months or a year away. And I also mean a real ObjC/Cocoa SDK with access to the hardware.

The biggest problem I have with the Javascript/AJAX baloney is the lack of local "app" and data storage. If we could toss a widget onto the iPhone and store/sync data, developers could create some good, useful mini-apps. Javascript isn't ObjC, but it can get the job done here.

No, those apps couldn't access the camera, bluetooth, or the other core functions of the iPhone. But I do think there's some money to be made. Landware's Pocket Quicken is a popular $40 app I used on my Treo. Give me offline app/data/sync and this kind of app would function well. So would adjuncts to Mac/PC-hosted CRM app, or project management app.

Apple could do this tomorrow. This is what I expected at WWDC, and I was one of those moaning when we got the non-announcement.

My biggest concern about the iPhone's viability is that Apple hasn't recognized the value of extending the platform by third-party developers. Palm did, from day one. At a Boston MacWorld eons ago I bought a shrinkwrapped bundle of the new Palm Pilot 5000 and Codewarrior for Palm. They knew their first customers had to be developers.

The first must-have app for the next era of handheld devices has yet to materialize. It will happen. I hope it's on the iPhone.


July 09, 2007 4:27 AM

Blogger Matt said...

Security is over rated.

I'm not sure how the *potential* security exploits on the iPhone would be any worse than on the real OS. Sure it could send your contacts somewhere or call Iceland, but a simple cost benefit analysis (in my head) indicates that people are willing to take an inherent risk - as they do with downloading software to any device.

July 09, 2007 5:13 AM

Anonymous TheBoyKen said...

For me it's not just that the announcement of the 'SDK' is an insult to mac developers, or that Apple are using their own APIs to make 'real' apps. The most puzzling bit for me is: why did they take an already AJAX / web-based technology (Google maps, the AJAX poster child) and turn it into a desktop app?! How can they claim that AJAX / Web 2.0 is fine for everything when they're actively taking the time to port these things to desktop apps!?

Presumably it is a mix of "looks snazzier" and "we can't do mouse dragging yet", but it doesn't help sell your 'SDK' to developers...

I also agree about the "web apps are a great strategy as long as you're a company that has a data farm the size of Google / Apple to act as a back end" argument - not exact the land of indie development that one would have hoped would have inspired innovation :-/

July 09, 2007 6:01 AM

Anonymous Dylan said...

I think this article was spot on, and I think you really speak for a lot of us that have wanted an SDK for devices like the iPhone. A quick note on the side: deeda's Pi was announced on New Years Eve and has a dev timeline verified by the Boston Globe from 2005. The interesting thing is that they've been working from the beginning to bring exactly what we want to market--an adaptable and customizable OS and application builder--

No big Apple bucks means they lost the first to market advantage but I really believe they'll pull through in the end.

I believe in this because after contacting them I've started helping out with frameworks for their various SDKs.

If anyone is interested to help out or learn more, it's www.deeda.com. And No... this is not vaporware.

July 09, 2007 6:29 AM

Blogger Trausti Thor said...

Calling Iceland is not the worst thing you can do :)

If enough people say that Apple will ship SDK will that make Apple ship it ?

But man am I looking forward to October, not for getting something I am not allowed to talk about because I already have that.

I want to read (and hear) Wil talk about everything he is not allowed to talk about. I imagine Wil on the verge of exploding right about now of everything he wants to talk about

July 09, 2007 6:37 AM

Blogger The Slick One said...

I wasn't bothered by the lack of SDK at first, since I don't yet have the skills to utilize it anyway (Big Nerd Ranch, here I come, woo!). I'm certainly not (yet) close enough to Mac programming to feel insulted by the lack of a "real" SDK. I can envision mobile extensions of the applications I envision writing, but the reality is by the time I'm ready to make those happen, there probably will be an SDK.

However, an iPhone that is in airplane mode and without headphones gets real boring, real fast, right now. I want some games. Games that don't require an internet connection, I mean. So a real SDK can't get here fast enough as far as I'm concerned.

July 09, 2007 7:03 AM

Anonymous LKM said...

I agree with everything you say, except that I, too, have to point out that JS (actually, ECMAScript) is actually a neat language. There's a hell of a lot of stuff you can do using a prototype-based, duck-typed, quasi-functional language that you can't do using a class-based language like Objective-C. The other way around is true, too. They are different language used for different things. Both are good languages.

What sucks about JS is not the language itself, it's the damn subtle implementation differences between different browsers.

July 09, 2007 8:06 AM

Blogger mike3k said...

I want to make LoJack for iPhones. I don't even need Cocoa, just CoreFoundation & BSD layer.

July 09, 2007 8:19 AM

Blogger wisequark said...

You know, I could have even accepted "We don't have an SDK yet but there's an incredible community built on developing widgets and we're going to let them do what they do best on the iPhone." And let us create widgets to sync onto the phone. It would at least solve half the problems Wil talked about (no Keychain, server loads, EDGE, usage in a subway, etc).

July 09, 2007 9:08 AM

Blogger Pilky said...

Jay, you question Obj-C's use on a mobile device due to security issues with low level languages. What do you think the OSs on most of these mobile devices are written in? OS X is UNIX based so mostly written in C. Same goes for Linux and Windows based devices. Yes it's harder to make them secure, but harder != impossible.

Wil, great post, you summed it up perfectly. Just out of interest, what things would you most like to see removed in this slimmed down Cocoa?

July 09, 2007 9:10 AM

Blogger Andy said...

Does anyone think it's possible for Apple to just *not* release an SDK? Ever?

They haven't for the iPod, and it seems to be in their benefit to not do it for the iPhone either. More security, more ability for them to sell "licensed" apps through iTunes, and less support costs associated with people installing crap on their phones and crashing them/sucking the battery dry/etc.

I would love to see 3rd party apps on it, but it doesn't seem to jive with Apple's philosophy, which is all about *control*. Just throwing it out there...

July 09, 2007 9:43 AM

Anonymous Anonymous said...

I think a simple, "It will be a number of months before we get the SDK out, but if you really want to get something done now try AJAX" would have been a nice, acceptable answer from Apple.

One side note: Last month the Wall Street Journal published an article describing how wireless carriers, including AT&T, have had a history of blocking cellphone makers from easily adding software (e.g., chat, maps, games, etc.) to their phones. Maybe there is an issue here with the SDK.

July 09, 2007 9:44 AM

Blogger cjwl said...


The BREW platform used by Qualcomm/Verizon is C/C++ based and allows low level access. This is a pretty successful SDK and there are lot of of apps available for even the lamest phones. Developers pay for a certificate which allows them to load apps on the phone for testing. They also have a marketing pipeline for selling your application on the networks (has to be good enough, not competitive with the networks apps, etc.)

Objective-C is fine for a phone, pull your head out of the Java sand.

July 09, 2007 10:04 AM

Blogger TB3 said...

Dead on, Wil. Ever since was announced, I've thought that my app, Horizon would be a perfect match for the iPhone. (Shameless self-promotion. :P )
Sure, I could probably hack it together with HTML tables, JavaScript, and a server calculating engine, but the user experience wouldn't be anywhere near as good as I could get with access to the iPhone UI.

July 09, 2007 10:07 AM

Anonymous Anonymous said...

Wil, I think you should take back your words about Microsoft. You have no proof that they're not "eats their own dog food".


Win32, MFC are used heavily for MS desktop app software. Last time I checked, all of them came from MS.

Sharepoint uses ASP.NET and SQL-Server.

Which MS software that they're not using it? (aside from SourceSafe but that's 1 product out of 100s)

July 09, 2007 10:52 AM

Blogger Wi-Fi said...

Let me know where you're driving 135 mph so I can avoid that stretch of road.

July 09, 2007 12:43 PM

Blogger destraynor said...

I really liked your post, I much prefer reading seething angry fiery posts that ones that walk a tightrope not offending anyone.

By extension I'll point out that one reason you can't write much worthwhile on your iPhone is that Safari can't upload files!

I'm struggling to think of a successful web app that doesn't require or heavily rely on the ability for the user to upload files. No pictures, no documents, no nothing. It's a shitty user experience.

And yes, 37 signals re-skinned Tada List for the iPhone, big fucking deal. It's hardly a killer app, If they put one of their money makers on the iPhone, then maybe we could see an argument, but BackPack, Basecamp, Campfire etc all seem a bit more complex.

Anyways, Nice one Wil.

July 09, 2007 12:48 PM

Blogger Wil Shipley said...

Win32, MFC are used heavily for MS desktop app software. Last time I checked, all of them came from MS.

Sharepoint uses ASP.NET and SQL-Server.

Which MS software that they're not using it? (aside from SourceSafe but that's 1 product out of 100s)

Yah, um, I'm pretty sure I specified MICROSOFT OFFICE. You pretty much named stuff that's not Microsoft Office. Way to go!

July 09, 2007 2:40 PM

Blogger Wil Shipley said...

Let me know where you're driving 135 mph so I can avoid that stretch of road.

Generally it's on I-5 North, late at night, in the left-hand lane. You won't have to avoid it because I don't do it when people are around -- I'm not going to endanger someone else's life to get my jollies.

There's a reason I've only gotten one ticket in the last 10 years. And it ain't cuz I'm so damn handsome.

July 09, 2007 2:43 PM

Blogger Walt French said...

...marking data pages [as] not executable and executable pages as not writable.

Hope I'm not too out of date here, but I thought all the overflows exploited the undifferentiability (whew!) of the stack... put up "32" bytes that are actually a few hundred, thereby overwriting a callback function's address with an offset to local code

July 09, 2007 4:58 PM

Blogger Wil Shipley said...

I think this is why Apple has disabled functions-inside-functions from c99, if I understand Ridiculous Fish correctly -- it's so the stack doesn't have to be executable.

July 09, 2007 5:30 PM

Blogger gliderguider said...

I think this is why Apple has disabled functions-inside-functions from c99, if I understand Ridiculous Fish correctly -- it's so the stack doesn't have to be executable.


Um. I write compilers 'n stuff, including for languages with lexically-scoped functions and closures, and I don't have a clue how you came to think that nested functions has anything to do with executable stacks.

They don't. Trust me on this.

Or at least they don't have to. I suppose it's possible that someone, somewhere, has implemented closures using thunks instead of environment pointer arguments AND builds their thunks on the stack instead of the heap. Which would mean that the closure can't survive longer than the function that creates it. Which would defeat about 99% of the whole point of closures in the first place, making it a stupid idea *anyway*.

July 09, 2007 6:28 PM

Anonymous Anonymous said...

Wil, BizTalk uses WF.

Live Beta software uses WPF.

Basically Microsoft is using their own framework.

July 09, 2007 6:50 PM

Anonymous Anonymous said...

Great piece. Don't know from code. Have Delicious Library on Mac. A better product for iPhone. Get that you can't write it for iPhone. Illogical that Apple won't let you.

July 09, 2007 7:22 PM

Anonymous Steve Streza said...


I originally started off writing some counter-arguments to your post, which grew pretty sizably. I spun it off into it's own blog post. One theory is that the mini-Cocoa you talk about could be implemented within JavaScript. Core Animation and the like included. Also, replace "JavaScript" with your own interpreted language of choice. It seems like a good way for Apple to have local app functionality and still provide a secure way to sandbox it all.

July 09, 2007 8:15 PM

Blogger Wil Shipley said...


Let me refer you to Technical Note TN2161: Nested Functions in Xcode.

July 09, 2007 9:27 PM

Blogger Wil Shipley said...

Wil, BizTalk uses WF.

Live Beta software uses WPF.


July 09, 2007 9:28 PM

Anonymous houman said...

Be Zen Wil- be Zen

July 09, 2007 10:55 PM

Anonymous Anonymous said...


Concise. Or Bloated?

Please pick one.


July 10, 2007 3:49 AM

Blogger Wil Shipley said...

Cocoa: Concise compared to other application frameworks available today. Bloated compared to what it once was.

July 10, 2007 10:04 AM

Anonymous Anonymous said...

Microsoft tools are a waste of time until 20+ year old programs are written in a 5 year old framework. Nice.

By the same token, I'm sure you can understand why I'll be holding off on learning Objective C until the OS X kernel is written in it.

July 10, 2007 10:31 AM

Blogger Wil Shipley said...

Microsoft tools are a waste of time until the products which generate the vast majority of their revenue are written in them.

July 10, 2007 10:34 AM

Blogger Joseph Reiter said...

Wil Shipley says: "I've written a fucking web browser that's older than Safari or Internet Explorer or Netscape;"

Come now, fess up, YOU are Fake Steve Jobs!!! You're dissing the SDK(rap) of running web pages (with AJAX(tm)(r) Patent Pending) in a web browser as a cover ;-)

FSJ says: "Dude, I invented the friggin iPhone. Have you heard of it?"

But seriously, I'm with you! RSJ's announcement was one of the greatest non-announcements of all time! And to a crowd of Apple developers (say what you want about RSJ but he has brass bigger than most humans) no less! What a tease... RSJ says "...here's Leopard with resolution independent interfaces and oh yeah, here's the next big thing, run web pages on (wait for it), a Web Browser, on the iPhone!"

[sarcasm]After all, who would want to write an app and actually interface with the phone itself (instead of just the browser)? Bluetooth, whatever. Built in camera, lame. Special effects, nah... just simulate it in Javascript and then squeeze it through the thinnest Internet pipe you can find (EDGE)... that's sure to compress the output and shoot the "dog shit" you talk about out at maximum velocity![/sarcasm]

July 10, 2007 11:31 AM

Anonymous Motorized Citrull said...

Wil Shipley about JavaScript:

It's just too fast and loose. I want compile-time checking. I want a real debugger. I want type checking... etc.

This thing is very curious. I work in C++ world, but I love Obj C. When I talk about fundamentals of Obj C with other C++ programmers, they can't accept that Obj C is dynamically typed. They simply say that they want real static typechecking.
Sure, the Obj C compiler helps in finding type errors, but if you can write this:
NSString *s = [[NSArray alloc] init];
without any warning, in my opinion it means that typechecking could be a problem in Obj C programs, even when the programmer has years of knowledge of the language and many projects realized with it.
Do you follow some guidelines in your code to reduce these problems? Could you write something about this topic?
Probably you have repeated this stuff lots of times in the past, when talking to C++ people... :)


July 12, 2007 3:00 AM

Anonymous Anonymous said...

Hey Wil,

David Pogue has a mini review of Delicious Library for his weekly video clip.

Your software looks awesome.

July 12, 2007 11:20 AM

Anonymous Anonymous said...

One thing though, there sure are a lot of developers who are excited to be writing Ajax apps for the iPhone. It's super-quick and immediately available to lots of kinds of people, not just Cocoa devs.

July 13, 2007 4:24 PM

Blogger Wil Shipley said...

Well, I'm sure there are lots of developers who are looking forward to using C# or .Net or Visual Basic. Honestly, I don't write for them, I write for me.

It goes without saying that Apple makes AJAX developers happy by having its phone be AJAXable. My point is, the cool stuff that I want to do can't be done with AJAX.

Apple can decide whether that's important to them or not.


July 13, 2007 6:47 PM

Anonymous Anonymous said...

I can't do the cool stuff I want to do in Cocoa. Apple says that's my problem not theirs. Call it what you want, but Cocoa is a proprietary black-box. The rest is NDA!

I sorta remember the first WWDC where I was personally insulted, was that 94 or 96? You get used to it.

Language is a tool, not a territory. Remember when Java was going to run everything?

You app is a perfect example. It's scrumptious and well received. When will there be a Windows version?

July 15, 2007 11:19 AM

Blogger Wil Shipley said...

You were personally insulted at WWDC?

How'd that work? Did they have a session called, "Anonymous: How much does that guy suck?"


July 15, 2007 11:23 AM

Blogger jils said...

Great Post Wil. As a guy that writes AJAX for a living and Cocoa for fun (hopefully this arrangement will invert soon), I have to say that I agree that AJAX is not a flippin' real SDK, dammit!!

July 17, 2007 6:46 AM

Anonymous Alan Francis said...

Totally off-topic, but I've seen a couple of posts from you now talking about how great Garbage Collection is / will be.

Am I totally crazy or did I read/hear you say you'd never use it, and there was no way it could be fast and they'd better let you switch it off when you build Real Men's Cocoa Apps ?

I realise I can provide no linkage to back this up, but have you U-turned on GC ? I promise not to pull a Gruber-like naming and shaming of GC-doubters. Just wondering what changed your mind (if I am, in fact, correct that you were sceptical in the first place)

July 20, 2007 5:37 AM

Anonymous Alan Francis said...

Aha! found it. It was in the Blake Burris CocoaRadio interview.

From a comment here: http://theocacao.com/document.page/258

"Listened to Blake Burris interview with Wil Shipley, on the former's great podcast CocoaRadio. Wil said something about that none of the applications that he was really fond of, were written in a GC-language. That it would be impossible to write Delicious Library in one for performance reasons!"

Again, Wil, I'm not looking to perform a Nelson-like 'Ha-Ha!', just wondering what changed your mind.

July 20, 2007 5:43 AM

Blogger Fawkes said...

Couldnt agree more with this blog. Took the words out of my mouth.
I do believe a SDK is coming though.

In response to this post... "Does anyone think it's possible for Apple to just *not* release an SDK? Ever?

They haven't for the iPod, and it seems to be in their benefit to not do it for the iPhone either. "

IMO they didnt release an SDK for iPod because the whole line of iPods will eventualy be running OSX, no point in making as SDK for a temporary OS which currently resides in the iPod.

August 14, 2007 5:03 AM

Blogger Wil Shipley said...

UPDATE: Hooray! Everybody wins!


October 18, 2007 2:37 PM

Anonymous Anonymous said...

So, Wil, any opinion on garbage collection now that Objective-C 2.0 is out in the open? Just a yay or nay would be fine!

October 27, 2007 9:00 PM

Blogger Wil Shipley said...

I think garbage collection would be an awesome technology if done right. When I was at WWDC it sure seemed like they were doing it right, but because we were attempting to implement so many unstable Leopard technologies in Delicious Library 2 already, we forwent adding garbage collection as well.

Certainly it would remove literally a thousand lines of code from DL2.

October 28, 2007 2:21 AM


Post a Comment

<< Home