NFC has gotten a lot of hype lately, primarily for its role in facilitating electronic payments with your smartphone.
I'm more interested in how it can enable the electronic propagation of the end product of the transaction: the receipt. In an ideal world such transaction records include not only the payment itself, but an itemized inventory of exactly what the transaction entailed, communicated using industry standard identifiers such as UPC identifiers and standardized units. NFC is simply the beachhead for such a more general transaction communications platform.
I'd like to see government make this mandatory for businesses over a certain size. The government loves additional data sharing points like this — even where it doesn't directly gather the data — as it provides checks and balances that can be used to find evidence of tax evasion. If the cryptographically-signed, itemized purchases for an expense report claim from business A don't mesh up with the sales records of business B, closer scrutiny is inevitable.
Aside from the obvious benefit to corporate purchase tracking, from an end-consumer perspective wouldn't it be ideal to have an itemized list of everything you've purchased, in detail? Given that we're in the era when Groupon-style virtual coupon-clipping is now cool, this would enable purchase optimizations, running your history through mining tools to provide optimization hints and to encourage more vigorous competition in the industry.
You would have saved $57.65 last month if you did {XYZ}.
It would root out and highlight loss leaders and non-optimal commerce.
The 40" LED television you purchased at BigBox Retailer was a good deal, but the $98 Vanilla Brand HDMI cable they convinced you to purchase was higher priced than at 98% of retailers.
It would allow for more enlightened, fact-based personal finances, which is an area where fantasy usually dominates.
Some would opt out of this, which is why I imagine it would be voluntary. Personally I'm not too concerned whether Big Brother knows how many waffles or cartons of chocolate milk we've purchased in the month, but I can see use for the data.
EDIT: This will be my last entry on the whole iPhone vs Android debate for at least a year. This is one of those topics that is just entirely unproductive: All of the online comments, blog entries, and defensive "don't move my cheese" posts do absolutely nothing to change industry direction, trends, etc. I don't wish to contribute to that noise any further, and had argued only in the sense of balance: For too long the conversation has been completely dominated by shills and short-sighted developers only interested in their own convenience (there is a certain allure to the global dominance of one single make and model of device, even if long-term that brings a lot of pain. It is notable that Tim is praising a device that almost certainly wouldn't exist in its current form were it not for Android, but it's remarkable what competition does for the sense of urgency).
If Marco Arment wrote this post in January of 2010 I could write it off as a case of self-inflicted, temporary delusion. To see it written now, however, is perplexing.
Arment and others are screaming, with increasing desperation, trying to change the direction of tides that they have absolutely no influence over, and that derives from forces that they clearly don't understand.
A mistake that many Apple "fanboys" make (the sort that are going to argue with Fred Wilson about marketshare numbers, which I suspect is a tiny subset of the overall Apple consumer population) is to assume that the general smartphone marketplace has two types of consumers, broadly defined as-
A variation of this theme is that the second category is full of people so full of anti-Apple vitriol that they buy an alternative simply to spite Apple.
You, and the people you hang out with, are not the average consumer. The sooner you understand that, the sooner you can understand why the market moves in the way that it moves.
As one of many anecdotes, my brother and his partner recently decided to get smartphones to stay more connected. I don't proselytize to the Android side, in many cases actually encouraging those who asked to instead get an iPhone, so I had no influence on their decision process.
They went to the telco store where they had many options — the iPhone has long been available on all major carriers in Canada — leaving with a Samsung Galaxy S for her and an HTC Desire Z for him.
They had the means and the opportunity to have any device possible, and they left with a couple of Android devices.
The normal consumer that makes up most activations doesn't read Engadget or Gizmodo. They don't argue with Fred Wilson. They don't take sides.
They simply want a smartphone that can let them efficiently use email and the web, maybe hit up Facebook and Twitter, take and view pictures and perhaps videos, and perhaps enjoy some casual gaming. That is the actual criteria (not "Apple or not Apple"), and its one where for clearly many consumers the decision tree leads to an Android device. For someone who wants a larger screen, or a smaller screen, or a keyboard, or various other options, it becomes the only choice, even if incidental.
Understand this and trends and marketshare shifts will come into focus.
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.
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'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.
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.
Some wager that the upcoming iPad 2 will pixel double both axis, similar to what the iPhone 4 did relative to its predecessor, while others believe that it will keep the resolution of the current generation.
Doubling both axis is a formidable technical challenge and would be a unique, likely expensive display. Continuing with the current resolution would represent a significant competitive disadvantage. As people acclimate to high density smartphones, such as the iPhone 4, the iPad's low density is really starting to stand out.
Few believe it will do anything in between. It won’t, the common wisdom goes, go to say 1536 x 1152 or 1280 x 860, or any other fractional improvement less than an outright doubling or quadrupling. The logic is that pixel scaling issues eliminate the possibility of such a half measure.
This harkens to discussions that occurred over 20 years ago.
It should be an embarrassment that such a discussion is occurring in 2011.
In the TiPb article linked above the author leads off with a slur towards Android, saying “Either iPad 2 will have a standard 1024×768 display or a doubled 2048×1538 Retina Display, or developers and users will be in for the type of frustration usually ascribed to Android.”
That makes for an odd, if not outright ignorant, statement: I can’t recall ever reading anyone complain about the density independent pixel of Android, or its awareness and accommodation of a wide variety of profiles. That’s a problem that it has solved very well, and a large ecosystem of sizes and resolutions of displays exist in remarkable harmony.
Consumers like being able to choose between 3” – 15”+ devices with a wide variety of densities. Choice is good.
Because of course the DPI issue has long been solved. Otherwise you would be lamenting that your 72dpi word processor isn’t compatible with your 300dpi printer: “Everything prints out all tiny-like”. Is that the case?
Vector fonts with pixel independent abstractions have been around for a long time (in TrueType and Postscript form), with Apple as one of the primary inventors. Most GUI frameworks, including iOS, have the ability to scale UI rudiments to virtually any resolution and pixel density with ease.
That is an ancient problem, long solved.
But what about icons? What about bitmap graphic artifacts?
In an ideal world icons would come in vector graphic form. That isn’t the case on Android (the platform doesn’t support SVG, including in the browser, which is a huge deficiency), but it is still shocking that Apple, which usually takes the lead on such innovations, doesn’t use them for iOS, as had been widely speculated as a given before the iPhone OS was first released.
With a vector graphic the rendered image is always perfect for the target, ideally with hints that suppress decorations at very low sizes.
Even with bitmap graphics, however, while it’s easy to contrive ridiculous examples to demonstrate the worst of scaling, the reality is that given that text should always be UI generated from vector fonts, perfect for the target, and graphics are usually just supplementary decorations, where scaling up or down by partial multiples is often perfectly adequate.
For your consideration below are some iOS icons (used for fair use purposes but owned by Apple) at their original pixel size, and then scaled to 125% and 150%. Scaling was done using Sinc (Lanczos3), which is a good algorithm to use when scaling up and you want to maintain fine detail.



The horrors! Just to be clear (as it's hard to imagine what the larger images would look like when shown in the same physical space), we're comparing this to simply pixel-doubling, which would look like the following (cropped to avoid exceeding most reader's screen bounds).

There is no universe where a straight pixel-doubled image looks better than an interpolated image, unless you have fine detail in the image (like text) which shouldn't be in the image to begin with.
Not only do they still look great, but remember that in such a case the actual viewed sizes would also decrease proportionally, so the marginal artifacts would be rendered completely irrelevant. Reading some of the blog entries on scaling you would think you’d end up with some sort of blob.
Not to mention that most iPad apps would be fixed up to handle the new platform shortly after the SDK were released.
I find it incredibly hard to believe that Apple will maintain the same resolution. The device was already considered under-pixeled when first released, and has succeeded despite that deficiency. With the appearance of actual competition over the coming months it would put the successor at a serious disadvantage out of the gate. Apple has always emphasized and often led in the spec department (the thinnest, lightest, brightest screen, widest viewing angle, highest pixel density, etc), so I don’t believe that Apple would allow such a scenario.
At the same time, doubling the pixels is a big expense because such a panel doesn’t yet exist, and that sort of density is rare in larger displays.
Then again, Apple, in talking about their blockbuster quarter yesterday, spoke about a mysterious $3.9 billion dollar supply chain investment. It would not surprise me in the least if they managed to get the volumes and process in place for such a display given how critical the iPad has become to their bottom line, and Apple's tendency to set new benchmarks.
If I had to place a wager, however, I would bet that Apple neither keeps their current resolution, nor will they double the resolution. I would guess that they will go to 1536 x 1152, or more likely 1280 x 960.