iPhone, Nintendo DS Web Browser, Compatibility

I’m a sucker for weird web browsers, so I just had to go and buy the web browser for my DS. It uses both cartridge slots — a memory module goes into the Gameboy Advance cartridge slot, and the browser itself goes into the smaller DS slot.

This shows my flexible inVue test page running on the DS’s browser (correctly!). Yes, I realise some of you, who didn’t already, hate me now…

The DS’s web browser is written by the Opera people, and it represents a fine example of why Apple rocks and other software companies don’t. It is possible to configure this browser so that it is reasonably usable and makes sensible use of both screens, but it’s certainly not obvious how. The screen you’re seeing in the image is the lower (touch) screen, and the blue rectangle is the zoomed in portion being shown in the upper (non-touch) screen. In this mode you can press some buttons to toggle a mode which lets you click in the touch screen area. In the DS browser’s default mode, however, web pages are displayed in mangled form (basically ignoring most formating) across both displays, treating the two as a single tall, narrow display. This mode is almost entirely useless and disconcerting.

I visited an Apple store and asked one of the helpful people if I could try out an iPhone in EDGE mode. They very helpfully showed me how to disable the WiFi support, so I was able to get a more realistic view of the iPhone browsing experience at its worst, and it is pretty nasty, at least on ludicrously heavy pages like gamespot.com. Unlike the DS, the phone can handle multiple pages at once, and load pages in the background — so you can diddle around on your iPhone or drink coffee while the page loads, but it’s still darn slow. That said, the DS is painfully slow with a WiFi connection and appears to cache absolutely nothing (not even stuff that isn’t currently being displayed in the current web page, so just scrolling a page makes you want to hurt someone).

But my original reasons for doing all these things was to make sure my ad code works properly on exotic platforms, and it does. (My video ad code has issues related to Safari/iPhone only supporting a subset of QuickTime codecs and not supporting Flash at all, but that’s not really under my control.) It astonishes me how little effort it takes to make quite complex bits of JavaScript work properly across browsers, and yet how much terribly incompatible JavaScript is out there, even on quite major sites.

Strange Omissions

Rumor has it that, at least initially, the iPhone will lack Flash support — argh! (Even the Wii has Flash support.) Yes, that is disappointing, but it doesn’t explain why Apple’s email announcement to people, like me, who signed up for news on the iPhone’s release doesn’t mention web browsing.

Oops.

But the really sad omission is…

It really looks like the iPhone SDK non-announcement is a little hasty. Yes, you can develop perfectly good 3rd party apps for the iPhone using a web server, but no, Apple hasn’t added some perfectly obvious bells and whistles to make this seamless:

  1. There appears to be no way, out of the box, to “bookmark” or “force cache” a page and make it launch directly from the main menu.
  2. The Safari UI doesn’t appear to be hideable (yes, the address bar auto-hides after a period of non-use, but it needs to be possible to hit all trace of the browser from JavaScript or something).

Technically, these are minor omissions and easily fixed, but boy would they have made great demos (versus the glorified phone book app that was shown).

Build a simple game using DHTML. Make it 480×320. Go there with your browser. Click a button to “appify” it. Boom. Third party game app. (And then demonstrate how it automatically updates the cached version when appropriate.)

Go to Google documents and “appify” it. Boom. You have a real word processor on your iPhone.

These are low hanging fruit, and it’s rather lame that Apple didn’t have at least one moderately cool demo to show.

“Web Apps Are Not Applications” Rogue Amoeba

Some developers aren’t terribly pleased by Apple’s announced option for those wishing to develop iPhone applications.

The original post is simply sarcastic, but this response (strongly agreeing with the original post’s sentiment) sums up the poster’s point of view:

Apparently if we want to develop for the iPhone, we have to be web developers, and develop web apps. Saying we can develop “Web 2.0 apps using AJAX” is just a nice way of saying “No 3rd party apps and no 3rd party widgets.”

Just like if you really want to develop Cocoa apps, you can’t write them (easily) in Logo, Visual Basic, C#, or Pascal.

They’re right, of course, Web Apps aren’t Applications.

  • They don’t need to be installed
  • Or kept up to date
  • Or moved from machine to machine when you suddenly need to go on a road trip
  • Or uninstalled when not needed
  • They don’t support multiple users either (a) not at all or (b) as an afterthought
  • They can’t crash the machine they’re running on, only the browser
  • A rogue web app can’t format your hard disk, or turn your iPhone or computer into a bot
  • They can be written using a huge variety of tools and languages, many of which are childishly simple to learn
  • “Hello, world” is only a few bytes longer than the ASCII string. There’s no 20MB .NET runtime.
  • They don’t need to be recompiled to run on different platforms, although they do need a little tweaking.

To allow third party development for the iPhone Apple needs to provide a development and runtime environment that:

  1. is safely sandboxed so that third-party apps can’t compromise the iPhone’s stability,
  2. has the power to communicate with central servers, and
  3. has some kind of mechanism for distributing and updating itself
  4. and has all the usual capabilities of handling user interaction, drawing pictures, and so on

Safari has all of these things. It runs on HTML, CSS, JavaScript, and Flash, which can be generated by server code written in any language you like, including C++, LISP, Cobol, and Eiffel. Go for it.

Now, Apple could build this from scratch or it could use something that already exists. Since Apple doesn’t have, say, a managed code environment like .NET to throw at the problem, the other glaringly obvious option is Web 2.0 etc. Which is what they picked. Sure, this limits what you can do in your application … I don’t think anyone has written a 3d animation package in JavaScript yet, so I guess that’s going to be a stretch.

Don’t want to sully your hands with Perl — fine. Code your server in LISP or C++. I don’t care. Neither does the iPhone.

Now there are legitimate concerns vis-a-vis the iPhone working when disconnected from the internet, or in low bandwidth situations. Will it be possible to (a) load a “website” onto your phone and run it as a local app (possibly with some local runtime support, such as Apacha/PHP/Perl or whatever?); (b) can you load a page or pages into your cache explicitly and always have access to them? These are perfectly legitimate questions for which I suspect there are good answers.

But whining about being forced to learn HTML/CSS/JavaScript or whatever is just dumb. If you can handle Objective-C, you’re not going to have any problems building web applications.

Vista, Continued

Today, I discovered that FireFox 2.0.0.3 doesn’t have Flash installed. So I attempted (unsuccessfully) to install it. Automatic installation failed (FireFox’s fault). Manual installation failed (Adobe’s fault?). Note that Internet Explorer (rendered unusable by requiring me to type URLs with a leading http://) is running Flash just fine. I thought FireFox was too.

Anyway, so I quit FireFox and try to install Flash again. (I’ve clicked “Continue” or “Run” or whatever approximately 50x by this point.) Flash’s installer is “automatic” in that “you can’t fix it yourself” and sometimes manages to spawn hidden windows or, occasionally, to appear to disappear (have no visible presence on screen) and then reappear. Anyway, no Flash in FireFox.

So I launch FireFox and it tells me that it needs to wait for an install to complete, and I should restart. So I do.

Vista takes about 60s to shut down (heck, Tiger takes too long to shut down too) and then I try FireFox again. Same error message.

So I download a new copy of FireFox (more “Continue” “Run” “Yes I really really mean it” B.S.) and it produces a horrible error message saying that it could do something it needed to do. (Definitely blame FireFox.)

So I uninstall FireFox (it’s still more-or-less in the same place in the control panel) and attempt to install again.

Oops, when I clicked “Run” rather than “Save” Windows tossed away the installer. It’s probably there … somewhere … but easier to download a fresh copy (and “Save” it this time).

I run the new installer and … same error message.

So, I download Opera, which appears to work. (I’m typing this in Opera.) Then I download FireFox 1.5.0.11 — which installs flawlessly — but still won’t run. It needs to allow a previous installation to complete.

Aaaargh.

P.S.

I tried to make a movie (using SnagIt) of the wonderful sequence of dialogs you get when you attempt to do more-or-less anything in Vista but … get this … the “Cancel or Allow” system modal dialogs that dim the screen do not appear in screen captures.

Aside from anything else — I don’t think this is sinister, just incompetent — it means that if you want to create instructional videos for users you can’t show them what actually happens without jumping through a lot of hoops (e.g. filming your videos with a camcorder OR mocking up a “Cancel or Allow” dialog and editing your videos in a serious video editing app).

Maybe I just need a more bloody-minded screen capture program (e.g. fraps).

P.P.S.

My laptop’s video adapter’s performance is absolutely abysmal (at least under Vista). Just how abysmal? Blender takes about one second to draw its splash screen (versus instantaneous on my near three year old iBook). Unity’s web plugin warns me that I don’t have any hardware 3d acceleration (um, supposedly the Quadro is roughly equivalent to a 7300 and far better than an Intel GMA 950). I noticed that the driver is written by Microsoft… Hmmm.

So I dutifully went to NVIDIA’s website to download their latest driver and install it. But their installer said I had no compatible hardware.

Double aaaargh.

Footnote: the Dell Latitude 620 I am using has 2GB of RAM, a Core Duo 2.0GHz, and an NVIDIA Quadro NVS 110M (64MB of dedicated RAM + shared). It should run a little slower than my wife’s MacBook Pro for everything except 3D (the MacBook has an X1600).