Visualize History

How it all went down.

Choosing the Stack: Part 1: Researching Your Options

After getting all my notes together and organized, I realized immediately that the next step had to be choosing an architecture, or stack.  (Those two are not synonymous, but its ok).

To start, I looked at the components of the stack of the proof of concept version, from bottom to top:

  • OS: Linux - as chosen by my web host, and not likely to change
  • Back end database: MySQL - the only one I know well
  • Back end code: PHP - my host does not support Python in a way that will help me, so this is pretty much locked in
  • Back end to front end link: JSON - (not exactly part of the choice, but interesting)
  • Front end language: JavaScript
  • Mapping API: Google Maps
  • AJAX framework: Yahoo! User Interface (YUI)
  • UI pieces: YUI

I know that I am basically stuck with PHP, MySQL and Linux on Apache (aka LAMP) and am cool with that.  So I checked those off the list.[¥] 

That leaves the front end or the part that a regular user sees.  I have a few choices, as far as I know.  There are three different types of application, and some choices within each type.

  1. Desktop application
    • this might make sense for some cases, but not for me
    • Verdict: No
  2. AJAX
    • What the proof of concept used
    • No installation necessary, so a lot of users can use the site by default
    • Good libraries exist now (YUI, JQuery…)
    • A little tough to do good UI work, especially debuggin on multiple systems
  3. RIA or Rich Internet Applications (e.g. Flash or Silverlight)
    • Full featured UI sets
    • Full featured IDEs - the program I program in
    • Well documented
    • Fairly widely installed, especially since YouTube uses Flash

Now that I have laid out my options, I need to ask myself what goals am I trying to solve, and which tool does the best job.  I personally happen to be much better at logic and "core" programming, and much less good at user interface coding.  To me it is therefore important to choose a tool that makes UI programming much easier.  Since this is a not-for-profit, complete side project, I don’t mind so much if I make my users install Flash.  I don’t have any users at al right now, so I’m not too worried about that.  I also do not have resources (time, money, or hardware) to test on any combinations of machines, so would like to make the platforms my app might run on as minimal as possible.

All those points push me to RIA, and so that’s my decision.  That’s not to say AJAX solutions aren’t perfect for a lot of people (e.g. Gmail), it just isn’t my best option.

Basically the two RIA options are Flash/Flex or Silverlight. Flash has a higher install rate, and I work for Silverlight’s owner, so I am choosing Flash/Flex.[±]  Flex can interact with Google Maps, too, which is crucial.  I certainly am not writing a mapping API by myself.

So there you have it.  My preliminary decision is to go with Flex.  Next I will look at Flex in great detail to make sure I have made the right choice, before I jump into coding or planning (or learning Flex, for that matter).

 

[¥] I didn’t actually.  I would love to use Python and when my hosting ends in a few month I will seriously consider to switching.  I don’t like my hosting that much right now, but will deal with it for now.

[±] Flash is the player that you are probably used to seeing (think youtube).  Flex is a free SDK that lets me write Flash .swf files for you to see in your player.  I will refer to the combo as Flex from now on.

No comments yet. Be the first.

Leave a reply