Inverting an Axis on a chart

I had a case on my latest project where I had a chart that needed to not start at 0,0 as most do. Rather this chart, and the data it represented needed to have it's Y Axis inverted. The better numbers were closer to the bottom, and higher in value. 0 was bad.

I did some searching and there seemed to be one common approach. manually invert your data. I wasn't sure that was what I wanted, but it turned out that that approach worked really well.

 

in the function that creates the data for the chart, I simply invert the values by subtracting 2* the value, from itself

val.perfRank = (performance - (performance * 2));
val.availRank = (availability - (availability * 2));
val.consistRank = (consistency - (consistency * 2));

 

After populating my dataprovider with the inverted values, all I needed was a label function to undo my voodoo.

private function rankLabelFunction(labelValue:Object, previousLabelValue:Object, axis:IAxis):Number
        {
            var newAxisValue:Number = Number(labelValue);
            newAxisValue = (newAxisValue + (Math.abs(newAxisValue) * 2));   
            return newAxisValue;
        }

You'll want to make sure to do the absolute value, LOL. Otherwise you'll be like me, "Why is the negative number, even bigger? Oh yeah! Duh!" Math, not my strong suit.

There may be more elegant  ways, I sorta hope there are or will be, but this is a pretty straight forward way to simply put your lowest value at the top of your axis, which is what I needed.

So I have a MacBook AIR now.

I still wouldn't buy one with my own money. It's just too specialized.

 

Tom and I ordered them for using at the conferences. We typically use our personal machines, which is great, but mine is a MBP, and his is some kind of 12 ton windoze thing, neither are light by any means.

So this way we can carry a little less weight for checking people in, looking things up, doing keynotes, etc.

The other upside, for me is travel. My wife and I are staying in Italy a week beyond 360|Flex Europe and blogging and surfing the web will be much nicer without a 3 or 4 lb MBP. I'll be in Japan in May, again, a lighter machine will rock.

Plus, my MBP is my dev machine, it's much more important and when I travel I sometimes worry about it, losing it or being damaged, would really impact my work.

So my thoughts...

it's nice. it's too small to work on all day, but as a second machine, it's pretty nice. I won't say how light it is, because I knew it was light, and those reviewers who repeat the obvious are kinda lame. Battery run time, easy to argue, weight, kinda hard, I figured Steve wasn't fudging.

Combined with .mac I think it really comes into it's own as a second machine. I moved all my conference stuff to .mac and created aliases in my regular docs folders. I have my iDisk available offline so the files are always there. So far it's pretty smooth. I like it.

I definitely doesn't feel powerful enough to do development, and the Hard drive (we opted for SSD) is WAY too small for that. My MBP has my code, CF and Flex, my iTunes library, my iPhoto library (not really that big), and gb's and gb's of other data, no way 64gb, or even 80, could handle it.

The battery seems ok, I've yet to run it down. The power adapter is pretty whack. It's yet another brick to carry (should I take both machines) and it seems like the plug could easily have been a flat spot in the body to accommodate a standard mag safe plug, but this way consumers have to buy additional plugs, more $.

The fancy multi-touch trackpad.... haven't used it. Firefox doesn't recognize it (obviously) and I can't fit my photos on it, and using it in the Finder, just makes my icons all the wrong size. So I'm not too bummed my MBP doesn't have that feature.

It does boot fast, i'll give it that.

My final verdict (for now at least) it's a good second laptop for travel (we should all be so lucky to have that kind of coin) and presentations, it's no way a primary developer laptop. It may very well work ok for someone who doesn't compile code, or run photoshop often. We're leasing these two, so we can have some write offs for 360Conferences, plus if they suck, we'll buy them for the 1$ fee (cuz we're paying so bloody much) and use them as conference terminals for whatever.

 

on my way to the Industry Leader and Creative Media Summit

Packing can be so stressful. I always worry I'll run out of underwear!

I'm getting read to head to SFO for Adobe's Industry Leader and Creative Media Summit. I'm not entirely sure what it means, but sounds fun nonetheless.

It should be exciting, maybe rubbing elbows whomever Adobe thinks is an industry leader :)

My main hope is that it will afford Tom and I a chance to get 360Conferences' name out there a bit more, we're more than 360|Flex (big news on that coming soon, I hope), so we want people to know who we are.

If you're gonna be in attendance, drop a comment or an email and let me know, we can get drinks or something!

the death of Flash Forward

The news this week is that Lynda.com, long time organizer of Flash Forward, has handed over (sold? How much?) ownership to Metalliq, a design shop big in Flash, Flex, Silverlight, etc. (I'll admit I know very little beyond what the site says and what I've heard about Metalliq)

I'm not really that surprised, Flash Forward probably needed some new blood, and after DX3's implosion, I'm thinking Lynda lost some cred, which probably had an impact on Flash Forward. Will the price change? Will FF ever go back to Boston? Or leave San Francisco in general, now that it's in its owners' back yard?

While everyone praises Lynda for giving up the reigns, and sings Metalliq's praises for breathing new life into Flash Forward, I wonder...

Will Flash Forward have a different feel being owned and run by a design firm? Will other design firms want to participate now that one of their competitors runs the show? Will the event be heavily branded as "A Metalliq" event?

I know Tom and I have seen issues arise when one firm is a higher level sponsor than their competitors, when one firm gets an email blast to all attendees, to effectively solicit new hires... I can only image how Metalliq's competitors will see Flash Forward from now on.

Time will tell, and I'm very curious to see how things will play out.

Ready for my next project.

I wrapped up my stint with Ribbit right before leaving for 360|Flex Atlanta, so now that I', back in town I'm ready to get started on my next adventure.

I'm always open to Flex Dev projects, bring 'em on. I'm in Denver, but travel ain't no biggy :) But sorry, I'm not moving.

My ideal position, still is something where I can help a company build and support the community they exist in, be it the overall, worldwide community (flex developers, small biz owners, mac users, whatever)  or a community of their own (ie Ribbit and their API developer community).

I suppose it's one of those "Dream job" type deals, but hey! You never know. Some company out there is getting ready to launch an API, go public with a tool, etc and they might want some one to help build and nurture the community. Worth a shot :)

SQLite and AIR apps with Cairngorm

Having never done any SQLite stuff prior to the session survey, building it was a definite learning experience.

The hardest part of building with SQLite I think, is working with existing data. Writing data for later retrieval, cake. retrieving "offline" data, that was a bit more labor.

To start, populating the SQLite DB, isn't fun. I bought an off the shelve tool, SQLite Manager, that I like a whole lot. It supports SQLlite 2 and 3.

I'm not sure, but I'm guessing it's the nature of SQLite files, that once you've created the table and started working with it, making changes to structure, ain't possible.

I suppose since it's a flat file of some sort, making structure changes once populated, wouldn't be possible, but still a pisser. LOL.

Make sure when you create your "offline" tables, you know what you want.

For the survey app, we needed users to be able to still pick a track, and still pick a session from that track.

 

Tom and I ended up making our Cairngorm commands dual prupose. Getting on and off line data. Detecting whether the user is connected as a simple matter of implementing a URLMonitor to ping our site.

The command, looks for our global "am I online" var, and if we're not online, executes the SQLite functionality.

 

In order to make the commands as loosely coupled (for lack of a better term) to being on or off-line, we made the SQL result handler, call the command's normal result. From there the result() looks to see what type of result it's getting, since delegate sends a different type of result Object, than the SQL connection does. From there, it's a matter of formatting the data and storing it.

Our execute() looks like

if (model.networkConnection)
            {
                var delegate:SurveyDelegate = new SurveyDelegate(this);
           
                delegate.getTracks();
            } else {
                var connection:SQLConnection = new SQLConnection();
                var dbFileString : String = "360Survey.sqlite";
               
                var dbFile = File.applicationDirectory.resolvePath(dbFileString);
               
                connection.open(dbFile);
                var sqlQuery:String = "SELECT trackID, trackTitle, trackShortName FROM tbl_tracks";
                dbStatement.sqlConnection = connection;
                dbStatement.text = sqlQuery;
   
                dbStatement.addEventListener(SQLEvent.RESULT, onRetrieveDataResult);
                dbStatement.addEventListener(SQLErrorEvent.ERROR, onDBError);
   
                dbStatement.execute();
               
               
            }

Then the result() does the "what did I just get" logic.

public function result(data:Object):void
{
    trace('[GetTracksCommand] - Result');
    var resultData:ArrayCollection = new ArrayCollection();
    var tmpAC:ArrayCollection = new ArrayCollection();
        
    if (data.hasOwnProperty("result")) {
        resultData = data.result;
        } else {
            resultData = new ArrayCollection(data.data);
        }

I was a bit worried that it would be harder to build a connection aware application, especially since Tom and I didn't really start writing code, until about 2 weeks out from Atlanta. There's still a few things to re-factor in the code, and get cleaned up, but I think when we put this app out into the Open Source domain, other conferences will be able to easily modify it to their needs, they'll need a CF backend, unless they want to replace the CFCs with .NET, PHP or Java whatever, but hey, it'll be a starting place.

 

 

 

 

360|Flex Session Survey App

I'm looking for some ideas on what everyone would like to see in the Session Survey. Give me your ideas...

So I'm spending some of my down hours while I work on my next gig working on the session Survey App.

Our launch during the conference went ok, a few bugs, nothing too bad. Now it's time to clean up and enhance. I'm thinking we'll try to get it to a nice 1.0 place, and then put it up on RIAforge. I wanted to put a few more security measures, and user experience enhancements.

I also wanted to get anyone's input on what they'd like before it goes, Open Source.

I'm working on validating Attendee ID, so we can minimize crap data. Then I'll work on setting your ID into a shared Obj for persistence, maybe just us SQL Lite? I dunno.

I'm also going to improve the user feedback, when the app is working in "offline mode" maybe a cool status light or something? Also will make sure the save complete dialog shows up in both modes, not just 'online'

Besides those three things, what would ya'll want in a survey app for conferences?

If you're an attendee, let me know what you think of the app, no holds barred. I know it's rough, shoot! Tom and I worked on it off and on just the last week or two leading up to the Conference. You know the saying about the mechanic having the crappiest car.

I'm excited to get it buttoned up enough to put up on RIAforge, it'll be my first OS project... yippy! I'm really hoping others will jump in to help improve conferences of any type.  Part of the release will include the DB design, you'll need to create your own SQL lite DB for offline mode, with your own data, sorry, can't give out our attendee info.

Holy crap I'm being followed!

Saw this on TUAW

According to some research from Mindset Media, Mac owners are:

  • to be perfectionists
  • to use notebooks
  • to use teeth whitening products
  • to drive station wagons
  • to pay for downloaded music
  • to go to Starbucks
  • care about "green" products and the environment
  • to own a hybrid car
  • and last but not least ... to buy 5 pairs of sneakers in a year

Holy crap! They've been following me! I mean, not 100% spot on, I don't buy 5 pair of sneakers in a year, barely even in 5 years. I don't own a hybrid, though i do drive a wagon (Audi A4 baybee!!) i do enjoy me a Frapacino from time to time, and i don't pirate music (any more). I'm down with green, so long as it doesn't cost horse power, or bring me closer to Boulder.

It's a funny little bit of "duh, that was obvious" but fun none the less.

 

Patents blow

Tom is more anti patent than I am, but as more and more whack ass patent trolls surface, I'm quickly rethinking my position to be patently (pun not intended) anti Patent. I think the idea behind patents is a good and noble one, however the patent office seems to be more and more nothing but an enabler for patent trolls. I mean really "A device that plays music"? That's a valid patent? What about “method and system for playing games on a network.”? Really?

My biggest complaint about the patent process is the support of vaporware. I fully believe that any patent not accompanied by a WORKING prototype be thrown out. If you can't build it, you can't patent it.

That last one I cited, is fully real, and fully threatening the likes of CNET, DIGG, Ebaums, etc. Thankfully the EFF has stepped up (courtesy of Mashable) to defend this case as part of their patent busting initiative.

I still thinking protecting IP is important, but I think without serious over haul, the patent office, may be the single biggest contributor to a stifling of innovation. Searching the patent database is like looking for a unicorn in a horse pasture, and since most of the troll patents are so vague, you might not even see them, until you're hit with a lawsuit.

It's time to re-up my EFF membership, I'm thinking it'll be a bit bigger this year to help further this patent busting, show these trolls where the door is.

If this patent non-sense irritates you even a fraction as much as it irritates me, think about joining the EFF, or re-donating if you've donated already.

Look ma, I'm famous!

Well famous may be an over reach, but Dan over at Dzone interviewed me in the context of 360Conferences and 360|Flex. I'm glad he put up with me since I was way late in getting the interview questions back to him. The interview came out great, he did a superb job, making me seem less lame, than I am in real life ;)

Dzone has recently created their RIA Zone, which looks to have some great content, it's definitely added to my news reader list.

Head over to Dzone, and take a look. Great work, Dan!

 

Oh, and make sure to vote, thumb up or down.

Apple, you're getting really good at getting right up to the mark, and stopping

MacBook Air, freaking cool, mostly.

 

No firewire, cool

No Ehternet, as I said, meh, i'd like it, I find it odd not to have it but whatever.

no DVI, cool.

It started out as the thing I'd be buying just as soon as I had the money saved, until details started to emerge.

  1. black keyboard? Really? They must be going for the Dell look, not cool.
  2. can't up the RAM myself? MBPs support 3 gb now, does the Air not? Can I only get the RAM I'm gonna have forever at order time? WEAK
  3. Solid State drive, costs a fortune (I know they ain't cheap but I bet Dell isn't charging that much , are they?
  4. 4200 rpm moving parts drive? kinda slow, but ok, not terrible since like I said, i'd want it for writing.
  5. no user replace able battery? WTF Apple!? You've already taken knocks for this in the iPhone, granted their still selling like crazy but still. This is a laptop, not a "device" not a big ass iPod. It's a laptop. My 1 and some change years old MBP is on battery 2. the other started crapping out. it'd go from 30% to 0% in in 0 seconds, and I'd be SOL if I was working. No biggy, i went out and bought me a new one. There's not way I'd take my machine in for who knows how long for Apple to replace the battery, or ship it somewhere... WEAK

So the over all verdict....

 

I'll be waiting until MacBook Air v2. It's not like Apple batteries are ugly and they've already made them very flush and nicely blended, by not have that at the bottom?

 

Sorry Apple, you were THIS close to having 2,000 more of my hard earned, weakened US Dollars.

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.5.1.