Adobe Goes Green, Makes Green (and Platinum)

I just read a Business 2.0 article on Adobe’s environmental efforts, and all I can say is “wow”! In five years they’ve reduced electricity consumption by 35% and gas use by 41% while increasing staff by 80%. If those numbers are accurate, that’s a roughly 65% decrease in energy use per employee. Very impressive. At the same time, they’ve switched to environmentally friendly cleaning products, helped build parks, reduced water usage, and are instituting a company wide composting system.

All of this has led them to receive the first platinum rating for a corporate building from the U.S. Green Building Council. Perhaps more impressively, it has resulted in an increase in profitability. For a $1.1M initial investment, Adobe is seeing a savings of $1M per year. What a great example of environmentalism and capitalism being mutually compatible.

Kudos to Adobe for doing the right thing and proving it can be profitable. Beyond the financial and environment gains, I’m certain this move will win the brand some mental marketshare, and consumer goodwill (it worked for me).

Can’t wait to see them roll some of these ideas into 601 Townsend and the other Macromedia buildings.

[UPDATE: More kudos to Adobe here]

Flash 10th Anniversary

It’s been a great 10 years! I’ve been tinkering with Flash since FutureSplash, annd haven’t regretted a moment (well, I maybe regret the week I spent learning screens and forms in mx2004).

All the tenth anniversary activity has been awesome. I’ve really enjoyed looking back at old sites that really inspired me. The two that influenced me the most by far were nrg.be, which brought home to me just how cool Flash could be, and yugop.com, which woke me up to the full potential of AS for building experimental and reactive systems.

Ahh… those were the days. So much excitement, so many ideas still untapped! Flash is still awesome, but it doesn’t have quite the same pioneering aura that it had in the v4-5 days (though in its defense, you can actually make money with it now, which is a bit of a bonus).

Continue reading →

Fun With Segway!!

I’ve always thought Segways were really cool, and really wanted to play with one. I even begged to ride the one at the Macromedia offices on a few of my visits, but it was always in another building, or otherwise unavailable (I think they just didn’t trust me with their expensive toy).

So, when Segway called me up and invited gskinner.com to design and build a mini-site for their brand new product line, I jumped at the chance. Work with a super cool, progressive client, building a site for an unreleased techno-gadget? Count me in.

Continue reading →

AS3: Resource Management pt 3

This one took a little longer than I’d hoped – life’s too busy right now! In this third part of my series on resource management in ActionScript 3 I will be focusing on a few new tools in AS3 / Flex2 that let you track and manage memory more effectively. There are only a couple new “official” features that are specifically geared towards resource management, but they are very useful. These are supplemented by a handy unofficial feature, and of course there are lots of language features that can help you in more generic ways.

Continue reading →

Mac Text Navigation Keyboard Shortcuts

On of my developers recently switched to a Mac, and was wondering how to move the insertion point to the beginning and end of a line on the Mac (OSX doesn’t support home/end keys in the same way as Windows). I thought with so many developers switching to Apple hardware, it would be useful to post a quick run-down on the awesome text shortcuts in OSX. This is hardly an exhaustive list, but these are the ones I use regularly (brackets describe behaviour for multiple presses):

Continue reading →

AS3: Singletons

In ActionScript 3, class constructors can only be set to public. Adobe has stated that this is because the ECMAScript specification is not yet complete, and they did not want to break forwards compatibility with the specification. This makes a lot of sense, but it leaves AS3 developers without a clear way to implement the Singleton design pattern. Luckily, there are a couple ways of faking Singleton functionality. Both solutions are kind of hack-ish, but they get the job done.

Continue reading →

AS3: Dictionary Object

I think one of the handiest new features in ActionScript 3 is the Dictionary object, which lives in the flash.utils package. It is a new object type that allows you to associate a value with an object key. This is similar to how array associates values with numeric indexes, and how you can use a generic object to associate a value with a string key.

// Arrays use numeric indexes:
var arr:Array = new Array();
arr[0] = "value";
// Generic objects use string indexes:
var obj:Object = new Object();
obj["key"] = "value";
// Dictionary uses object keys:
var dict:Dictionary = new Dictionary();
dict[myObj] = "value";

Continue reading →

AS3: Weakly Referenced Listeners

I will be dealing with this in the next installment of my resource management series of articles, but I thought it was important enough to warrant a quick post in the interim.

I’ve been blogging about how important resource management is going to be in ActionScript 3, and also mentioned that we have some new tools to deal with it. One of these new tools is the ability to have weakly referenced event listeners. A weak reference is one that is not counted by the Garbage Collector (ie. it is not counted in reference counting, and it is not followed for mark sweeping). This means that if the only references remaining to an object are weak, it will be available for collection on the next GC sweep.

References associated with event listeners are often forgotten by developers, which normally results in the listener never being removed from memory. This is why weakly referenced event listeners are so handy in AS3 – if you forget to remove the listener, you will not impede the Garbage Collector’s ability to collect the object.

Continue reading →