Thursday, May 31, 2007

RIApedia Story on SeeSpotSlide

Mike Potter from Adobe did a nice write up on the Rich Internet Application site RIApedia. He mentions the main features of the app as well as a few hints at what's to come. Overall, a positive review of the app in my opinion!

Mike did have a few small point incorrectly documented, like the ability to retrieve saved slideshows and the inclusion of video as a future element - it's in there now. Mike fixed the saved slideshow feature error quickly - thanks Mike! Hopefully, this will be the first of many mentions in the tech world!

Wednesday, May 30, 2007

Microsoft's Surface

Hmm. Very interesting stuff. Seems as though Microsoft has hired a few people away from Apple to scheme up this one. Overall, the execution looks fantastic! Kudos to MSFT for that. But, we were talking about it over lunch and it seems that the model has only one point of distribution - restaurants. Where else are you going to be sitting down to use a table for any length of time? You couldn't use it for an extended period - sitting looking down all day will kill your neck I would think. And, you couldn't mount it on a wall. You'll loose half of the functionality of placing things on it like they do in the demo.

A photography studio could benefit from it by using it for a client presentation. But, I couldn't see working all day at one. I would expect that only the largest studio's would be able to afford it until the price point comes down.

We're currently doing some work in the gaming industry and this seems like it would be a nice application for use there. Again, the table top is a bit awkward unless your at a bar or restaurant though... Very nicely done, none the less. I can't wait to see how it gets used in the real world.


technorati tags: , , ,


Slideshow section over there >>

I added a little slideshows section to the right side of the interface. I'll keep that updated with a few new slideshows from time to time. I'll have to use the small size in SeeSpotSlide for the slideshows though. Not enough room on the sidebar for the medium.

Flex/Cairngorm Tips: #1

So I thought it might be cool to pass along some tips/tricks that got me through the development on SeeSpotSlide. I'll be posting these as I run across them in my head or through updates to the application.

Using a Model to Control the View
I started doing this about half way through the development of the application after seeing it done in some sample apps on a Cairngorm message board. The gist of it is that you tie a component's view to a model. You change the model from anywhere in the application and the view changes. Simple right?!

Here's some sample from the SeeSpotSlide codebase:
In my model classes I have one called ViewModel.as. It is a singleton class (only one instance can exist at a time) and has the following structure.

package com.model
{
import com.adobe.cairngorm.model.ModelLocator;
import com.model.ViewModel;

public class ViewModel implements ModelLocator
{
private static var model:ViewModel;

[Bindable]
public var viewStateReports:Number = VIEW_GRAPHS;
public static var VIEW_GRAPHS:Number = 0;
public static var VIEW_GRID:Number = 1;


public function ViewModel()
{
if (model != null)
throw new Error("only one ViewModel instance should exist");
}

public static function getInstance():ViewModel
{
if (model == null)
{
model = new ViewModel();
}

return model;
}
}
}


Then, in my view class I bind to 'viewStateReports' on say an accordion component like this:
<mx:accordion id="myStuff_acc"
width="560" x="10" bottom="125" top="53"
selectedIndex="{ ViewModel.getInstance().viewStateReports }" />

Now, from any class file I can instantiate the instance of the ViewModel class and change the state of 'viewStateReports' like this:
ViewModel.getInstance().viewStateReports = ViewModel.VIEW_GRID

My accordion component updates due to it's binding to the model. No crazy paths to follow to point back to the component and no custom events that need to be built and fired to trigger the change. The binding mechanism on the accordion sets up it's built in event listeners to make the change. It's probably a good idea to come up with a naming convention that is really obvious here on the 'states' you'll be changing to. When you have a bunch of states of components and views changing in this way, things can get a bit hairy without a solid naming strategy.

The girls!

Here's an example from SeeSpotSlide. I made this in the application with the images being served up from SmugMug.


SeeSpotSlide - under the hood

Now that SeeSpotSlide is up and running, I thought I'd document what's under the hood.

The main application is built in Flex 2.01. We used FlexBuilder 2 for all of the development. This was the second large scale deployment application where we used the Cairngorm framework within Flex. Cairngorm has been fantastic! It's provided a way for us to create and organize our projects so that extending and maintaining them is not only possible, it's pretty easy. In fact, the integration of SmugMug functionality was completed in a day and a half with unit testing and deployment!

It took 2 view classes (the main view and the thumbnail holder), one model class, one event class, 3 command classes and a delegate class. Most of these were 'save as' documents from other functionality with customizations inserted where appropriate. The structure of a Cairngorm framework project at first seems to be a bit bloated, but the organization of the classes and the ease at which they can be extended and managed far outweighs the number of files. I think the project has over 100 class files at this time but each one is probably averages 40 or 50 lines of code. To me, it's much easier to browse through the project tree in FlexBuilder to find/remember where a chunk of code is by filename, than it is browsing through a few very long class files. I guess that's a personal preference, but it seems easier to hand off to another developer when constructed in this manner.

So, thanks Cairngorm guys! The name is a pain in the ass to spell, but the value is over the top!

Slideshow application is born!

It's alive! The first lab initiative to be completed under the new - although undocumented - rules of the lab:

  1. conceptualize an idea
  2. create a business model around it
  3. build a functioning prototype
  4. launch in 90 days or less
SeeSpotSlide officially launched on Tuesday of last week exactly 90 days to the day from it's inception date. It was challenging and sometimes frustrating, but the end result is a pretty nice alpha if I do say so myself. All of the functional requirements created for the alpha have been documented in Basecamp as well as time tracking. I'll be checking into some metrix on timing for an analysis at a later date.

Busy for awhile

It's been quite some time since I posted. Crazy busy at work. Trying to figure out how I am to manage the KnowareLab initiative I've been assigned to. So far, the work is great but a bit quiet - 'on a deserted island' would be a good description. I'll document the progress of the application here.