« Starting Over| Main | Spring Cleaning »

XJAX Means Never Having to Say You're Sorry

| | Comments (0)

I've been busy on my own writing this new XJAX application called batBack (which you can see on this blog), and it struck me how different the development environment of the future is going to be from today.

As you may know, I have an application that is a "blogger's toolkit" -- folks, if they choose, click on a little button and vote on articles, spam their friends, monkey around with the DOM, or just goof off. All the action happens behind the scenes -- there is no clicking a button and waiting for a new page to appear. It also all happens on another server -- batBack runs anywhere.

Well what happens when you have an error? I think the answer is nothing. For instance, over the weekend my SQL Server 2005 instance went down. It took me a few hours to figure that out, however, as there was no error page! In a "normal" application, when the database goes down you get some kind of butt-ugly error message. In fact, until somebody went to one of the preferences pages (which are written in normal ASP.NET format) nobody knew the program was abending!

It's a strange thing. We go to such extremes to get the application out of the way of the user, which we should. But when the application needs attention, what should we do?

It's not a simple answer. I've ranted here before about all those applications that keep fighting for my attention on the screen. I just installed Google Desktop, and it is driving me nuts. Every time I sit down at my computer it pops up several articles it thinks I might like. Seeing articles that I might like is a desirable feature -- if I am in the mood to be looking at articles. Most of the time, however, I am supposed to be working, not surfing the web. So Google's "helping" is just an active attempt by my computer to distract me from my work. (Yes, I know I can turn it off. That's not the point. The point is that Google felt, by default, that they could take up my time whenever they saw fit.)

It's at the point now where it seems like every stupid programmer who ever wrote a computer program thinks his or her program needs some of my attention each day. This is patently silly, and completely unsustainable as we get hundreds and thousands of programs helping us out in our lives. As you can see, I am against any sort of obtrusive behavior by a program if at all possible. In fact, Outlook is beginning to get on my nerves as well. Why can't we just integrate email into the operating system?

So what about errors in a Web 2.0 Application? I don't have a good answer or recommendation yet about this, as there are so many conflicting interests. Obviously, the people who wrote the program need to know it is not working. In most cases this means writing to a log file in the database. Only you can't do that when the database itself is down.

And because the program is XJAX it is even more interesting. I guess I could write ANOTHER XJAX logging application and have my main application write to it for errors on another server somewhere. But where does it stop?

Let's say that instead of writing an XJAX C/S application, I wrote an XJAX P2P application. Say something with a grid (not a grid like a table, a grid like a thousand web pages all talking to each other.) So if I can't talk to my peers, is that an error? In a stateless, P2P, asynchronous system, is it even possible to have an error? How would you know? How would you distinguish the "not talking to" and "communication broken" states? Who would you tell even if you did have an error? Yes, during testing you would know an error condition if you tried to send things and they were not received. But for the user in a running web page? Without any messages or indications that your program is running?

The pattern of development, testing, and deployment is going to need some changes. Perhaps a continuously evolving system, where all three of these activities take place concurrently on the same systems. The code IS the development IS the testing IS the product. That may be a little hard to get your head around. Perhaps I can explain what I mean in another post. In the meantime, I gotta go fix my database.

Leave a comment

About this Entry

This page contains a single entry by Daniel published on April 17, 2006 3:45 PM.

Starting Over was the previous entry in this blog.

Spring Cleaning is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.23-en
Daniel Markham