The Delusion Of “Write Once, Run Everywhere” Mobile Applications
In a recent blog called The Lies, Damn Lies & “Statistics” of Mobile Commerce, I focused on exposing one of the industry’s dirty secrets about the current state of mobile commerce and the types of conclusions that could reasonably be made so early in the transition from feature phones to smart phones and tablets worldwide. Now I turn my attention to another popular myth about the development and publication of mobile applications: the delusion of “write once, run everywhere” mobile applications and the fallacy of their existence.
The old adage that “there ain’t no free lunch” has never been more applicable than it is to mobile applications. There are a lot of other analogies that likely apply as well from “you get what you pay for” to “if it sounds too good to be true, then it probably is.” I could likely go on for days with such analogies, but I raise them all today to focus on the importance of understanding that “write once, run everywhere” approaches to mobile simply don’t work. At all. They are marketing “FUD” and will fail you miserably if you’re attempting to build any mobile application of substance to run a real business through this new form of digital distribution on the highest value touch point between your brand and your consumers.
The premise of “write once, run everywhere” mobile applications is extremely alluring, almost to the point of being mesmerizing. After all, it very much feels like a “silver bullet” or “panacea” in which you get the best of all possible worlds … one investment for complete consumer coverage across all potential platform permutations … anytime and anywhere. Indeed. Unfortunately, and in order to work properly, the technology underlying “write once, run everywhere” tools has to be “dumb downed” to the least common denominator of the worst possible platform in order to check the box that all are actually covered. As a result, and even when they technologically function according to the cross platform marketing pitch, they ultimately become average everywhere and exceptional absolutely nowhere. They can handle the simplistic, but completely choke on the challenging. They can also excel at the trivial, but then gag on the useful (let alone the complex). For consumers, unfortunately, this ensures a miserable user experience across a vast array of platforms and the end result is quite predictable … dissatisfaction, frustration, deletion, good riddance and good-bye. Forever.
More than a decade ago, Microsoft published FrontPage as a “what you see is what you get” development tool for those wanting to create web pages and web sites without having specific programming expertise in HTML. While the software package functionally worked, it became evident extremely quickly that nobody in the real world would ever try running a real business with web templates and tool sets whose output was commensurate with the underlying level of investment put in to making them. In the mobile world, the equivalent versions of FrontPage for apps now include products from @adobe, @mobileroadie, @appcelerator and @appmakr amongst others. In each of these cases, there are scores of applications that have been automated and built for mobile via wizards and templates … including several for very large international brands. However, if you go to review App Store rankings for most of these, they are challenged at best and horrific at worst, with many representing some of the poorest rated applications on Earth. Why? Because automated, template-based apps simply don’t create the engagement or user experience needed to drive brand loyalty and commitment based on the underlying utility and value expectations of application users. Period.
App quantity should never be confused with app quality and the lack of meaningful, ongoing engagement between your brand and your consumer base through these types of tools is a risk simply not worth taking. In fact, your brand would be exponentially better off doing absolutely nothing on mobile if the alternative was to simply check the box and risk offending your anytime, anywhere mobile audience. Using such tools to get on to unproven and unused platforms is not a marketing race that you want to win. Instead, focus on doing what you’re planning to do exceptionally well for the relevant platforms, avoid automated templates throughout and live by a Missouri-like “show me” attitude for any non-mainstream platforms.
Otherwise, you will sacrifice delighted application users on the platforms that matter in lieu of hitting the mark for audiences that are the current equivalent of “if a tree falls in the forest and there’s nobody there to hear it, does it make a sound?”
Hybrid app skills gap is hurting mobile application development
Hybrid Android applications have certain functions that are going to be coded using HTML5, and other functions that will be programmed natively in Java. The dichotomy of HTML5 versus native apps raises questions as to which parts of an application should be developed using browser-based technologies and which features should be developed using native code. TheServerSide turned to Gargenta for answers.
“For things that are run-of-the-mill,” said Gargenta, such as forms or features that you might see on a traditional webpage, there’s a good chance Web-based technologies will work. “If there’s nothing fancy about the feature you are implementing, you can knock it off using HTML5 .”
On the other hand, integrating maps or taking and manipulating pictures are the types of activities that can benefit from a native mobile approach . “Those things are best done natively because you can take the power of the mobile device and work with the camera, work with the sensors and create a great user experience,” Gargenta said.
Why Aren’t There Better Testing Tools?
Static analysis, UI record and playback, and load testing dominate today’s testing tools. Just like they did in the 1990s. Where’s the progress?
Today, we announce the winners of this year’s Jolt Awards in the Testing Toolscategory. As I am every year, I was impressed by the quality of implementation of most of these products (although, frankly, distressed to see how many of them are Windows-only solutions). Quality is doubly important in test tools (as it is, for example, in compilers and debuggers) because you don’t want defects in those products to send testers and developers on wild-goose chases. In this regard, I have no qualms with the products that were nominated, nor with the winners this year. They’re all excellent implementations of useful products.
What does vex me, though, is that the year-over-year advances are by and large unoriginal. They simply take existing concepts and apply them to new platforms. This year, we’re talking about more mobile and more cloud. Terrific!Those platforms need testing tools. But maybe they need testing tools other than this familiar list of:
- Code inspection
- Unit testing
- UI testing
- Browser testing
- Load and performance testing
How about something really original, such as automated black box testing? Fuzz testing? Configuration testing? Security and penetration testing? Disaster recovery testing? Personally, I’d like to see new categories like privacy testing become part of the language. (When you turn off an app, does it remove from RAM any elements it decrypted during operation? Right now, that’s an incredibly difficult thing to test, and none of the tools allow you to do this unless you write a special script manually and have them run it — essentially turning them into expensive testing harnesses.)
Even more than the lack of support for important forms of testing is the true lack of automation. Automation, as defined in the testing tools industry, is not what it is elsewhere. It primarily means the ability to record and replay tests. This is not exactly a high bar to clear, as pretty much every product can serve as a harness and run tests when told to do so by a script or a continuous integration server. True automation comes on the front end, not the back end.
For example, when I’m testing a Web app, I should be able to run a module that automatically generates tests that check for security problems (and I mean the whole gamut: SQL injection, null-string attacks, CRLF attacks, oversized payloads, invalid REST commands, cookie tampering, multiple logins, buffer overflows, etc.). When I point the software at a function that takes an integer parameter, I’d like it to create tests that run the function with edge-case values (
1). If it takes strings, I want automated tests that test for null, empty strings, strings of 30,000 characters, strings containing only 0s, and strings with random values. If the app reads an input file, then I want tests that exercise how it handles a missing file, an empty file, a file bigger than 2GB, a file with only spaces in its name, a file with random values. If it’s a text file, how does it handle foreign characters, LF vs CRLF, etc.?
I could do this forever. There are literally thousands and thousands of obvious fault conditions whose tests should be automated by test tools — none of which are part of the current herd. I’d certainly also want what the herd presently does well with regard to these tests: capturing the exception, measuring execution time when unexpected input is used, and reporting the results in a nice interface with drill-down options. But the automation needs to happen up front so that I’m not writing millions of scripts to test all the different variations myself. This is the perfect thing for software to automate to remove the human bias that inevitably informs test scripts.
Software today is far more reliable than it was even 10 years ago, despite a steep run-up in complexity. However, it’s still a long way from where it could be.Testing tools deserve part of the credit for the success so far, but also certainly part of the blame for not providing deeper and richer testing.
I Hate the News
by Aaron Swartz
Some people start their day by reading The New York Times. Others end it by watching the nightly news. Some get it from The Daily Show. Others download it from a variety weblogs. Some keep up-to-the-minute by following CNN. Others have instant news updates automatically text messaged to their phone. But everybody seems to agree: it’s a citizen’s responsibility to keep up with the news. Everybody except me.
I think following the news is a waste of time.
Some people agree with me on a small scale. Some point out that the cable channels are obsessed with bizarre crimes that have little larger impact, that they worry too much about horse-race coverage of politics, that too much of the news is filled with PR-inserted nonsense. But they do this because they think these are aberrations; that underneath all this, the news is worth saving. I simply go one step further: I think none of it is worthwhile.
Let us look at the front page of today’s New York Times, the gold standard in news. In the top spot there is a story about Republicans feuding among themselves. There is a photo of soldiers in Iraq. A stock exchange chief must return $100M. There is a concern about some doctors over-selling a nerve testing system. There is a threat from China against North Korea. There is a report that violence in Iraq is rising. And there is concern about virtual science classes replacing real ones.
None of these stories have relevance to my life. Reading them may be enjoyable, but it’s an enjoyable waste of time. They will have no impact on my actions one way or another.
Most people will usually generally concede this point, but suggest that there’s something virtuous about knowing it anyway, that it makes me a better citizen. They point out that newspapers are a key part of our democracy, that by exposing wrong-doing to the people, they force the wrong-doers to stop.
This seems to be true, but the curious thing is that I’m never involved. The government commits a crime, the New York Times prints it on the front page, the people on the cable chat shows foam at the mouth about it, the government apologizes and commits the crime more subtly. It’s a valuable system — I certainly support the government being more subtle about committing crimes (well, for the sake of argument, at least) — but you notice how it never involves me? It seems like the whole thing would work just as well even if nobody ever read the Times or watched the cable chat shows. It’s a closed system.
There is voting, of course, but to become an informed voter all one needs to do is read a short guide about the candidates and issues before the election. There’s no need to have to suffer through the daily back-and-forth of allegations and counter-allegations, of scurrilous lies and their refutations. Indeed, reading a voter’s guide is much better: there’s no recency bias (where you only remember the crimes reported in the past couple months), you get to hear both sides of the story after the investigation has died down, you can actually think about the issues instead of worrying about the politics.
Others say that sure, most of the stuff in the news isn’t of use, but occasionally you’ll come across some story that will lead you to actually change what you’ve been working on. But really, how plausible is this? Most people’s major life changes don’t come from reading an article in the newspaper; they come from reading longer-form essays or thoughtful books, which are much more convincing and detailed.
Which brings me to my second example of people agreeing with me on the small scale. You’ll often hear TV critics say that CNN’s up-to-the-minute reporting is absurd. Instead of saying, “We have unconfirmed reports that—This just in! We now have confirmed reports that those unconfirmed reports have been denied. No, wait! There’s a new report denying the confirmation of the denial of the unconfirmed report.” and giving viewers whiplash, they suggest that the reporters simply wait until a story is confirmed before reporting it and do commentary in the meantime.
But if that’s true on a scale of minutes, why longer? Instead of watching hourly updates, why not read a daily paper? Instead of reading the back and forth of a daily, why not read a weekly review? Instead of a weekly review, why not read a monthly magazine? Instead of a monthly magazine, why not read an annual book?
With the time people waste reading a newspaper every day, they could have read an entire book about most subjects covered and thereby learned about it with far more detail and far more impact than the daily doses they get dribbled out by the paper. But people, of course, wouldn’t read a book about most subjects covered in the paper, because most of them are simply irrelevant.
But finally, I’d like to argue that following the news isn’t just a waste of time, it’s actively unhealthy. Edward Tufte notes that when he used to read the New York Times in the morning, it scrambled his brain with so many different topics that he couldn’t get any real intellectual work done the rest of the day.
The news’s obsession with having a little bit of information on a wide variety of subjects means that it actually gets most of those subjects wrong. (One need only read the blatant errors reported in the corrections page to get some sense of the more thorough-going errors that must lie beneath them. And, indeed, anyone who has ever been in the news will tell you that the news always gets the story wrong.) Its obsession with the criminal and the deviant makes us less trusting people. Its obsession with the hurry of the day-to-day makes us less reflective thinkers. Its obsession with surfaces makes us shallow.
This is not simply an essay meant to provoke; I genuinely believe what I write. I have not followed the news at least since I was 13 (with occasional lapses on particular topics). My life does not seem to be impoverished for it; indeed, I think it has been greatly enhanced. But I haven’t found many other people who are willing to take the plunge.
The Dirty Little Secret Of Overnight Successes
BY JOSH LINKNER
As Chris Dixon pointed out in a recent blog post, Angry Birds, the incredibly popular game, was software maker Rovio’s 52nd attempt. They spent eight years and nearly went bankruptbefore finally creating their massive hit.
James Dyson failed in 5,126 prototypes before perfecting his revolutionary vacuum cleaner. Groupon was put on life support and nearly shut down at one point in its meteoric rise.
When looking at the most successful people and organizations, we often imagine geniuses with a smooth journey straight to the promised land. But when you really examine nearly every success story, they are filled with crushing defeats, near-death experiences, and countless setbacks.
We often celebrate companies and individuals once they’ve achieved undeniable success, but shun their disruptive thinking before reaching such a pinnacle. Before Oprah was Oprah, before Jobs was Jobs, they were labeled as misguided dreamers rather than future captains of industry.
In your life, you’ve probably had a setback or two. When you stumble, it’s tempting the throw in the towel and accept defeat. There’s always an attractive excuse waiting eagerly, hoping you’ll take the easy way out. But the most successful people forge ahead. They realize that mistakes are simply data, providing new information to adjust your approach going forward.
The ubiquitous WD-40 lubricant got its name because the first 39 experiments failed. WD-40 literally stands for “Water Displacement–40th Attempt.” If they gave up early on like most of us do, we’d sure have a lot more squeaky hinges in the world.
You have a mission to accomplish and an enormous impact to make. You will inevitably endure some “failures” along your journey, but you must realize that persistence and determination have always been primary ingredients in accomplishment.
Don’t cave to your mistakes, embrace them. In fact, mistakes are simply to the portals of discovery. There’s an old saying that “every bull’s-eye is the result of a hundred misses.” So the next time you feel the sting of failure, just realize you’re likely one shot closer to hitting your target.
And who knows? Maybe after a few dozen failures and months or years of hard work, you might just be that next “overnight” success.