Archive for the ‘ Community ’ Category

I just submitted my idea for a book to Packt Publishing.
One of the main lack I see in the panorama of flash books is all about industrializing projects. There are few\no books about coding conventions, code management, environment setup, code reutilization, unit testing, ecc ecc… and a plenty of “making (little) games with flash”, “using (basic) 3d with flash”, etc.

The idea I submitted is called “Creating and Managing Flash Enterprise Projects”.
My plan is to talk about how to setup and maintain an enterprise level project built over the flash platform… if you like such an idea, please vote for me here >>>> http://t.co/2xxmchp

thanx,
ciao ;)

This post is to summarize my session at the FlashCamp.

Here’s the preso: (italian only)

and here are the examples shown during the session:

Garbage collector in action:
this example shows the memory allocation behavior. Take a look to the saw tooth yellow line in the graph.

Weak vs Strong references:
two examples to show the difference between weak and strong references: basically weak do not increment reference count, strong do that.
If you store keys in a dictionary using weak references your keys are getting cleaned by the garbage collector ( example )
otherwise the GC doesn’t clean your keys ( example ).

Blitting in order to ease the GC:
The GC iterates through each reachable node starting from the roots, one of these roots is the displaylist. So in order to ease the GC work we could flatten the whole displaylist to one bitmap by leveraging the usage of the blitting technique.
These examples display about 1000 new objects drawn each frame by using the display list ( example ) or the blitting technique ( example ). The difference in performances are not only due to the different compositing techniques (built in compositing when using the displaylist VS manual compositing when using the blitting technique ) but also to the lower number of instances to be collected by the GC.

NOTE: both examples are very cpu intensive

Don’t let the GC start by using the memory pool technique:
The GC freezes the program when freeing the memory. The memory pool technique consists in reusing the instances of your objects preventing the GC to identify those objects as garbage.
This makes your app memory utilization stable (a straight yellow line ) and removes every glitch due to the garbage collection.
These examples show a simple particle fountain implemented by leveraging the memory pool technique ( example ) or not ( example ).

Finally:
here’s the source, it’s not the best commented nor the best implemented files out there, but just take a look at them to have a full comprehension of what’s going on ;)

If you need further help, please comment this post and let me know.
ciao

PS: obviously mario copyright is property of nintendo :)

 
Saturday, May 21st, 2011

Yesterday it has been a great day!
Yesterday we had the FlashCamp here in Milan, hosted by WhyMCA mobile conference (thanks guys).

Flash Camp at WhyMCA

Lots of fun, lots of people (450 nerds) from the most different beliefs (html5ers, javascripters, objective-Cers, androiders, whateverers :) ), a great happening to spread the word about what you can do with the flash platform and how it can ease your work when deploying on mobile devices.
Thanks to Adobe we even had a welcome guest: Mihai Corlan, who presented very cool new stuff putting his hands on Flex Builder 4.5 and the Flex Hero SDK.
Moreover it has been totally the best possible way to meet other people from the community of Milan, TheFlashMind, and to spread the word about our cool AUG :)

I really enjoyed the FlashCamp, it has been a pretty unique conference in Italy and it has been even more successful than we expected.
As the camp was in “Eataly” we had an Eatalian FlashCamp party at the end, a cool way to make developers meet each other and to make them drunk :)
Someone even twitted that it was the best part of the FlashCamp in Milan :)

Last but not least: my friend Luca already uploaded some pics to his flickr account.

See you at the next camp ;)

 
Wednesday, November 10th, 2010

As my previous post was announcing, cancelling and reannouncing, I’m speaking at WebTech Conference here in Milan.
Here’s my presentation slides

And here’s the examples zip: www.flashfuck.it/webtech/examples.zip
If you need something to be more clear or some further explanation please feel free to comment this post :)

!!!ONE MORE UPDATE!!!
I’ll be speaking :)
The session will be “Flash graphics unleashed”. 30 mins to dig into flash graphics capabilities.
See you there
ciao

!!!UPDATE!!!
Some work appointments came through and I’ll not be able to be back for WebTech :\
But don’t worry! there’s a HUUUUGE “replacement”, Sandro Ducceschi from SFUG has took over my slots! :)
so guys, have fun, I’ll be there with my soul :)
—————————-

Yup, back on stage :)

I’ll be speaker at WebTechCon Italy, it’s the first year for this German conference in Italy and there are a HUGE amount of good reasons for you to come.

First of all it’s not all about flash!! There are 5 main tracks: webtech, flash day, silverlight day, javascript day and php4 frontend day… yes, “day” is not to be intended as “whole day” but much more as “track”.

It’s a good opportunity to put an eye on what’s going on on the html5 or silverlight fields and learn something new.

On the flashy side there are a bunch of well known and surely attractive speakers:

Luca Mezzalira ,Andrea Trento ,Marco Casario …I’m sure you all know what those guys are known for… then… well…. there’s me :D

Further, it’s a good way to meet other guys from TheFlashMind AUG ;)

I’ll be speaking twice on flash graphics and pureMVC.

Be sure you buy a ticket and come, one month’s left, then… rock n roll

 
Monday, February 8th, 2010

I’ll be speaking at IGDA Switzerland in Bern in few weeks,
Piergiorgio Niero IGDA Switzerland
a great opportunity for me to talk about the Flash Platform as a gaming platform, to share the experience I had making the engine of Wazzamba and to meet new people I only “met” in twitter or in their blogs :)

The meeting will take place in february 25th at “Nothing” (great name guys ;) ) hq in Wabern, you can find more info here in IGDA Switzerland blog.
See you there ;)

 
Monday, September 7th, 2009

Flash on the beach is each day closer and I started to plan my own schedule.
Each choice has been quite hard because of the high quality the conference is offering, the good thing is that even if I’m not 100% convinced to be attending some sessions I’m sure that I can switch to another one with the same or even higher quality :)

sunday:
papervision3D workshop by seb lee-delisle

monday:
Richard exposes all! – Richard Galvan
Casual game architecture – Keith Peters
Visualizing the voice – Chuck Freedman
Who’s a bright spark then! – Mike Jones
Cybernetic art revsited – Dr. Woohoo!
Telling Stories – Hillman Curtis
Epiphany – Joel Gethin Lewis

tuesday:
3 minute wonders – many (looking forward to Michiel van der Ros 3D optimization for MMOs)
Quick as a Flash – Grant Skinner
Leaving the sandbox – Joa Ebert
Application Frameworks – Richard Lord
More than bending pixels – Paul Burnett
Unconventional Webapps – Des Traynor + Eoghan McCabe
Choose your own adventure – Craig Swann

wednesdey
Play with vectors – Koen de Weggheleire
Connecting the dots – Mario Klingemann
Work/Play – Seb Lee-Delisle
Flashed Fashion – Andy Mcdonald
Research realtime graphics – Ralph Hauwert
Space – Joshua Davis

I’m getting in Brighton on saturday 19th, you’re allowed to poke me :)

Just posted the first episode of a cool tutorial on building RIAs with Cairngorm and Doctrine (a PHP ORM). This episode is about client only, next one will be about server side development.

tfmlogo

Have a huge coffee cup and take a read :)
Here’s the link

 
Wednesday, April 1st, 2009

Great news! Cross communities events work in Italy too and this is going to be an awesome one.

all4web

What
All4Web is a whole day of conference, completely free, completely geeky,  and completely across as many RIA technologies as you can count.
There will be great sessions about both server side and client side technologies such as the Adobe Flash Platform (and obviously Flex and AIR), JavaFX, AJAX, Microsoft Silverlight, Adobe Coldfusion, J2EE and so on :)
Who
Many talented guys from every corner of Italy (and Switzerland) representing their usergroups and discussing about their favourite technology.
Involved usergroups are

Take a look at the agenda to have an idea of what a great event it’s going to be :)

Where
In Milan, at the University “Bicocca” (Edificio U6 Piazza dell’Ateneo Nuovo 1) (google maps here)

When
May 8th 2009, from 10AM to about 6PM.

Furthermore….
There will be a great debate about “RIA vs RIA”…just to start the day…(I can’t wait!!!!)
There will be lots of gadgets
There will be a lot of technology fighting! :D
IT’S COMPLETELY FREEEEEEEEE!!!!!!!!
To get the broadest audience ever all sessions will be taken in italian.

…and finally…I’m back on the stage ready to speak! :D

I hope to see you all there ;)

 
Sunday, November 30th, 2008

Yep, i made my submission to 25lines contest just few days ago (right in time :) ), so (as Sakri did some days before me) I’m publishing my code. It’s an easy terrain generator…

Actually, I think it can be somehow improved both in lines of code and actual performances, so feel free to edit or tell me “you’d better to do that this other way…” :)

What’s going on is:

  • generate a shape filled with a gradient to create a reference color for differents “height”
  • generate a perlinNoise everyframe for dataprovider use
  • detect each perlinNoise pixel depth according with its main channel value (blue in this case..)
  • generating a vector of Bitmaps to be employed in the view
/**
 * 25-Line ActionScript Contest Entry
 *
 * Project: Random Terrain 3D Generator
 * Author:  Piergiorgio Niero (aka pigiuz) piergiorgio.niero[at]gmail.com
 * Date:    11/24/08
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

// 3 free lines! Alter the parameters of the following lines or remove them.
// Do not substitute other code for the three lines in this section
[SWF(width=800, height=800, backgroundColor=0xffffff, frameRate=24)]
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
// 25 lines begins here!
var _bd:BitmapData = new BitmapData(50,50,false,0x0000FF);
var _points:Array = new Array(new Point());
var _vxCont:Sprite = Sprite(addChild(new Sprite));
_vxCont.x = _vxCont.y = 400;
var _vexels:Vector. = new Vector.((2500),true);
var _hMap:BitmapData = new BitmapData(255,1,false);
var _gradient:Shape = new Shape();
_gradient.graphics.beginGradientFill( GradientType.LINEAR,new Array( 0x4267F9, 0xF9EAB0, 0x9EF07D, 0x8DF273, 0x9D5E1E, 0xFFFFFF ),new Array( 1, 1, 1, 1, 1, 1 ),new Array( 90, 105, 110, 120, 145, 185 ),new Matrix(0.2456396484375,0,0,0.0006103524625,127.5,.5));
_gradient.graphics.drawRect(0,0,255,1);
_hMap.draw(_gradient);
addEventListener(Event.ENTER_FRAME,generatePerlinNoise);
function generatePerlinNoise(e:Event=null):void{
	_bd.perlinNoise(25,25,1,0,false,true,4,false,_points);
	Point(_points[0]).y+=1;
	for(var v:uint=0;v<(2500);v++){
		_vexels[v] = (_vexels[v]==null)?generateVoxel(v):_vexels[v];
		_vexels[v].y = Math.pow((_bd.getPixel(v%50,Math.floor((v/50))) & 0xFF)/255*6,3)*24*.24;
		_vxCont.rotationX = mouseY*.1;
		_vxCont.rotationY = (_vxCont.rotationY-(90/stage.stageWidth*(mouseX-stage.stageWidth)+45))*.5;
		_vexels[v].bitmapData.floodFill(0,0,_hMap.getPixel(255-(_bd.getPixel(v%50,Math.floor((v/50))) & 0xFF),0));}}
function generateVoxel(v:uint):Bitmap{
	var b:Bitmap = new Bitmap(new BitmapData(24*.5,24*.5,false,0x000000),"auto",false);
	b.x = v%50*24-(_bd.width*24*.5);
	b.z = Math.floor((v/50))*24-(_bd.height*24*.5);
	return Bitmap(_vxCont.addChild(b));}
// 25 lines ends here!

enjoy ;)