Thermo User Personas

As you’ve probably heard already, Adobe demoed a new product called Thermo at the MAX Chicago Sneak Peeks session. In brief, Adobe describes it as a “RIA Design Tool”, which makes it easier to build fully functional Flex applications from design concepts. If you haven’t already, you should check out part 1, part 2, and part 3 of Aral Balkan’s video of Mark Ander’s demo of Thermo.

After watching the demo, and having a brief chat with Mark, one of the foremost questions I had was “Who will really use this tool?” Adobe is currently touting it as a designer tool, but I have enough experience in RIA development to know that I don’t want designers actually building applications.

As a way of answering this question for myself, and hopefully providing some useful feedback to Adobe, I decided to create user personas for the three types of people I see using Thermo. These are based purely on what I saw at the demo and a large dose of wild speculation. I’ve completely invented features (and in some case non-features) to highlight things I’d like to see, and challenges I think Thermo will face.

Continue reading →

It Never Rains, But It Pours

Wow, has it ever been a busy and stressful month!

Everyone at gskinner.com have been insanely busy leading up to MAX North America, working on a bunch of projects that were featured at the conference, including working hard to finish v6 of introNetworks, which was completely re-architected as a highly modular system in Flex 2, and which was deployed for the first time for MAX.

Beyond client work, I was putting in a ton of extra hours trying to finish off my AS3 workshop for Toronto, as well as putting together a talk for the onAIR bus tour, and two sessions for MAX. I was also trying to polish off our client-side AS3 spell checking engine (gskinner.com Spelling Plus Library) for release (more on this a little later this week).

On the home front, my wife and I started moving into our new house in the middle of September. Moving is bad enough, but the house also isn’t complete, so the builders are working around us, and we’re moving in around the builders.

As if this wasn’t enough, our four month old puppy Gir tumbled down a couple of steps and broke his front leg right on the growth plates less than a week before I was supposed to leave for Toronto. We wound up having to rush him 3 hours away for emergency surgery (naturally the local orthopedic vet surgeon had retired a couple weeks prior and his replacement didn’t start for another week), and are now charged with keeping a happy, energetic puppy from running, jumping, or playing for 10 weeks (7 weeks to go). Much love and respect to my wonderful wife for enduring 2 weeks with the little guy on her own in a half finished house while I was on the road!

So, all in all, a very hectic period in my life. If you’ve emailed me and haven’t gotten a response within the next couple days, please ping me again – I’m working to catch up, but want to be sure nothing falls through the cracks. Likewise, I’ll be catching up with a bunch of blog posts, and releasing some cool stuff (including the spelling engine) in the next few days.

ActionScript 3 Workshop details.

I’ve had a few people ask for more information on the ActionScript 3 workshop I’m running in Toronto at the end of September, and I thought it would be good to clarify the course goals.

This is not a beginner workshop. It is firmly targeted at developers who have a working knowledge of ActionScript 2, and want a fast way to get running with AS3. As such, I will not be covering any basic programming concepts, but instead will focus on differences between AS2 and AS3, and the new features of the language. It will be filled with tips, tricks, best-practices, and gotchas I’ve picked up while applying AS3 to both experimental and commercial projects.

It is lecture format, but with room for some open discussion and Q&A. Attendees will be given comprehensive course notes, and source code for all in-course examples.

Continue reading →

Minor Bug with Bitmap Smoothing in AS3

We recently encountered a problem where bitmap images that we created dynamically were not being properly smoothed when rotated and scaled. We couldn’t see any obvious reason for it – we were setting the container bitmap to smooth, tried every quality setting, but it still looked terrible.

The answer turned out to be super simple, if not immediately obvious. The Bitmap object in ActionScript 3 reverts its .smoothing property to false whenever you change it’s .bitmapData property. Because we were setting up our Bitmap objects in advance, then assigning BitmapData objects to them when they were created, it simply appeared as though smoothing just didn’t work in our project.

Continue reading →

SCPlugin updated: SVN Support for OSX

The awesome folk working on SCPlugin for OSX have just released the 0.7 update. I haven’t started using the update yet (downloading it now), but from the release notes it looks like a great release that should provide pretty much all the functionality Mac ActionScript developers will require in day-to-day Subversion use. The most significant updates:

– Accepts user name and password. No more need for a separate command-line copy.

– All the major commands work. Everything in the menu works.

Previously, we’ve used a combination of SVNX for creating repositories, SCPlugin for commits and updates, and the command line for more advanced tasks. Looks like with this release we can stick with just SCPlugin, and the occasional command line operation.

If you’ve been trying to find a good Subversion/SVN client for the Mac, this should be it. I know source control has been a missing part of the puzzle for a lot of Flash and Flex developers who have switched to OSX.

You can read more, and download the installer (also new, no more manual install) from here.

Annoying AS3 Bug with rotation and height/width

I found a very problematic and reproducible bug with ActionScript 3 and simple display object transformations (width, height, rotation), and thought I should document it to save other developers some debugging time.

Put a 200x200px square clip on stage named foo. Add the following code.

foo.height = 100;
foo.rotation = 90;
trace(foo.height);

As expected, this traces 200. It scales the clip vertically, then rotates it, so that it is now 100px wide and 200px high on stage. Now, change the code, and run it again.

foo.rotation = 90;
foo.height = 100;
trace(foo.height);

Unexpectedly, this also returns 200. It should rotate the clip and then apply the vertical scale resulting in a shape that is 100px high and 200px wide on stage. The visual result is identical to the above, when it shouldn’t be.

foo.rotation = 90;
foo.height = 100;
foo.height = 100;
trace(foo.height);

Even stranger, this does trace 100. Unfortunately, the object has been scaled both vertically and horizontally, and is now 100x100px, when it should be 200px wide and 100px high. Seems like the first height assignment gets applied before the rotation, and the second gets applied after the rotation.

Click here to see a (very) simple demo of this behaviour. The left and right blocks should be the same dimensions.

Freaky. I would hazard a guess that this is related to AS3’s weird hybrid of display object properties and transform matrixes.

One workaround would be to work with scaleX and scaleY instead, which are always applied to the original dimensions, and do not account for rotation.

My New Puppy. So cute!

I don’t usually post personal content, but for a puppy, I’ll make an exception. I mean, who doesn’t like puppies?

On Wednesday we picked up our new Bugg (Boston Terrier / Pug cross) puppy and brought him home. He’s named Gir (pronounced grrr), both because he acts a bit like GIR from Invader Zim, and just because I think it’s a cool dog name. Bobi says she’s going to try to make him a green GIR suit one day, though she won’t let me name our future cat Pir. 🙁

Photos after the jump.

Continue reading →