Monday, October 6, 2008

29 Days: Technology Day

Top items on my agenda:

  1. Flesh out the details of what I'm building
  2. Figure out the technology I'm using
I actually have a pretty good idea of what I'm building since I've been thinking about these ideas for quite a while (more on that soon). So, that makes today Technology Day.

Server Side

I already made one big decision and that's to build on top of Google App Engine, which also means I'm using Django and Python. App Engine has a few limitations, including the lack of cron jobs and the inability to receive email, that I'm not happy with, but I can live without them right now. And, I think that Google will eventually lift these restrictions.

I did consider hosting this on my new ISP, DreamHost, where I have unlimited storage and unlimited bandwidth. But, alas, I don't get unlimited CPU. DreamHost is a great ISP, but they don't scale and I'd have to manage my own server installation. With App Engine, those issues become non-issues. When I weigh the advantages against the disadvantages, I think App Engine is a pretty good decision. And, if I really need it, I can write a small app at DreamHost to help me work around App Engine restrictions without causing scale problems.

Client Side

That leaves the client -- what do I run there? I briefly considered Flash and Silverlight. While they would certainly allow me to build a gorgeous client, they are heavy and would require me to create a separate implementation for mobile browsers that don't support them.

That means JavaScript and DHTML for all dynamic actions on the client. There are two issues here: the difficulty in getting everything right in every browser, with all the subtle differences, and debugging, which is a pain even with Firebug. Google Web Toolkit looked really promising. I spent a fair amount of time today reading documentation for it and came to the conclusion that it's pretty cool. It does a lot more than I need, but I'd get to use a real development environment and a real debugger. Unfortunately, the learning curve for using GWT is pretty steep. If I were doing a six-month or longer project, I'd seriously consider it.

There are a number of JavaScript frameworks worth considering. I've used Prototype and in the past (it's sort of the default for Ruby on Rails) and there were some things that I didn't care for. For one, they were written by different people and it shows. I've gotten the most recommendations for jQuery and Yahoo UI, so I took a serious look at both of them. Both are actually quite good with different strengths and weaknesses, but I liked the way jQuery was designed a bit better. So, jQuery it is.

Next steps: learn jQuery as I start building the server side of the service.

West Side

I almost forget agenda item 0 -- where am I working? I have a great home office and I work in it every day, but it's a home office. When I'm home, there are lots of distractions, ranging from the refrigerator to my kids after school. Even though I'll still work at home in the evenings and on weekends, I wanted to have a real office environment with minimal distractions. So, I decided to make a trek across the lake and work at StartPad in Seattle. StartPad is a co-working space for the Seattle startup community and it's where I'm now holding monthly UX office hours.


Post a Comment