Flash on the Beach – day 2 (part 1)

09.00-10.00 Aral Balkan
Grab the Low-Hanging Fruit (or 5 Rules for Hedonistic Creatives)

I was too early to remember what his rules were. I did, however, take some notes of what striked me as interesting and worth knowing more about. I think the general idea of his talk was that we should not constrain our self to AS only, but also look at what else is out there. In other words: Think (and work) outside the box!
Have a look at Scratch for instance, a simple tool created by MIT to program. This might be really nice to do quick prototyping.
Another thing I want to have a look at is the Python programming language and / or Ruby on Rails.

Site: http://aralbalkan.com/

References:
http://scratch.mit.edu/ (Scratch)
http://ipython.scipy.org/moin/ (access to all python methods and docs through a command line iirc)

10.15 – 11.15 Niqui Merret
Accessibility – beyond the basics

A great talk about how to make Flash sites more accessible. Interesting to know is that Flex has accessibility turned off by default.

Use the AccessibilityProperties class to control the presentation of Flash objects to accessibility aids, such as screen readers. After setting all the properties don’t forget to call the Accessibility.updateProperties() method. Then check to see if MSAA is active, if it’s not queue the accessibility updates, set a delay for about 2 seconds and try again.
For pv3d it is advised to use the layers that are available in pv3d, though I think you could apply accessibility properties to any do3d.

Site: http://niquimerret.com/

References:
http://code.google.com/p/accessible/ (by Charles Brandt)
http://jadehopper.com/

11.30 – 12.30 Joa Ebert
Audiotool’s Private Parts

Joa is just brilliant. His talk was about how they optimized a lot of the Hobnox Audiotool. It was for the utmost importance that performance would be as good as possible, cause any delay would cause a hick up in the audio.

The first step was to improve how the cables between audio components were calculated. How you usually do that is in 3 steps.

  1. Create nodes representing each component
  2. Build a graph out of those nodes
  3. Use a path finder to determine best routes

To optimize this they made use of the Quadtree method. An added benefit of this was that they could reuse it to see if there was already a component in a spot when the user drags a new component on the screen.

The second optimization came from having a good look at garbage collection again. As you don’t control when this is going to happen it can cause unwanted delays. Their solution was tricking the garbage collector by using object pools. This way there is no object creation and no object destruction at runtime.

You have a list op pools with objects, kinda like this:
O –> O –> O –> O.
You take one out,
use it,
and put it back at the end when you’re done with it.

The third optimization came from creating their own event system. It turned out that Flash’s proprietary event system caused a lot of garbage collection to occur. By writing their own system they could stack events in the object pool, so no garbage collection would occur on events. Another benefit of writing their own event system was being able to implement it in their own way, a feature they added were winapi-like hooks.

A final tip was to have a console for each project, it is so easy to have one for debugging.

Site: http://www.joa-ebert.com/

References:
http://www.hobnox.com/audiotool.1046.html (Hobnox Audiotool)
http://en.wikipedia.org/wiki/Quadtree (Quadtree)
http://en.wikipedia.org/wiki/Object_pool (Object pools)