Working offline with AJAX

I still believe that the two most promising developments for software applications in the last couple of years are AJAX webapps and Eclipse RCP applications.

AJAX provides a 90% solution that’s good enough for most people if done right. RCP allows the flexibility of designing applications to work together and build off of each other. A lot of what the whole Web 2.0 idea is about, but in a fat client sort of way.

I’m personally leaning towards the AJAX system simply because it removes the whole software distribution and patching problems by allowing the system to be centrally managed. The main concern I’ve heard from people about this though is that if all of my applications are online, what do I do when I can’t get online. I think we’ve made huge strides with wireless and extending the internet to a lot of places that people never would have dreamed of having it before. But, there are still a lot of places that you can’t get it. Being able to get Google Maps in my car would be wonderful. Wimax is hinting that it might solve these problems, but we’ll have to see real world implemenations of it first.

The more pressing problem for an ISV is the issue of a business application’s functionality when the internet goes down. Is there a way to offer limited functionality that can sync up again when the connection is back? Could you have an offline mode for GMail? This would allow you to compose and go through your messages while on the train to work and then sync up again when you get to the office.

Currently with AJAX only the display logic is downloaded into the browser, all of the real work is done on the server side. This makes an offline mode impossible, you’re back to distributing software again. Is there a way to adjust our thinking about this solution to make this possible? Cracking this could remove one of the last hurdles for widespread AJAX webapp adoption.

Is the solution to this going to be so convoluted that we’re just better off with fat clients anyway?

Why are large companies so slow?

When I was in school, my friends and I found an interesting relationship. It’s pretty obvious, but I think it’s worth discussing. The speed at which a group of people moves is inversly related to the size of the group. In the college setting this involved deciding what to do on a Saturday night, but there’s an excellent post on 37Signals that discusses exactly this from another point of view. If you have a large number of people working on product development, in the end it has to boil down to one person being responsible for the final outcome. If the number of people is anything greater than one, then the speed at which the project gets completed slows to a crawl.

In large companies with the beuracracies necessary to support the infrastructure it becomes more difficult to narrow this decision making process down to a single person. There are sub-groups that all have to have buy in to the final decision. Everyone has to CYA and the fun politics come into play. It all amounts to nothing getting done. Many times even without the CYA aspect there is a refusal to boil it down under the belief that by letting everyone be involved the company will be able create the ultimate product. Getting people involved is a good thing, just make someone responsible and give them the authority to move it forward.

Contrast this with the startup mentality that the only way to survive is to break up what needs to be done into parts that individual employees can run with and accomplish. There is the belief that you need to get something out the door now and you’ll focus on improving it later. This corresponds with the advise I’ve heard from several people, for example Guy Kawasaki that a startup should ship then test. Let one person be responsible for the product. Have him or her gather data from others within the company but in the end they have to be responsible for moving it forward. If the product isn’t the ultimate, then refine it as you go and receive feedback. With a web product this is a simple process. With shipping products it means that you need to have both alpha and beta releases to customers and you have to have a process in place to evaluate and make adjustments based on feedback.

Finding new sources of content.

One of the things I’ve most enjoyed since leaving school is being able to peruse the book stores and libraries for interesting topics. Since I’ve left UofM I actually feel that the rate that I’ve been studying and learning has increased dramatically. I try to make it to the book store at least once a week to look for new ideas to investigate. The problem has been though that I’ve picked over all of the local bookstores for the most part.

I was rather disappointed when I got to the bay area to learn that the stanford library wasn’t open to the public. I know that it’s a private and very expensive school, but it was nice that the UofM library was open to the public, just so many interesting tidbits in there.

So, as I began to struggle to find new sources of content I extended my search outward. The internet was the obvious choice, but finding quality content has always been a hassle. So, I admit that I’m a bit late to the party, but I’ve recently discovered blogs and have absolutely fallen in love with them. All of the little tidbits of knowledge that are so hard to find in commercially produced content can be found out there. Discussions on the ins and outs of software engineering, getting over the fear of taking the plunge into entrepeneuship, how to plug your ipod directly into a volvo s60. And with so many people keeping things like blogrolls so that once you find something you like it’s easier to find more of it.

This weekend I took another plunge and decided to try out another of the recent fads. I downloaded my first podcasts. I have to say that talk radio has always annoyed me because for each story I found interesting I’d have to listen to 5 completely boring topics that I could care less about and then throw in commercials on top of that. With the podcasts you can get some topics that would have never been picked up by mainstream media. Of course it probably helps that the main interests that I’m following are business and software in the bay area (definite hot topics when it comes to podcasts).

I’ve personally noticed the major shift in content delivery for myself in the last several years. I’m no longer happy to take content on the schedule or terms that mainstream media dictates. With tivo and netflix for video, ipod with podcasts for audio, and blogs for news I’m fairly disconnected from the mainstream and couldn’t be happier with the firehose of targeted content that I receive on a daily basis.

RSS is great

I’ve really taken to using RSS on the web. When I find interesting sources of information, something that I feel might produce future interesting tidbits, I always look for an rss feed. Lately it’s become much more likely that you’ll be able to find a feed. Then I’ll add the feed to my bloglines page.

However, what just struck me last night was that I have no real history with this setup. One of the ideas that I’ve had in the back of my head for a long time is to have a personal document management system. I’d like all of the documents that I deal with in my life to be able to be put in a system where I can deal with them in an efficient manner.

  • All of the magazines that I subscribe to scanned in and OCRd.
  • All of the financial and tax documents that I have to keep track of scanned and OCRd.
  • My web browsing history and RSS feeds, saved offline and searchable.
  • This would need to involve such ideas as search, tagging, and browsing. Preferrably this could be set up through a nice web interface. The main issues however are:

  • I could set this up for myself, but it would be a fair amount of work.
  • If I set it up as a service I could charge for it, but there would be serious scalability issues.
  • To really do this the way I’d like would require document scanning and OCR.
  • I want all of my personal documents that I recieve in the mail accessible, then there are definite security concerns.