Some are hoping that Google gives away nothing at Google I/O 2011.
I strongly agree.
It's possible that I'm motivated by sour grapes after trying to register for Google I/O mere minutes after registration opened, to be met with a sold out notice.
The quick sellout is partly a reflection of the astonishing success of Android, coupled with the setup that last year's attendees were given first dibs over the preceding week: They knew with close to certainty that they'll leave with $1000+ in freebies, so it's a pretty easy choice.
Now that I'm not in the running for what will likely include a free Motorola Xoom and Nexus S, maybe I'm just trying to urinate in the waters.
But really, such giveaways do provide the wrong motivations. Trade shows are notorious for this, with herds of incredibly cheap attendees — hotel and flight paid for by their employer, if not simply locals — motivated primarily by free pens, t-shirts, and so on.
Such a spectacle is an embarrassment. It was, I suspect, one of the things that killed COMDEX: When most of the floor is occupied by people just looking to enter draws and score swag, the value of the show is seriously undermined.
"Yeah, great demo. Where's my freebie?"
I refuse to believe that it enables development for Android. Is there really a credible Android developer who couldn't accommodate that minimal capital expense themselves? Does Apple need to give out free iPads and iPhones?
Worse still, it devalues the entire ecosystem because it makes you a sucker if you paid real money for something. It makes buying that Xoom for development even more painful because you know that so many got it for free, courtesy of Google, quickly flipping it on Ebay.
I'm a big fan of Android's permission model. To recap, it's a system where you're told, in advance, the rights that an application requires to run. A simple calculator, such as the excellent RealCalc Scientific Calculator, should demand no permissions at all.
It can't send or receive data on the internet. Nor can it read my phone number, SMS messages, make calls, etc. I know, by the rights system, the "surface area" exposed to it.
Other applications, such as the ZXing Team's Barcode Scanner, have a much broader rights demand (click on the permissions tab). I originally put off installing that application after seeing that it demanded the right to read and write contact data. I later learned that it uses that to turn contacts into barcodes, and to import contact barcodes.
As ideal as the Android security model is, it was widely panned as being too complex for an average user. That users would simply click past the warnings, as they tend to do when it comes to security matters.
This past week Angry Birds pushed an update that added a new right request: the ability to read and send SMSs on your device. Such a right change disables auto-update for the application, forcing the user to approve or deny the new version. Many users denied the update, many taking to the comments to raise the warning bell about this disturbing change in permissions.
People were paying attention. Rovio quickly attributed it to human error (?) and pushed out a new version that retracted that permission escalation.
It was an excellent example of the permission system working brilliantly, and perhaps an example of a small subset of users acting as the sheepdogs, looking out for wolves.
Aside from the third-party curation of the market that I described previously, whereby a third party could validate appropriate permission sets relative to the functionality of the application, one huge improvement would be the addition of optional permissions.
In the case of Barcode Scanner, it has access to a large surface area despite the fact that I have no intention of ever using that functionality of the application. Ideally I should have been able to deselect contact access, for instance, and the application simply, through discovery, disables that aspect of the application.
Optional permissions would stop the "kitchen sink" element of permissions that is growingly common.
I recently decided that it would be a fun experience to make a mobile game with my children (aged 7, 5, 3, and 0, each contributing per their age), drawing on their unbounded creativity and openmindedness, while making it an educational experience about the technology, the code, and the commercial process after publishing to the market.
I've tried to casually make games for Android before, to discover that the Java-platform SDK just doesn't foster a love for code: the APIs are unelegant and obtuse, and the Eclipse IDE, while very powerful in its own way, just never feels like home.
It makes it something that I don't really look forward to, which is weird because I love coding.
What really hurts my motiviation, however, is the absolutely brutal experience that is the Android emulator.
I recently upgraded to a beefy new machine purely to try to run that thing at a tolerable speed, to find that it's just as slow (I haven't even attempted the Honeycomb emulator, as it's purportedly beyond unusable). Compared to developing for the iPhone, this puts Android at a serious disadvantage. I suspect it's the reason why many Android applications just aren't as polished.
There are some very real technical reasons why it's such an abomination (namely that it's a full ARM emulator, whereas the iPhone "emulator" is an x86 instance running x86 code), but the fact remains that it seriously hinders productivity.
I still believe in the compile seldom model of productivity, but such a process is only possible when the platform is well known, well documented, and proven. Unfortunately that isn't entirely the case with Android, where often you're simply mixing things up and running it to see if it adapts as expected.
With the increased availability of the OpenGL ES API in the NDK, however, I've now found a beautiful medium where I develop in Windows — with Windows x86 binaries against an OpenGL ES emulator (a thin layer ontop of OpenGL) — simply reusing much of the same code in the Android project.
My productivity and enjoyment has absolutely blossomed. Better still, much of the same code is immediately portable to iOS, which is an important consideration.
Of course I need to consider the limits of the platform — smartphones are getting pretty powerful, but they are weaklings compared to a modern desktop — especially the upcoming dominant platform (tegra2), so I signed up for an nvidia tegra2 development kit. I'm fully willing to pay the cash, but it turns out that you need to be approved and I still haven't been, two weeks after applying. I guess I'll have to sign up again with some fantastical account of my great success as an EA-sized gaming house.
That's kind of annoying. Other Tegra2 platforms, such the gTablet, aren't even available in Canada.
I wrote about the London Stock Exchange's move from a consultant-built, .NET, SQL Server solution to an acquired, Linux-based, Oracle solution a year and a half ago. At the time I dismissed the "magic sauce" proclamations so many were preemptively making.
Magic sauce isn't so magical. The London Stock Exchange continues to have embarrassing, very public technology problems with shocking regularity. What is it about that exchange that this happens so frequently while so many other exchanges operate without the drama?
The LSE recently bid to essentially take over the TSX (they call it a merger, but that is a farce). For a wide variety of reasons that shouldn't be allowed to happen, this being yet another factor why it shouldn't come to pass.
The Android 2.2-based ViewSonic gTablet has been disappointing consumers for a couple of months now. The most common complaint being that the custom overlay it hosts is a software abomination.
So I just knew I just had to have one, after finally finding a seller willing to ship it to Canada (sending it from their US warehouse).
The device is a very powerful piece of hardware. It is Tegra2-based (dual-core ARM Cortex-A9 running at 1Ghz with the ULP GeForce GPU), providing the same platform that a number of top-tier tablets (the Xoom, Galaxy Tab 10.1, among others) will be based upon. As mentioned in a prior entry, I'd been trying fruitlessly to order a Tegra2 development kit, so having an actual T2 device is welcome.
The higher-end tablets are obviously the superior option, but it will be months before they're available in Canada.
The gTablet only has 512MB, versus the 1GB in the development kit. It is actually a superior development choice given that it has an actual display and touchscreen (where I would be simulating the same with the nvidia kit).
My expectations were very low, and my use is not typical. Nonetheless I thought it worthwhile helping out prospective purchasers by posting a quick review of the unit.
Firstly note that I only saw the default interface for mere minutes. It is so widely and viciously panned that the first step after unpacking the unit was to install one of the alternative ROMs.
Installing an alternative ROM is a brainless, low risk process. It is not an advanced operation by any measure of the imagination. Tutorials such as this one take an absurdly simple process and make it seem complex by decorating it with font sizes, weights, colors, and asides (why do so many tutorial pages go to such a headache inducing format? The hodge podge of attention grabbers make it impossible to focus attention on anything).
So I tried TnT Lite. I was disappointed. Frequent crashing. Flash never worked properly. Quirks abound. Still that crappy replacement browser with the bookmarks that didn't work half the time. I applaud the authors, but the results were not pleasant.
I swapped out to VEGAn-Tab 5.1. What a delightful change! VEGAn-Tab seems to be surprisingly solid, it's the stock (excellent) browser, and everything (including the market) just works. It actually makes for a very, very good software experience. There has been one quirk with audio, but aside from that it has been flawless.
From a software perspective, VEGAn-Tab makes this is an excellent Android platform. It is actually far more enjoyable and usable than I imagined.
I quickly loaded it up with some purchases and some freebies: Fruit Ninja, Angry Birds, Kongregate, IMDB and Flixster, and Raging Thunder 2. Everything runs brilliantly, and of course because Android has long been resolution independent, they all make use of the extra screen real estate.
Which actually leads to a related segue. In a number of Xoom discussions there are rampant claims that there is "no software" for the Xoom (meaning no software that takes advantage of the tablet form). That betrays a basic misunderstanding of Android, and of the use of tablets. From an apps perspective, there are a huge number of apps that alter their display based upon the aspect ratio, size, and resolution of the display. In no way is the Android ecosystem in the state that the iPhone ecosystem was when the iPad was first released, where hack solutions like pixel-doubling had to be performed. Varying profiles have been a native part of Android for some time.
Further, one of the most common uses of tablets is as an internet appliance, browsing the rich, open web. With this much computational horsepower you don't need to dumb down the web through a simplified app (the days of apps as surrogates for web sites will thankfully be short lived) or mobile interface, and of course the web is the ultimate user of rich displays. The stock Android 2.2 browser is superb and in VEGA-n-Tab form actually identifies itself as a desktop browser to avoid the curse of crappified mobile sites.
Back to the gTablet, the speed of the device is shockingly good. In the browser it quite literally is the full web experience (with Flash set to ondemand instead of always on enabling cycle-robbing ads). I quickly found it much more enjoyable using the full web site instead of the mobile versions. Sites like TechCrunch work better on this device than they do in Firefox on the desktop. The Flash implementation is close to perfect.
Gaming on the device is superb. Browsing the web is amazing. Playing MP4 videos is, well, flawless, and fit well on the 16:9 screen.
With VEGAn-Tab installed, I'm actually delighted by this device. My young children took minutes to master it (children are remarkably capable of understanding new technology), and my tech critic wife has already been asking if it's available for some casual gaming.
Didn't expect it to be a lifestyle thing. Just a development thing.
But it has a critical hardware flaw that leads me to very strongly discourage its purchase for tablet buyers (those who might see it as a much faster, more capable, open variant of the iPad): The screen is terrible.
It actually has a slightly lower resolution than the iPad, owing to it's lower pixel density (115ppi versus the 132ppi on the iPad. The Xoom, for comparison, features 158ppi), and its somewhat smaller screen. That might sound wrong, given that the iPad is a "9.7" screen" while the gTablet is offered up at 10.1", however that's the lie of the diagonal: The iPad is 45.19 square inches, while the gTablet is 43.56 square inches, and the diagonals reflect the aspect ratios (4:3 for the iPad versus 16:9 for the gTablet).
The resolution on the gTablet is simply too low for something held relatively close to the user. The same number of pixels on a 7" screen would be much more palatable.
Far worse, however, is the incredibly poor viewing angle of the screen. It harkens back to very cheap laptops from a decade ago. This surprised me the most given that Viewsonic is largely a monitor company, so it's strange to see them bungle this so badly.
Held in a landscape position the viewing angle from left to right is decent. Up and down, on the other hand, is terrible, with just a few degrees leading to a complete inversion in the screen. Just trying to hold the device to play a game or view a video and you have to be extremely still or there are massive variations in the visibility of the screen. The sweet spot is actually at an awkward angle in most sitting positions.
Held in a portrait perspective and its worse, with slight variations to the left or right leading to washout or inversion.
I've seen plenty of TN monitors with close-to-IPS qualities. The gTablet display is not one of those. Instead it has the worst viewing angles I've ever seen (on a device where varying viewing angles is inevitable), and significant onscreen dithering and posterization.
I consider this a deadly defect of the device. I'm still over the moon with it as a development target (and marvel at the effortless speed of the unit), but in searching for replacement ROMs I encountered a lot of commentators who are, shall we say, overselling the device, claiming that with a better ROM it is a perfect tablet. It would be if the display wasn't absolute garbage.
If Viewsonic replaced the stock software with VEGan-Tab or a simile, and replaced the horrifically bad display panel with something less unbearable, this would be a killer discount device. As is, however, I would definitely discourage its purchase outside of development uses.
For me, however, it's a delightful holdover until I can get my hands on a Galaxy Tab 10.1 or Motorola Xoom (both of which offer an almost 40% DPI density improvement, not to mention dramatically better viewing angles, colour reproduction, contrast ratio, and so on. Basically a dramatically better screen).
Apple unveiled the iPad2 last week, the device representing a pretty impressive bump in specifications and functionality.
Dual-core processor, significantly better GPU, dual cameras, gyroscope. All of that in a smaller, lighter package than before.
Apple delivers. While companies like RIM are busy showing untouchable prototypes, Apple just slams iteration after iteration out of the ballpark. Not some prototype, but an actual shipping product that hits retail mere days later.
They're shipping the very cost-effective WiFi version at the outset, avoiding the massive blunder that competitors such as Samsung and Motorola made when they brought out 3G-only versions at outrageous prices. immediately losing many prospecitve customers and champions.
And of course Apple executes for volume, confidently ordering counts that allow them to price economically. Aside from perhaps Samsung (the dark horse of the electronics world), most other competitors approach the market tepidly and in an exploratory fashion, expecting to succeed regardless. That is a recipe for failure.
Apple executes in a way that no one has been able to match. It should embarrass competitors like RIM that they can't pull it together in the same way.
Blaze, an Ottawa-based web optimization company, drew from the playbook of easy publicity by publishing the results of a benchmark pitting Android and iOS against each other in a webpage loading deathmatch.
Android was the victor, hitting the finish line (the onload event) an average 34% faster (2.1 seconds versus 3.2 for iOS).
The test measured the elapsed time until the onload event fired loading a selection of Fortune 1000 websites, which as a generalization average towards being simpler sites that are less exploitive of recent advances in web technology.
More important still, the actual comparison was between the Nexus S and the iPhone 4 as proxies for their respective operating systems. The Nexus S being the 1Ghz Hummingbird-processor equipped Samsung device pitted against the Apple iPhone 4 running a very similar processor — the A4 and the Hummingbird are twins separated at birth, both designed by Intrinsity and Samsung — at a slower 800Mhz.
All else being equal, I would expect that in this matchup the iPhone 4 would lag behind by a good 25%.
Of course all else isn't equal: the operating systems are completely different, and the browsers greatly diverged from their shared WebKit roots. Yet a number of comparisons of recent incarnations of Android and iOS on similar devices have found their browsing performance converging: In most cases iOS gives the sense of progress quicker (showing partial pages earlier), while Android tends to complete rendering first. Android has made big gains from 2.1 to 2.2, and again from 2.2. to 2.3.
The Android 2.3 browser is fantastic, and is an absurdly responsive platform. Indeed, the whole operating system has gone from being a endlessly halting stop-the-world garbage collection demonstration, to a smooth as butter, refined UI.
So in this case an Android device with the latest OS on a faster processor comes out on top. No big surprise, so no big controversy, right?
Hardly. Turns out it was a pretty big controversy.
It turns out that these results riled up a hornet's nest.
And on, and on, and on. Pretty extraordinary how reactionary the defensive hoardes are whenever Apple or the iPhone comes out the loser (look at some of the enraged comments below the Blaze pages — this is an absolute embarrassment to the technology world, and these raging defenders are the reason online comments are seldom of value or insight). There have been countless ridiculously flawed surveys covering the Android and iPhone ecosystem, and they are trusted and repeated verbatim so long as the iPhone is the beneficiary.
I think my favourite ridiculous defense came from Michael Gartenberg (the go-to guy if you're looking to fluff up some empty tech story)-
"Consumers don't buy smartphones by going into the store and timing web-browsing experiences with their stopwatch," Gartenberg said. "I don't think this has any impact on the buying public, per se. The headline becomes a lot more misleading than the actual performance because performance gains of less than a second just don't matter."
What a silly statement: The desktop browser wars have been waged on the battles of milliseconds here and there. Android's biggest deficiency prior to Gingerbread (2.3) was interface halts that lasted generally in the order of 60ms or so, and this was something that virtually every user rightly complained about. If these results held, and one device imposed a one second+ tax on each and every page load, that is very significant.
The benchmark is far from perfect. Immediately I would question the choice of target websites: The top websites that people actually visit, particularly on smartphones, have little correlation with the Fortune 1000, and the former will tend to be far more dynamic and leading-edge than the latter. Alas, most benchmark are deeply flawed.
The common complaint about this benchmark, however, has been to argue that the study is invalid because it used the embedded browser control which while obviously heavily overlapping with the full browser code base (if not directly using the same binaries) — if Apple knows how to develop software properly, which evidence seems to show that they do better than most — has some features toggled off for various justifiable reasons. This apparently yielded the loss of a couple of optimizations, namely JIT Nitro JavaScript compilation, and the use of HTML5 async attribute behavior (something that no more than a minute fraction of those Fortune 1000 sites use, if any. I would place odds on zero of them making use of it).
Says Daring Fireball-
It’s easy to see that Mobile Safari is faster than UIWebView — just run something like the SunSpider benchmark twice, once in Mobile Safari and once in any app from the App Store with a web content view. On my iPhone 4, Mobile Safari runs SunSpider almost three times as fast as an app using UIWebView.
I think there's a general misunderstanding of the benefits of JIT compilation, especially in the context of a test such as this.
The study also found that despite significant JavaScript performance gains in the latest Apple iOS 4.3 and Google Android 2.3 releases, they made no measurable improvements on page-load times at the sites tested.
Of course they didn't! I would actually expect that JIT compilation/tracing profilers were actually a minor net negative for the performance of simple webpages of the sort you're going to find hitting up the corporate websites of the Fortune 1000. Only dynamically rendered AJAXy sites like Rdio.com are going to see "render" benefit from a JIT JavaScript engine, but if you're simply measuring to the execution of the onload event, on pages where it's rare for the same piece of JavaScript to ever get executed twice, the return just isn't there.
Firefox 4, released today and highly recommended, is a vastly improved browser in almost every way over its predecessors. The one thing earning the most attention, however, has been the performance of the JavaScript engine. For computationally intensive JavaScript uses it is a dramatic step forward, representing a huge improvement of an already optimized platform.
Sites that demonstrate the benefit of these JavaScript improvements are very few and far between, however, and are far less prevalent than benchmarks that show dramatic gains.
Go ahead, completely turn off JIT compilation (about:config, filter on jit and toggle all of the .content items to false) and see what the impact really is. You'll find that it's still a shockingly speedy browser, even though it is suddenly a Sunspider weakling.
Addons gain from JIT, though of course that is completely immaterial to an embedded browser control on a mobile device.
Everything in the browser is faster and smoother and slicker, having nothing at all to do with the JavaScript engine. Pages render quicker because of a greatly improved, native rendering engine (written in C). Hardware acceleration, retained layers, native property representations...these are the nothing-to-to-with-JavaScript advances that make it a much better, smoother browser than it was before.
Javascript performance is, however, often an important indicator of where team attention lies. Chrome really shot to the lead in the JavaScript war, also bringing a slick and speedy, responsive browser: Their focus was on speed, and it shone through in both aspects of the browser, however it's a loose correlation. Safari on Windows, as a counterpoint, is an atrociously slow pig of a browser that feels like someone toggled your PCs turbo button off, yet it has an amazingly fast JavaScript engine.
SunSpider results are hugely overemphasized. They will matter more in the future as JavaScript on the sites that we use grows more complex, especially once JavaScript starts getting delivered in a pre-compiled intermediate language form, however it's surprising to see how many intelligent people expected so much from Nitro's very impressive JavaScript speedups in a simple test measuring basic page load times. Your browser is not written in JavaScript (yet...), so some perspective correction is in order.
I commend Blaze, however. They played the media and community like a fiddle, and their PageRank will benefit heavily as a result. They do offer an interesting service which many of us were completely unaware of before.