Alex Pooley's Blog

Hello there, my name is Alex Pooley and I'm a freelance web developer residing in Perth, Western Australia. My passion is in the development of web sites that solve everyday problems. Here's a gallery of some of my notable work. If you need a web site designer or developer, contact me with further details. Lastly, you can read more about me.

So, You Wanna Build A Web App?

May 29th, 2006

Why don't you subscribe to my blog while you're here? I'm a freelance web developer and I blog about Ruby, Rails, and business online.

Go ahead and subscribe to my RSS feed. Thanks for visiting!

At first glance, “msgpad”:http://msgpad.com looked like a pretty simple app. In terms of functional screens, there’s really only one - the chat screen. How wrong I was…

*Renaissance Man*

During the renaissance period it was typical to aspire to be both artistic and scientific. This romantic ideal has lost way to our more modern specialised lifestyle. In the computing world at least, we have specialised roles ranging from tech support, to graphic design, and from grunt coder to CTO/CEO. In building “msgpad”:http://msgpad.com I had to try to be _all_ of these roles. To be honest, it was really easy to be either scared of learning something, or ignorant of things that didn’t interest me. I’ve had to learn a fair waft of Javascript since starting “msgpad”:http://msgpad.com and I’m really glad I learned it. However, it was a conscious and calculated decision to learn Javascript, and a decision I wasn’t entirely happy about.

*Schedule*

The “artwork” on “msgpad”:http://msgpad.com took about a week to create, slice up in to HTML, and style through CSS. One bloody week out of eight full time weeks so far! In my mind I had boxed the graphic design up as ‘graphic design’ and shelved it as “something” that had to be done rather than “something” that was going to take me five days to get done.

The only true functional screen in the app, has so far taken something like a month, easy. It’s only one screen! Browser bugs, technical limitations, architectural and technical re-work account for the bulk of the time. In a perfect world you would understand the problem entirely before starting, but that only happens in student math books.

On the up side, I’ve realised that ALL of these problems are giving “msgpad”:http://msgpad.com its intellectual property. The fact is that if “msgpad”:http://msgpad.com were simple, then I would arguably be wasting my time.

Here’s a tip: When talking about chunks of work in a project, talk in “weeks” and not “hours”. I’ve found it gives the appropriate fuzziness to feel your way through, without losing the power of a deadline.

*Technical Limits*

I’ve ranted about the state of web application tools previously. Think of a web application as simply an application and you will better see the hurdles that we as a global society are currently facing. Race conditions due to asynchronous calls+network latency, working with HTML, CSS, JS, Ruby at the same time, integration of those technologies, hosting challenges, and more.

_Race Conditions_

Did you know Javascript is single threaded? But guess what, once you call out to the network you’re no longer single threaded because different queries take different lengths of time to execute, and don’t forget about the unpredictable network lag. This becomes a problem when your performing non mutually exclusive operations. If I look at “msgpad”:http://msgpad.com and generalise, then “any application with simultaneous requests that returns state containing a time component could create a race condition”. The way I’m controlling this is with a multiplexer component as a gateway to the network. I’ve quickly illustrated below how it looks when I’m querying my server from the client through the Internet.

_Development Technologies_

Ruby On Rails and Prototype only take you so far. A long way mind you, but definitely not far enough. In my opinion, the biggest problem web applications face right now is the complexity created by combining some server side language (Ruby in my case) with Javascript and HTML. Ruby sits server side, while JS and HTML sit on the client side. But, the Ruby creates the HTML that the JS interacts with. Without any doubt in my mind, until this problem is solved web applications will continue to remain trivial. Some may argue that update_page or RJS have provided a solution, but they really only provide a partial solution.

*Conclusion*

Well, there’s plenty more I could say about my experiences so far but I won’t, I have an application to build. I will say that the very fact that I am finding these problems gives me a lot of happiness. These are big problems that the edge of the Internet is facing right now. With problems come opportunities.

If you’re interested in following my adventure on the edge of the Internet I encourage you to signup to this blog by either entering your email in the subscribe box to the top-right of this page, or via RSS. “msgpad”:http://msgpad.com is a web chat application capable of operating on any device with a browser (computers, mobiles, TVs, Nintendo DS/Wii)! You may like to subscribe to “msgpad”:http://msgpad.com also. I’m currently looking for beta testers to play with the application on different devices and operating systems.

One Response to “So, You Wanna Build A Web App?”

  1. oldmoe Says:

Leave a Reply