Visit Your Local PBS Station PBS Home PBS Home Programs A-Z TV Schedules Watch Video Donate Shop PBS Search PBS
I, Cringely - The Survival of the Nerdiest with Robert X. Cringely
Search I,Cringely:

The Pulpit
The Pulpit

<< [ Ozzy Knows Best ]   |  You Never Write, You Never Call  |   [ The Truth About IT Consultants ] >>

Weekly Column

You Never Write, You Never Call: New tools and services are (finally) making applications more intelligent.

Status: [CLOSED] comments (48)
By Robert X. Cringely

If you use Microsoft's Windows or Apple's OS X and for some reason an application crashes, you know the drill. A dialog box opens automatically ready to report what just happened back to Redmond or Cupertino. It is an opt-in procedure so you can decide not to send the report, which is what I tend to do the third or fourth time the same crash happens. For an Apple or a Microsoft this capability of seeing, immediately and automatically, what went wrong is invaluable for planning that next service pack or security update. Alas, this kind of diagnostic capability hasn't been available to those developers who don't also happen to own the operating system as Apple and Microsoft do. But that fact is changing and now there is a way for many third-party developers to put this same capability into their applications.

PreEmptive Solutions is a software tools company from Ohio that is best known for its DashO and Dotfuscator products, which are used to obfuscate and to some extent optimize bytecodes for Java and .NET applications, respectively. These interpreted programming environments, where a lot of corporate development is done today, are especially vulnerable because the program code is exposed and can easily be copied or messed with. Obfuscation makes such code theft harder to accomplish by changing the appearance of the code, though not its operation. It's hard to track program logic when every variable -- no matter what the actual value -- is called "a" for example.

PreEmptive has added to its latest version of Dotfuscator what it calls "Runtime Intelligence" -- that ability to send data or to call for help when there is trouble with an obfuscated application.

But wait, there's more! Application failure is only one of many possible triggering events for Runtime Intelligence. It can be triggered by a crash but also by a user exit: why did you choose to close the application? This makes it faster and more reliable to gather data from beta releases and make product improvements, for example. Now it is possible to evaluate what users do and don't use in a beta product, where they stopped working, what features were ignored, etc. Why put a lot of effort into a feature that users apparently don't even care about?

The triggering and reporting code is added after the application, itself, is completely finished. This means you can add these services without modifying or even having access to source code. Adding this code, since it happens as part of obfuscation and optimization, not only doesn't make the application bigger, it usually makes the application code smaller and therefore faster to load and run.

While end-users may not have even heard of Dotfuscator, this doesn't mean it isn't already running in some version on their PCs. As part of Microsoft's Development Environment for .NET (though not from Microsoft, interestingly), Dotfuscator or the hooks to run it are in every Windows machine that has currently installed at least one .NET application. So for Windows users, this capability is probably already sitting on their desks.

This would be a good point to say that I have no personal financial interest in PreEmptive Solutions. I just like their products.

What about privacy? What about my data? Doesn't this Runtime Intelligence stuff make me vulnerable to everything from identity theft to mind control by Bill Gates?

Probably not. In most cases it is opt-in, so you can decide not to participate. What generally counts to software companies is statistical significance, so if you opt out of reporting a beta problem chances are enough other people will have stayed in to report all the big bugs. Also Runtime Intelligence is primarily offered as a service by PreEmptive, so the data first goes to them, where it is aggregated and any identity information removed. Corporate users can choose to gather data to their own servers, but since they are also probably reading your e-mail, that horse has already left the barn. Remember there is no specific freedom of speech or even right to privacy in corporate life.

Let me repeat that in case it came as a surprise: there is no freedom of speech or even right to privacy in corporate life.

One area where this new capability will find wide use is in the sale of software, itself. The software business has changed dramatically in the last decade and most applications are today sold or delivered online and the sales cycle generally begins with a potential customer downloading a demo version. It is in the interest of the software company to convert as many of those demos as possible into paid versions and Runtime Intelligence can help that happen.

Evaluation copies are, for most software companies, a black hole. At best the company can hope to learn through activation of the program that it has been used to at least some extent, but that's it. An otherwise very motivated customer could miss the opportunity to buy simply through distraction or a mistake in using the program. Runtime Intelligence, in contrast, can report back to a CRM system when and how an evaluation version has been used. But even more importantly, it will often show exactly when and where the customer STOPPED using the demo, which could indicate a bug or part of the application that could use improvement. The result is more data, more information, and ultimately more sales.

I think Runtime Intelligence will become an important part of building applications in future.

A very different approach to the same kind of problem was presented this week by Google with its Google App Engine. In this instance, of course, the applications run entirely in the Google computing cloud so there is not much to download or even to, frankly, administer. But if your Python coding is good enough it is easy to see how you could emulate parts of the Runtime Intelligence functions I've just covered from PreEmptive. This is very seductive for developers. Let Google sweat the hard stuff, bearing the brunt of scaling your app to galaxy class. But like Amazon's EC2, which competes in a similar space, Google's App Engine is a work very much in progress.

Dave Winer calls Python "the new BASIC" and I suppose he's right, especially in its BASIC-like choice to abandon thirty years of C, C++, Java, and C# technology for a different path. But there will always be new languages and new approaches to computing. What I think we have here that's truly new with Google's App Engine is a company with deep pockets willing to spend some real money to push its own cloud agenda combined with some new technology that is, because of the nature of the service, entirely hidden from us.

Simply put, Google has made some enormous technical breakthroughs using the new multi-core processors. New platforms that use massive numbers of cores and even more massive numbers of program threads per core have led to performance increases in Google's plant that make it possible to roll out services like the Google App Engine. This is an instance not so much of brute force but of brute elegance. But if you are Google what do you do? Do you share these new ideas with your competitors? Not if you can help it. You EMBODY them in new services where the cogs and gears are hidden. It's strategic for Google and important enough that they'll do whatever it takes to make the platform attractive to us while also doing whatever it takes to keep us from knowing how it really works.

Comments from the Tribe

Status: [CLOSED] read all comments (48)

You never write, you never call, You never post until Friday afternoon! ;->

a_one,a_two | Apr 18, 2008 | 12:24PM

You never write, you never call. You never post until Friday afternoon! ;->

a_one,a_two | Apr 18, 2008 | 12:28PM

I read as far as the Orwellian phrase 'code theft' and stopped.

fewqwer | Apr 22, 2008 | 1:45PM