Archive for the 'Uncategorized' Category

Amazon EBS

I just got an email from Amazon about a new service.  Check it out…

http://www.amazon.com/gp/browse.html/ref=pe_2170_10160930?node=689343011

This new EBS system for E2C just made the whole compute-cloud offering from Amazon an easy port from a regular web app to an Amazon hosted app.  Before, all your persistent data storage had to go to S3 which had a specific API you had to develop for.  Now, it can go to EBS which acts like a block device.  In other words, a virtual disk.  So just about any application should “just work” instead of needing modifications.

I had stayed away from EC2 because I didn’t want to tie my apps to Amazon services.  But perhaps this fixes that problem.  I’ll have to play with it sometime soon.

First AIR app to ship?

This week, one of the projects I’ve been working on for the past year and a half ships.

Now, I have no idea if this next statement is actually true since I haven’t done extensive research.  But TimeLiner XE may be the first AIR app to ship.  And by “ship” I mean the more traditional meaning of the word, from a warehouse, on a CD, in a box.

This is a product that I’m really proud of.  We had a really rocky start in the development process, but I ended up taking the lead of most of the project and we were able to deliver something that I hope will really help kids out in school pretty close to the originally planned ship date.  It’s probably the most complex product I’ve ever worked on, and is definitely the biggest project I’ve managed.

For a little background, I work at an educational software company that sells directly to schools.  Because of the market, we generally need to produce our products on a CD, in a box, and with a (gasp) printed manual.  Sounds old fasion, doesn’t it?

It’s worth reflecting on the physical manifestation of software… It’s amazing how much satisfaction you can get from actually holding that beautifully designed box that is meant to contain your work.  Just to know that it was someone else’s job to go through iteration after iteration of design, and then someone else’s job to put ink on a piece of cardboard, and someone else’s job to assemble that cardboard.  All so the piece of software YOU worked on can be delivered to the customer in style.

The box is also great for those times when relatives ask what you do, and you can just point to that on your shelf and say “I made that.”  Then they can look at the pretty pictures on the box, or even crack the manual to see more pretty pictures.  It’s a lot easier to explain than giving out a URL to an AIR install badge or even giving a quick demo.

Unfortunately, there’s also an impending feeling of doom when you realize that you don’t get to update that software for a long time.  What if you missed some critical bug?  You lie awake at night wondering if you remembered to take out that September 1st expiration date that the Beta’s had and you wonder if QA ever tested that.   Those CD’s will last a long time and you can’t just throw up a new version of a web page and make all of the old versions disappear.  Sure we can do downloadble patches, and sure we’ll have a 1.1 version someday. But there is a certain feeling of permanency to the whole process.  I mean a major screwup means pressing new CD’s and packing them, and paying for postage.  That could be thousands of dollars.

I’m not sure if I dare to go check that expiration thing now…

OpenID from AIR movie

Here’s a quick movie I just recorded showing the user interaction of logging into a web service with OpenID and then loading up some data.

The flow goes like this:

  1. When accessing the web services the user is first presented with a normal login dialog.
  2. From there he chooses to use an OpenID login.
  3. He types in his OpenID identity.
  4. He is forwarded to his OpenID provider’s page.
  5. He clicks the "Allow" button, and is brought to a list of all the projects he’s previously saved.
  6. Upon clicking a project, the browser portion of the application closes and the program loads up the data over AMF

I’ll post code examples of what I did to make this all work as soon as I get some spare time.

AgileAgenda Beta Signups

Quick note, there’s a new signup for AgileAgenda betas.  Towards the end of the month, we’ll probably be releasing a Beta with a ton of improvements including things like fully integrated time tracking, resources across projects, and RSS feeds of tasks.


Gonna try out this CFML stuff, where to start?

I’ve heard great things about Cold Fusion, and with the second CFML server being open sourced just recently, it’s probably time for me to dip my feet in. 

So first, here’s what I want out of this…

I want a development environment which I can very quickly develop web based applications with. I need something that lets me do the most common web things very quickly.  I’m not afraid of writing Java for complex stuff.  (but really, how often does a web app have to do something really complex?)

Now, some questions that perhaps any readers out there might be able to help with…

Can you suggest where a CFML newbie should look to get started?  I ordered the first two volumes of ColdFusion 8 Web Application Construction Kit to get started already.  What blogs / websites / etc. should I visit regularly?

If I’m gonna go with an Open Source solution to start, OpenBD, or Railo?  In case it matters, eventually I’ll need it to run within JBoss and serve through Apache via an AJP connection back to JBoss.

What dev-environment do most people (on OSX) use for CFML?  Dreamweaver?  TextMate?  cfeclipse?  Since I’m also doing Flex stuff, the Eclipse based solution sounds appealing.

 

ObjectHandles Spotted - KwikUML

I was trying out KwikUML today and noticed some familiar looking resize handles.

A quick look inside the OSX bundle confirmed it, a use of ObjectHandles. This psyched me up, it was the first time I "accidently" found a use of one of my projects while doing my normal daily stuff.  Looks like an older version since I noticed a couple bugs that have since been fixed, and there’s some custom behavior added in.


C02 Cap & Trade thought

So all three presidential candidates are now in favor of a cap & trade policy (some differences between them) for carbon emissions, it might actually happen someday.

It got me thinking… in such a system Environmental groups could buy carbon credits, and then just not use them.  A fairly direct way to turn dollars into clean air, and it’d have a side-effect of making the remaining credits more costly, and therefore make it more costly to pollute.

OSFlash book

Just submitted the last chapter for my last review of the Open Source Flash book I’ve been involved with.  What a relief to have that in, I didn’t realize contributing to writing a book would be so much work.  If everything goes right, it’ll go to print next month and be available in July. Hooray.

Cairngorm, n::1 event::command?

Perhaps this is because we’re using a slightly older Cairngorm, but one of my coworkers informed me yesterday that you can’t have more than one command per event in a cairngorm app.  Seems like an odd limitation.  I guess that’s one more reason for me to go the parsley MVC route in the future.

Universal Design / Keyboard Access / Drag and Drop

Creating a Flex application that allows keyboard navigation to promote Universal Design can be hard. Not technically hard, but hard in the sense of getting everyone thinking about it from the start. Recently I was at a design review meeting looking at some great ideas for an educational program aimed at teaching kids fractions.  One of the problems had two big circles and 4 options under it.  The student is supposed to drag one of the 4 options to each circle to complete the problem.  Something like this (The real example has meaning behind the circles & options, but this is just a quick visual.)

Very logical design choice.  But… one of the development goals in applications my employer creates is to provide an application that is suitable for kids with disabilities.  (It’s both a noble goal that my workplace believes in, and a busines goal since a lot schools have universal access as a purchase requirement)

So what about the kid who is motor-imparied?  Dragging is a “difficult” operation.  Pressing a mouse button, keeping it down, and moving the mouse takes some dexterity. 

We could implement a system where we let a kid keyboard navigate to a lettered option, then press some key to “pick it up”, and use the arrows to put it in a circle, with another key to drop it.  But that’s a very unnatural computer interaction, and requires additional engineering and QA time beyond the basic problem.

Now imagine a kid who might be vision-impaired.  Interacting with a screen reader to tell it when one object is over another object is a daunting task.

So let’s step back.  Is drag and drop really needed here?  What if we modified the design and went from a drag and drop to a button-press?  Maybe we get something like this:

Now it’s a simple button press on each circle.  Quicker and easier for everyone, and it’s easily done with or without a mouse. There is no extra engineering or QA work to support motor imparied kids, and hell, simple buttons are probably less engineering than the first option overall.  Our designers are top-notch and I have no doubt they can make that design look just as good as the original one.  So maybe we go from “3 units of engineering time” to “1 unit of engineering time” (days,weeks,hours depending on complexity, etc.) and from “2 units of QA time” to 1.  We just saved a bunch of money and made it more accessible, win win?

So what about the times that you really DO need to drag things around.  Well, for normal Flex drag & drop, you’re on your own.  But if you’re dragging things around for placement and sizing, then my ObjectHandles library is going to help you out since I just added keyboard navigation to it and that will be released “real soon now” in the next release.