blog.lukhnos.org

Push Notification and MS-DOS TSRs

You've probably never heard of TSR until now. Good for you. Back in those MS-DOS days, TSR was the only way you could have another program running (or faking running) in tandem with the foreground application (there's only the foreground, sorry). That's how, back in those days, people could have calendar, calculator, memo, and address book1 when working on their Lotus 1-2-3 spreadsheets.

In retrospect, TSR is a pure hack. You must intercept some of operating system inner workings, hook onto them, and do the dirty job. I wouldn't be so confident in saying this if I had never written some. I did—and to be honest hacks like those made even the most trivial and straightforward application bloatedly ugly and complex. If an alarm clock is some 300 lines of assembly, a TSR version would grow to double or even triple of that2, and they often sucked, loved crashing your system, and never worked well with others, competing with others (other TSRs!) when it came to screen estate and RAM.

The whole point is, because MS-DOS was not a real operating system, people had to go through those hacks.

Let's fast forward to 2009, one year after iPhone SDK was first announced, and Apple finally got its push notification up and running, despite a year late.

All's well... except one thing.

Apple could have come up with other designs so that we don't have to rely on an over-the-Internet push notification system to achieve some damn basic stuff.

For example, there are reminder apps that use push notification to pop up reminder messages when it's time. While there's always a need for such kind of app, and iPhone didn't really have a good one (its own calendar doesn't cut).

But we have to build a whole backend, server infrastructure to store user to-do's and send push messages over the Internet to pop up a simple reminder? That's insane.

I didn't mean to say those app developers have lost their mind. No. Their efforts are noble and great, serving users' need, answering to market demands, filling a gap. Just like those MS-DOS TSRs, people actually love using them.

The fact is, even if Apple keeps its no-background-process policy, there can be other ways for doing exactly the same thing for less. Way less. Building up the whole server infrastructure thing just to work around an OS gap is no fun, is downtime-prone, and is expensive3. Let's say if Apple now has an alarm framework, sending local notifications (there are such thing—NSNotification is on iPhone, NSDistributedNotification on Mac) to subscribing apps. And why not? iPhone already has a settings framework (not many love using that, for sure). So it's not hard imagining why this can't be done. The same could be said of many network apps (instant messengers, for example). A subscriber model can even give the OS some power to enforce some power policy over the consumers.

And hey, if it's not that they hadn't done similar things before. Remember desktop accessories? And at any rate it's far less hack than MS-DOS TSR. Or a mechanism that depends on so many things (Internet, your server infrastructure, Apple's server infrastructure, telco's infrastructure) that the whole functional equivalent could just live on the user's damn phone. But such is what Apple excels at: Selling you an inferior technology (push notification), but touting it as the right and enlightened way to solve a big problem (multitasking) that everyone else has pretty much solved4.

At least back in those days Microsoft didn't say it was a good practice to fake illusion of multitasking by hooking up to its system services...


  1. Borland made its fortune from such an application

  2. I'm never an assembly language buff, and I know there'd be people who said they could do such and such in number of lines far less than that. Let's just use the number to put things in perspective. Arguing how much you can do with how few lines is, pleeease?, so 1980s. (Disclosure: I wasn't even 15 by the end of that decade, so you would sound even older than I do now). 

  3. Plus, push notification sucks. It makes bad—extremely bad—user experience. Try letting your friends AIM you a few lines while you're busy reading your email, and you'll realize how bad is it. Run a few more push notification apps in the background, er, I mean, having more push services around, and they start to compete your screen estate. Sounds familiar? 

  4. Actually, when it's done right, inferior technology doesn't matter. People just don't care what iPod's competitors say it's nothing special. And Apple can do many things right, even with "inferior" technology. But let's face it: Push notification just doesn't sound convincing at all.