I finally decided to learn Python after hearing good things for years. After a day getting started and playing around with the language I spent another day building a breakable toy app.
The language itself is easy to pick up and produces pleasingly minimal, readable source code. Being dynamically typed I did have to rely quite heavily on both reference docs and runtime errors! I used pydev in Eclipse as an IDE, so was easy to get up and running. App Engine seemed an easy noob option for testing and deploying.
The resulting app is in the iFrame above or here magicmusicplayer.appspot.com with source on github.
Posted By }i{ on December 21, 2011

This is an interactive film trailer for the BBC’s One Life film. Users can drag up at any time during the trailer to get additional content related to the shot currently on screen. Dragging down accesses global content such as audience reactions and interviews.
www.one-life.com
FWA SOTD September 12 2011
Commarts Webpick of the Week
The UI is enriched by sampling the colours from the video. I used BitmapData.merge to gradually step through the colour changes, creating a smooth, fluid effect. Here’s the code:
private var _multiplier:uint = 32;
public function set videoFrame(bitmapData: BitmapData): void { bitmapData.lock();
bitmapData.applyFilter(bitmapData, _rect, _point, _colorMatrixFilter); // saturation and contrast
bitmapData.applyFilter(bitmapData, _rect, _point, _blurFilter);
_bitmapData.merge(bitmapData, _rect, _point, _multiplier, _multiplier, _multiplier, 0);
bitmapData.unlock();
}
Posted By }i{ on July 29, 2011
This is a potentially annoying error that occurs in Safari/Chrome when you hit refresh or close a tab containing Flash content. If you have the debug player you see:
Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed.
It can crash Safari or, in the case of Chrome, show a ‘broken plugin’ screen, shutting down every instance of Flash Player in the process.
Fortunately the fix is easy. To handle it you must add an IOErrorEvent listener to every Loader instance in your project, including the ‘root’ Loader (i.e. the class that is the base of your main SWF).
To handle the main SWF simply add the following code to your base class. In ‘onIOError’ you can handle the error silently should you wish.
root.loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
Posted By }i{ on June 14, 2010

I’ve set up a Google code repository at http://code.google.com/p/stinkdigital-flash/ with the idea of releasing some the work I do to the community. The plan is to add simple, encapsulated, useful (hopefully) chunks of code such as utilities and APIs.
The first commit is a wrapper for the YouTube ActionScript Player API. This was created for the first phase of a project we’re working on for Diesel and it basically simplifies working with YouTube within Flash.
Read More
Posted By }i{ on January 30, 2010

Along with W+K, we’ve been helping Jack White’s new band The Dead Weather build interest in and broadcast a live concert over the www, sponsored by Nokia. My task was primarily to build a custom video player to be used to brooadcast the Akamai stream on the site, various blogs and on screens in record stores. It needed to be very lightweight and work at pretty much any size. I took the opportunity to create some nice reusable PureMVC classes for the streaming and player build. The player is also in use on the Stink Digital website.
View the live set here: www.fromthebasement.tv/live
Here are the source files for the Model side of things: VideoStreamProxies.zip
They are dependent on PureMVC and, in the case of the AkamaiConnectionProxy, on the Akamai connection package.
Posted By }i{ on July 3, 2009