multipart-message nevyn bengtsson's blog

featured articles 🦄, about, archive, tags

My Inner Hulk

The idea of writing iOS apps using HTML makes me mad. It infuriates me. This is a strange thing, and generally a sign that I should cool down, breathe deeply, and just ignore the subject until it’s been simmering in my brain long enough for me to think clearly about it. But it’s been years, now! How much breathing can a man take?

It’s so slow! And ugly! And inelegant! I either need a few absolute-positioned elements, or a layout that I’ll need to write code for anyway. Why would I involve a super-complex layout engine for that? Why do I want a document-based model conceived in the nineties for my playback UI? Why do I want an engine where a single missing “return NO” will make my button completely wipe out all existing state in my app and effectively restart it? One where loading is so slow that it’s designed to always be progressive, flickering like an Atari while slowly putting UI controls on my screen?

Argument: HTML will be fast enough soon.
Counter-argument: And by then native will be even faster.
Inner, loud voice: Oh yeah? I bet this will be the year of Linux on the desktop too.
Digression: Whatever computer speed we reach, we will find ways to use that power to make better UIs. The idea that an inefficient platform can “catch up” because there is some kind of level where you don’t need more processing power to make a great UI is a fallacy. Remember when floating-point animations with multiple transparent layers was expensive? If you are using the above argument, you’re the guy who argued that they’re a waste of cycles and don’t make a UI better.

Argument: HTML will have all the features native apps have soon.
Counter-argument: And by then native will have more features, some of which will be untranslatable or very hard to translate to a web environment.
Inner, loud voice: Draaag and droooppppp arrrrgggghhh

Argument: The reason every native-app-with-web-UI sucks is because everyone else sucks. We can do it correctly.
Counter-argument: Really? Facebook just don’t have good web developers? I don’t buy that.
Inner, loud voice: No, YOU suck! Nngggghhhh

Argument: A-B testing, dude! Fast deployments!
Counter-argument: You’ve made a product change and agreed on all the design, figured out what to test and how to gather good data, implemented it, and got it through QA in less than a week? Maybe you need a web view. Actual, existing people: you can A-B test in any environment, whether a web browser is involved doesn’t matter, and you probably have time to wait a week.

Please flame me and prove me wrong. I’ve seen so many shit HTML apps, but maybe everybody really just is doing it wrong. And you’re right, I’m not a web developer, my javascript is shit, I haven’t even built a web page in a year, and I make a living writing ObjC. Of course I’m biased. Still, no ad-hominems please.

And you! You there staring at me angrily, just barely not shouting at me: yes of course some sort of insta-deployment web-ish platform is going to be amazing and take over the world, some time in the next decade. But it won’t be HTML5. Possibly it will be its grand-grand child platform, which will bear little resemblance to the original.

Tagged webdev, ios, iosdev, programming, coding, faves, flattr