Mobile Development SDK Cage Match

Since the legal thread was getting derailed, just because webOS tapped out doesn’t mean we can’t still argue over iOS, Android, WP7 and…uh, maybe brettmcd will come in and advocate for Symbian! Anybody want to take Meego?

My own personal experiences:

iOS: I skipped Cocoa in my Mac programming days, it was always classic/Carbon development. So I still resent having to write objective-C glue code to my C++. That said, at least pretty much everything is exhaustively documented and discussed online, so if I run into a snag with some piece of implementation, it’s rare that I’m bogged down for any period of time.

Android: I’ve dealt with worse environments than porting a project using early releases of the NDK on pre-Gingerbread targets. But they usually involved bare circuit board prototypes, debugging over a remote gdb serial console on pre-release non-generation consumption SDKs. So that’s not a very high bar to clear.

WP7: It was so nice noodling around in VS2010 cranking out some C#. Shame I had to table the project when it was painfully apparent it would be a money loser. I’d love to do more WP7 stuff if the economics made sense, even though it means rewriting everything from scratch…using APIs that Microsoft is pretty much abandoning.

They all suck, because the languages are incompatible with each other. You can’t write your core in X and then put wrappers for each platform. I guess this is theoretically possible with NDK/C++ but my understanding is that the NDK is pretty hit/miss in terms of compatibility/robustness.

Which leaves doing Java/Android, Obj-C/C++/iOS, and C#/WP7.

I’m using the Corona SDK to get cross-platform on Android/iOS, and there are other options as well (Cocos2D, Airplay/Marmalade, etc.)

Well, are we talking about for games, or general application programming?

For general application programming, the NDK is really just meant to be a native plug-in code API for stuff that is too slow or processing too unwieldy to do with Dalvik. Early versions of the NDK did have some run-time omissions so say, getting STL working wasn’t baked in. That’s since been addressed.

For games, the pain was in early NDK and pre-Gingerbread Android, you had access to GL ES, but for stuff like sound you still had to do a lot of Java side glue, which you still need to have because while you can ignore Android 1.x at this point, you still need to care about 2.0-2.2 for the time being.

The reality is, quirks in development environments aside that make the initial setup a chore, it is completely possible to have a common mobile engine your game sits on top of that has implementations for iOS, Android and webOS. Some of the low level code is even the same because they all share UNIX derived core system libraries.

Thanks for making this thread, Linoleum. Hopefully folks will move this part of the discussion over here.

From the other thread:

That’s a whole bunch of iterative/subjective stuff except really for background apps and it’s a misconception that background apps are an “innovation”.

The very first iteration of iOS ran background tasks (a whole bunch of processes are running on there at any given time). OS’s have been multiprocess for decades and it’s not like this is “new” tech (heck, I wrote my own multi-process OS back in grad school for a class project). The only reason background tasks didn’t exist on iOS is that developers were never given access to this in the SDK. This was done by design. Apple wanted to avoid two things:

  1. Users having little control over background tasks and either killing their CPU or their battery.
  2. Having to put memory restrictions on specific apps.

So they waited to find what was, was in their opinion, a better solution. However if they’d wanted to just throw background processes into their SDK it probably would not have been difficult.

Whether you think that is a good idea or not, it is a design question, not a question of Google innovating more than Apple. Personally I think it’s clear that both approaches have their merits. Background tasks have been a significant issue for Android users and Google has had to throw more and more UI for users to manage processes in order to try and solve this where Apple’s solution is pretty seemless to users. Also, Android’s memory limit per application really sucks. It’s still only up to 24 or 32MB on most recent phones which is quite restrictive (that’s only 1/16th or 1/24th of the current memory on an iPhone 4). That said, if you knew what you were doing it was really nice to have background tasks and I think that Google’s decision to allow them in Android helped push Apple to get their shit together.

The only other thing there that isn’t super subjective and/or minor is voice recognition. That’s great but it’s not terribly Android specific. Really that’s just Google focusing on their core strength: data-mining. They do a great job of that. Other recent innovations from Google tend to be in the same boat like Google Goggles (Google seems to be investing more in that direction have purchased some image recognition companies of late). Google Voice is great, IMO, although it’s also not really Android specific. Google just isn’t a design-focused company that innovates by creating new user toys. They tend to take existing problems, particularly with search and/or internet data, and then come up with better ways of analysing it. The only recent innovation out of Google that I think comes close to some of what Apple is doing has been Google Wave but, unfortunately, that didn’t catch on. That’s similar because it’s one of the products where they really designed a full out user experience that didn’t exist already instead of just absorbing and iterating on existing experiences.

To continue with the long tradition of off-topic digressions in these threads: Google Search radically reworked the UI for search in a very user-focused, UI-centric way. Google Maps (and later Street View) radically reworked the UI for mapping software in a very user-focused, UI-centric way. GMail radically reworked the UI for email software in a very user-focused, UI-centric way. Chrome radically reworked the UI for web browsers in a very user-focused, UI-centric way.

All of those UI innovations were built on tech innovations, but they unquestionably were UI innovations that were extremely well-designed. It’s hard to remember now, but Google always had an image as a company with excellent, hyper-minimalist design up until they started competing with Apple – once you’re competing with Apple, everyone has to argue that you have “no taste” just as a matter of principle.

That’s a mixture of making my argument for me and slightly overstating things. Google has done some nice iterative work but they tend to take existing internet content and bring out more information to it, not provide fundamentally new experiences. Before Google Maps, GMail and Google Search there was Yahoo Maps, Mail and Search providing almost identical experiences with just slightly worse data. Did they iterate with UI a bit? Sure, though I wouldn’t call it revolutionary. Before the iPhone and iPad there was, well …

Again: if you want to talk about what makes Android great, and not come off as a total Google fanboy, I think you’re just better off admitting that they aren’t doing everything and that they’re not really the ones driving design, tech and innovation in mobile right now. The goal of their approach is not a brand new way of using a mobile device. The goal of their approach is open, cheap phones with internet access (and therefore access to search and ads) that anyone can get. Both are laudable goals but you shouldn’t pretend that a company excelling in one is necessarily excelling in the other. This isn’t a zero sum game.

No. Just no. That is total revisionism. Google Maps was 100% revolutionary, replacing the static JPEGs of MapQuest/Yahoo with scrollable, zoomable maps that took up the whole screen. Google Search was 90% revolutionary, presenting you with a simple (one field, two buttons) UI without all the directory-style fluff and Boolean complexity of Alta Vista. And you can use Yahoo Mail and GMail today and tell me if you consider that “iterating with UI just a bit”; they’re totally different, even with Yahoo having had years to adopt some of GMail’s innovations.

Again: if you want to talk about what makes Android great, and not come off as a total Google fanboy, I think you’re just better off admitting that they aren’t doing everything and that they’re not really the ones driving design, tech and innovation in mobile right now.

I don’t think anyone could make a case for Android as being awesomely designed. My point is: That’s actually atypical for Google, because Google’s tradition is of excellent user-focused design that sharply breaks with the limited constraints of previous technologies. The company that makes Chrome and GMail clearly has people in it who know how to do design right, and it’s my hope that those people will eventually work their magic on Android (which is already vastly better than it was).

And they also bought the company that developed that, FWIW. Do you also give Google credit for YouTube? And calling Google Maps “totally different” than Yahoo Maps is quite the stretch. Google Maps was a small incremental improvement over Yahoo. What really made Google maps was the integration into all of their other services. That’s an area where Google tends to excel: integrating search into multiple sources of data. Search and Ads are, I’d argue, the only area where they’re really engaging in significant innovation.

I don’t think anyone could make a case for Android as being awesomely designed. My point is: That’s actually atypical for Google, because Google’s tradition is of excellent user-focused design that sharply breaks with the limited constraints of previous technologies. The company that makes Chrome and GMail clearly has people in it who know how to do design right, and it’s my hope that those people will eventually work their magic on Android (which is already vastly better than it was).

Google’s tradition is that of being an engineer-driven company and you’re vastly over-stating their design cred. “User-focused” design in these cases mostly just means extremely spartan design. If you like that, great, but you’re giving them way too much credit.

No, this is just flat wrong. Do you remember when Google Maps came out? Before it existed, every mapping service provided you with a static JPEG/GIF of your map. You couldn’t scroll, zoom happened by using imagemaps and reloading the page, the whole experience was just terrible. Google turned maps into a scrollable, zoomable interactive thing. Here’s the 37signals people talking about it at the time and giving an explicit comparison to Yahoo Maps (and saying “Is there any question about the value of design and the customer experience after seeing this comparison? Google slaps them down again.” – which kinda gets to my point about the general perception of Google’s design chops in the pre-Android days). Here’s another contemporary page which talks in detail about the great design of Google Maps, and compares the UI elegance to the instantly-dated competition.

Google did really innovative UI, which was recognized as such as the time. That’s largely been retconned away, weirdly.

Sometimes innovation isn’t necessarily about doing something completely new, but taking something everyone (or at least lots of people) take for granted and making it better in just the right way. For an Apple example, take the original iPod. There were other music players before it and after it that did as much. None of them did it as well, in the way that users really wanted. That made it a revolutionary product in the marketplace.

From that perspective, I can see Google Search and, to a somewhat lesser extent, Maps being truly innovative. Yes, I was doing internet searches and looking up directions on internet long before either of those services, on a wide variety of services. Once Google’s came out, however, I almost never go anywhere else for either of those things. That’s mainly for the technical merits of the results they deliver, but the effective minimalist design that brings the results to my eye’s focus without extra effort on my part isn’t to be easily dismissed, either.

That said, as Gabe mentions, they are indeed an engineering driven company, and I’m an engineer, so I’m likely predisposed to like their stuff. :)

Retconning? Let’s dial the drama down a notch. Of course there were people who were excited about Google’s design, scour the internet and you’ll find people excited about anything. If I find one article somewhere saying that Google Maps wasn’t that big of a deal do I “win”? That said, making map scrolling a bit more interactive is cool but it’s just not the massive leap that you’re making it out to be. Furthermore, it’s much more about tech (tech that Google bought) than it is about design.

Again, I’m not saying you shouldn’t like Google. I’m just suggesting that you make your claims about them a little more realistic and focus on the things that they’re actually quite good at. Yes, if you look over their portfolio, you’ll find examples of decent design. That doesn’t make them a design-driven company. Yes, you’ll also find some bits of innovation outside of search if you look for it. That doesn’t make them a big innovator in the mobile market.

Basically what you’re doing is setting up extremely unhelpful goal posts where if you can find anything that Google has ever designed that was at least a slight improvement over the previous iteration then suddenly they’re a great design company. I’m not going to buy into an argument where I have to prove that Google has literally never done decent design work in order to demonstrate that, overall, they’re an engineering and not design driven company.

I am genuinely baffled by your almost complete amnesia about Google pre-2008 (and your apparent belief that “retcon” is some highly-charged dramatic word).

You can carry on believing that Google Maps was nothing more than a slightly nicer version of Yahoo Maps, and that GMail is basically the same as Yahoo Mail; but seriously, we were there, we remember, and that’s not how it was.

[derail]
You could scroll! Remember the arrow buttons on the side of the map? One. Click. At. A. Time. Followed. By. A. Pageload.

/wrists

Thank goodness for Google Maps.
[/derail]

Somebody should start up a thread about mapping software, so that we can discuss Linux distributions.

Background tasks are the new second mouse button.

If it’s anything to you, mkozlows, I’m beginning to suspect that StGabe never used predecessors to the Google products you’re describing at all. The design of Maps, Mail, Search, and Chrome were enormous boons to their quality and usefulness when they came onto the scene and I remember being utterly wowed by all of them (until I figured out I couldn’t add toolbars to Chrome, but that’s neither here nor there). Definitely phenomenal UI design in each of those instances that was leagues better than anything else in heavy use at the time.

No, I most certainly did use Yahoo maps (and mapblast).

Mkozlows is just engaging in internet style drama where everything is all one thing or all another with shenanigans like calling honest disagreement “retconning”. I simply disagree that Google buying some mapping tech that basically did the same thing as tech that had been around for 10+ years but with a better UI is as big of a deal as he’s making it out. If you put that up against completely changing the mobile market it doesn’t really rate.

Mind you, I like Google Maps. I switched to it right after it came out. I think it’s better than the other things that were out then (modulo a few issues that they had with bad directions at times – Google maps once sent me 10 miles away from my destination to an address that didn’t exist). It’s just that using it as your sole example of, “Google is a great design/innovation company” remains a rather poor argument.

In the other thread, Gabe brought up ARC and related his impressions of it. Has anyone else used it much? What do you think?