Flash camp on the beach (Rimini)

The new Flash camp will be in Italy, Rimini, and will take place on 5th of September. Participation is free!

Order your ticket via eventbrite.
The meeting will take place at Hotel Sporting Viale Vespucci, 20 47900 Rimini (Italy).
Speakers
As a camp everybody can join us as a speaker, today we have a great group of speakers already confirmed:
  • Jaco Pixeldump (www.pixeldump.org)
  • John Lindquist (http://pv3d.org, http://flex4.org)
  • Joost Nuijten
  • Eros Marcon (actionscript.it)
  • Simon Slooten (www.simonslooten.com)
  • Matteo Lanzi (aka Gallo_Teo flex-developers.org)
  • Adam Flater
  • Michael Labriola (http://blogs.digitalprimates.net/codeSlinger/)
  • Rich Tretola (http://blog.everythingflex.com)
  • Gabriele Farina (www.sephiroth.it)
  • Alessandro Crugnola (www.sephiroth.it)
  • Michael Plank (www.powerflasher.de)
  • Rich Tretola
  • Matt Chotin
  • Giorgio Natili (flex-developers.org)
Agenda
What’s New in Flex 4 (Matt Chotin) 9:00 – 9:45
Most of us have heard that the Flash Platform tools are getting a major upgrade with Flex 4.  We’ll give a high-level overview of what’s coming in the three major components: Flash Catalyst, Flash Builder, and the Flex Framework.
Concepting Rich Internet Applications (Joost Nuijten) 9:50 – 10:35
The pitfall of Flex applications is to thrown in a bunch of buttons of fields, the Flex skin looks nice, and the say: “There we have another Rich Internet Application”. To my opinion it is much more than that. It’s about creating the ultimate user experience by mixing interaction design, emotion and common sense.
“One key element of a good ergonomic web application, or at least a sign that it works ergonomically, is that you want to stay there — like a big old comfortable chair that wraps you up and you just don’t want to leave it, ever… (well, at least, maybe, for a little while more…)”
(SyMetric Sciences, Inc., 1999)
Flex 4 in 3D: The UI of the Future is Now! (John Lindquist) 10:40 – 11:25
Ok, the title might be a bit over-the-top, but the new 3D features of Flash Player 10 do allow us to pull off some pretty cool tricks. This session will cover step-by-step how to take advantage of the the 3D api. We’ll start by creating our own custom and reusable 3D layouts and work our way to creating 3D components. Once we’ve brought everything together into a full 3D application, we’ll end with a  discussion of the advantages and disadvantages of using 3D in user interfaces.
TESTING WITH FLEX AND FLASH BUILDER (Michael Labriola) 11:30 – 12:15
Unit testing in Flex is taking a giant leap forward. First learn about the latest technologies, their integration into the Flex developers workflow and the promises offered by these advancements. Then learn how to write tests using these new methods, how those tests can be used effectively and the theory behind their use. Finally, learn about the extension points and how numerous testing projects can now converge to offer solutions now and into the future of Flex.
FDT – Pure Coding Comfort (Michael Plank) 12:20 – 13:00
You want to improve your ActionScript/Flex development workflow and boost your programming
efficiency? Michael demonstrates how the coding flow completely changes with FDT by using
features like Quick Fixes and Auto Completion. FDT is an Eclipse based IDE for ActionScript
and MXML development that provides pure coding comfort.
Not only professionals prefer working with FDT, the tool is also appropriate for beginners
because of supporting features like e. g. live error highlighting. A short speed coding example
on stage illustrates how fast the coding workflow can be with FDT.
Mate – The beauty of a simple framework (Simon Slooten) 13:30 – 14:15
Mate is a Flex framework that is simple, elegant, scalable and simply beautiful. In this session you will get an introduction to Mate, as well as look at a Flex Application that uses Mate
ByteArray:  extend your swf apps with extra features (Marco Fusetti aka Jaco) 14:20 – 15:05
ByteArray is a great flash player feature that let you load/treat/save binary data.
Let’s look into some techniques and examples on adding features such swf black box, sound data, external swf inspection and more.
Using Merapi (Adam Flater) 15:10 – 15:55
An introduction to native hardware and software integration in Flash
Flex sdk (Matteo Lanzi aka Gallo Teo) 16:00 – 16:45
How to patch it to solve common architectural problems and improve performance
Flash Catalyst/Flash Builder 4 ˆ Designer/developer Workflow (Eros Marcon) 16:50 – 17:35
How to design and optimize an artwork for FC, importing design in FC, adding interaction, working with states and transitions, wiring FC interactive UI with real data in Flash Builder 4
Extending flash applications (Alessandro Crugnola aka Septhiroth and Gabriele Farina) 17:40 – 18:25
A quick walkthrough from static plugins to dynamic scripting
Java, Flex and Model View Presenter (Giorgio Natili) 18:30 – 19:05
Flex loves Java applications that expose API deployed under Blaze DS, follow us in a complete tour that shows the process to define good API for a Flex / Air application that follow Model View Presenter design pattern and get the key points of GUI Architectures for responsive applications.
Flex image uploading and manipulation via Pixel Bender (Rich Tretola) 19:10 – 19:40
Flash Player 10 introduced some new features including the ability to write a file to the users file system as well as the usage of Pixel Bender filters. In this session you will see how to upload an image within a Flex application,  filter the image with a Pixel Bender filter, and then use the JPEGEncoder class to encode the filter image to a ByteArray.

[Bindable]? No, thanks

Working on huge projects sometimes let you take long optimization sessions.
During one of these sessions I was trying to find a way to optimize a bunch of code which was taking too long time to process.
The big big bottleneck I discovered, and I didn’t know before (my fault), was the **[Bindable]** attribute of one of the classes included in the process.
This process was creating something like 1 million instances of this class during its life. After a first optimization in which I created an object pooling, thus reducing the total execution time from 16 seconds to 13, I found this incredible trick which reduced the total execution time to **1 second!!**

Let’s say you have a class like this:

package it.sepy.test
{

[Bindable]
public class RGB
{
private var _blue: int;
private var _green: int;
private var _red: int;

public function RGB()
{
}

public function get blue(): int
{
return _blue;
}

public function set blue( v: int ): void
{
_blue = v;
}

public function get green(): int
{
return _green;
}

public function set green( v: int ): void
{
_green = v;
}

public function get red(): int
{
return _red;
}

public function set red( v: int ): void
{
_red = v;
}
}
}

and a simple script which create 100000 instances of this class (my script wasn’t like this, but for simplicity I’m doing this example):


package
{
import flash.display.Sprite;
import flash.system.System;
import it.sepy.test.Pool;
import it.sepy.test.RGB;

public class test extends Sprite
{
public function test()
{
startTest();
}

private function startTest(): void
{
var t1: Number = new Date().getTime();
for ( var i: int = 0; i < 100000; i++ ) { var rgb: RGB = new RGB(); rgb.red = i % 255; rgb.green = i % 255; rgb.blue = i % 255; } var t2: Number = new Date().getTime(); trace( 'total execution time:', ( t2 - t1 ), 'ms' ); trace( 'memory usage:', System.totalMemory / 1024, 'kb' ); } } }

now launch the script and in the output I have this result
total execution time: 2381 ms
memory usage: 5924 kb

NOW. Remove the **[Bindable]** property from the RGB class and launch again the test script. See at the output console and the new results are:
total execution time: 236 ms
memory usage: 2720 kb

So, I know that bindable were not created for this kind of jobs, but if using it make 10 time slower my scripts, then I don't see any valid reason to use it anywhere.