Posts Tagged FITC

Drawing Bezier tool using Robotlegs

I came back from FITC Toronto with a lot of ideas for new posts and this is the last one of them. But fear not this is a first article in what will probably be a serie of 3 because it would otherwise be too long (or I wouldn’t have the patience to write it). So while at FITC, I went to a presentation be the guys at Firstborn about how they were often making tools instead of doing things by brute force. Well the idea stuck with me.

In the current project that I am working on, there was a part where I needed the coordinates of points along a path. The brute force way was to estimate the next point myself and to compile to see if I was right, repeat until I had all the coordinates I needed. Very tedious and boring task and the path could change often so there was high chances that I would redo this process often. What better time to start making a tool! Well it turn out that my project changed so much that that part wasn’t in it anymore… But it still makes a great topic for this blog.

Let me start by showing you what will be the result of this first post. (Below is not juste whitespace, click in it to ad points. You can select a path to make a control point appear, drag the control point to make a curve).

As you can see this is pretty bare bone. But the good thing about that is that you can use this as the base of multiple tools.

I built this using Robotlegs. If I am going to build something for myself, might as well learn (or train) a few things on the way. Plus, I think Robotlegs is very well suited for application style projects. Now that being said, using that kind of framework (MVC) will require you to create a lot of extra classes but in the end you will understand what you gain by doing so. Out of all these, 4 of them are really important. The Model, where you will keep all information on paths and points at all time and three View classes; one for the clickable area layer, one for the paths layer and one for the point layer.

The easiest of all of them is the clickable are layer. It’s job is just to register clicks and tell the framework where something has been clicked. This could have been done otherwise, but since we will want to layer stuff (points are over paths) plus we will want to select points and path to move or curve them, it is just easier to create a view just to register clicks on the unused stage and put that view in the back off our application.

package com.zedia.drawingtool.view.components {
  import com.zedia.drawingtool.model.objects.PointObject;
  import flash.display.Sprite;
    * @author dominicg
  public class DrawingArea extends Sprite {
    public var pointArray:Array;
    private var _pathArray:Array;
    public function DrawingArea() {
      graphics.drawRect(0, 0, 550, 400);
      addEventListener(MouseEvent.MOUSE_DOWN, _onMouseClick, false, 0, true);
    private function _onMouseClick(event : MouseEvent) : void {
      dispatchEvent(new PointEvent(PointEvent.ADD_POINT, new PointObject(event.stageX, event.stageY)));

Our second view is the one that handles the points. Points are simple visual objects, they are just circles placed at a x and y coordinate. So when the user clicks on the clickable layer, the point view is notified and a circle is added where the click was registered. Another functionality that is added is that you can drag a point to move it around the stage. One thing to notice is that whenever a point is moved, it tells the framework about it so that the Model is always up to date and so that the path layer can display the paths correctly.

package com.zedia.drawingtool.view.components {
	import com.zedia.drawingtool.model.objects.PointObject;
	import flash.display.Sprite;
	 * @author dominicg
	public class PointLayer extends Sprite {
		private var _pointVector:Vector.<PathPoint>;
		public function PointLayer() {
			_pointVector = new Vector.<PathPoint>();
		public function addPoint(point:PointObject):void{
			var pathPoint:PathPoint = new PathPoint();
			pathPoint.addEventListener(PointEvent.POINT_MOVED, _onPointMoved, false, 0, true);
			pathPoint.x = point.x;
			pathPoint.y = point.y;
		private function _onPointMoved(event:Event) : void {
			dispatchEvent(new PointEvent(PointEvent.POINT_MOVED, new PointObject(PathPoint(, PathPoint(, _pointVector.indexOf(PathPoint(;

Now this is the last of the view class: the PathLayer. It is also the most complicated of the three view classes because a path is a complex object. It is comprised of a start point, an end point and a control point. With those you can draw a curve using the curveTo method from the AS3 drawing API. Here is the code:

package com.zedia.drawingtool.view.components {
	import com.zedia.drawingtool.model.objects.PointObject;
	import com.zedia.drawingtool.model.objects.PathObject;
	import flash.display.Sprite;
	 * @author dominicg
	public class PathLayer extends Sprite {
		private var _pathVector:Vector.<Path>;
		private var _selected:int = -1;
		public function PathLayer() {
			_pathVector = new Vector.<Path>();
		public function addPath(pathObject:PathObject):void{
			var path:Path = new Path(pathObject.firstPoint, pathObject.secondPoint, pathObject.controlPoint);
			path.addEventListener(PathEvent.PATH_CLICKED, _onPathClicked, false, 0, true);
			path.addEventListener(PathEvent.CONTROL_POINT_MOVED, _onControlPointMoved, false, 0, true);
		private function _onControlPointMoved(event : Event) : void {
			dispatchEvent(new PathEvent(PathEvent.CONTROL_POINT_MOVED, new PathObject(new PointObject(0,0,0), new PointObject(0,0,0), _pathVector.indexOf(Path(, Path(;
		private function _onPathClicked(event : Event) : void {
			if (_selected > -1){
			_selected = _pathVector.indexOf(Path(;
		public function updatePaths(updatedPathVector : Vector.<PathObject>) : void {
			for (var i : int = 0; i < updatedPathVector.length; i++) {
		public function deselectAll():void{
			if (_selected > -1){
				_selected = -1;

You will find more information about paths in the Path class inside the view folder.

Finally the last important class is the Model. This is where you keep information about the state of the application. With the information stored in the Model you can recreate exactly how the application is right now, which is really practical if you want to save the state to a file or export data. As you will see, it is mostly saving a data representation of visual objects in our views (points and paths).

package com.zedia.drawingtool.model {
	import com.zedia.drawingtool.model.objects.PathObject;
	import com.zedia.drawingtool.model.objects.PointObject;
	import org.robotlegs.mvcs.Actor;
	import flash.geom.Point;
	 * @author dominicg
	public class DrawingModel extends Actor {
		private var _pointVector:Vector.<PointObject>;
		private var _pathVector:Vector.<PathObject>;
		public function DrawingModel() {
			_pointVector = new Vector.<PointObject>();
			_pathVector = new Vector.<PathObject>();
		public function addPoint(point:PointObject):void{ = _pointVector.length;
			dispatch(new PointEvent(PointEvent.ADD_POINT_APPROVED, point));
			var pointLength : int = _pointVector.length;
			if (_pointVector.length > 1) {
				var controlPoint:Point = new Point((_pointVector[pointLength - 1].x - _pointVector[pointLength - 2].x)/2, (_pointVector[pointLength - 1].y- _pointVector[pointLength - 2].y)/2);
				_pathVector.push(new PathObject(_pointVector[pointLength - 2], _pointVector[pointLength - 1], _pathVector.length, controlPoint));
				dispatch(new PathEvent(PathEvent.ADD_PATH_APPROVED, _pathVector[_pathVector.length -1]));
		public function updatePoint(point : PointObject) : void {
			trace (;
			_pointVector[].x = point.x;
			_pointVector[].y = point.y;
			//Update paths now
			var resultingPathVector:Vector.<PathObject> = new Vector.<PathObject>();
			if ( == 0) {
				_pathVector[].firstPoint = point;
			} else if ( == _pointVector.length - 1){				
				_pathVector[ - 1].secondPoint = point;
				resultingPathVector.push(_pathVector[ - 1]);				
			} else {
				_pathVector[].firstPoint = point;
				_pathVector[ - 1].secondPoint = point;
				resultingPathVector.push(_pathVector[ - 1]);
			dispatch(new PathVectorEvent(PathVectorEvent.UPDATE_PATHS, resultingPathVector));
		public function updateControlPoint(path : PathObject) : void {
			_pathVector[].controlPoint = path.controlPoint;

Well that is it for now. You can download the source code below and see the classes that I didn’t talk about. This is all good but this tool right now just draw paths but it doesn’t transform or export the data in any way. This will be the topic of a next post.


, , ,

1 Comment

I am Flash Developer

This isn’t the next article I wanted to write but it was on my list since Flash In The Can Toronto (2010). It comes from all the talks surrounding the refusal from Apple to let Flash on the iPad ( i guess we can just say iOs now).  During that period a lot off people (including me) where uncertain about their future. I mean when someone as powerful as Steve Jobs tells you that your job shouldn’t exist, you think about it twice. Out of the turmoil that ensued, some voices touched me more than others. What they were saying is that they, as developers, weren’t tied to a technology and that if Flash was to disappear tomorrow, they would still have a job. That got me to think. A lot. The next thing that affected me was something I heard at FITC concerning designers. How they don’t call themselves ’Photoshop Designers’ or ‘Corel Draw Designer’ (I tried to think of another product than Adobe but just could come up with Corel Draw (who uses that anyway), but you get the idea). I think this follows a bit the same vibe as the comments from the Flash dudes.

All of this feed my reflexions, I mean I have tried a lot of technologies (all things in perspective, I am still at the start of my career, so I humbly say so). I have tried Java, PHP, MySQL, C, Flash, ActionScript 2 and 3, HTML/JavaScript/Css, Ajax, Asp, C#, Python. And you know what? There is nothing I like better than doing ActionScript 3. I mean the tools help a lot; FDT (yes I said it, I now like FDT) or FlashDevelop for code and Flash CS5 for visual assets. I like the workflow, I like making PSDs alive, I really like using TweenLite to make stuff move, I like figuring out how to build my applications so that they minimize load time and CPU usage (I also like maximizing CPU but don’t tell HTML5 fanatics, they know jack shit about pushing limits, yet, but they will know what I mean when they taste it, which will happen for sure). All of that I can’t get from any other technology to the extent that Flash does it right now.

It’s been 2 months that I am at B-Reel right now. I really love it, but the project that I am doing right now mostly doesn’t involve Flash ( I managed to stick a bit of Robotlegs in there) and is mainly Javascript/Html/Css. I really look forward to doing a Flash project. I really don’t want to do html ever again. I don’t have fun doing it (well I am just speaking about the technology, the project itself is amazing). Also, I feel the world of Flash is so deep and there is so much you can do to get better that if you learn all of the other technologies you can never get truly as good on the Flash Platform as one could be. For all of these reasons, that is why I am Flash Developer, that is my title and I am not ashamed or feel diminished by it. It really defines me.

With that being said, it gives me security. I think I am not alone in this situation. I think Flash gives a mean to express themselves to a lot of people and because of that, you can be sure that these people will produce tons of cool shit with it. And other people will want to see that cool shit. That gives a reason for Flash to be. Someday there will be Flash on the iOs. You can be sure of that (I mean Steve Jobs has an expiration date, right?)

, , , ,


Realisation from Flash and the City

First, I want to say that Flash and the City was a very well organized conference. Sure it isn’t as perfect as FITC (I know it does no justice to compare a 10 years old conference to a new one, but it’s the only other conference I have been to) but it was nonetheless amazing for a first year and we have Elad Elrom and his team to thank for that.

Flash and the City

What I think they can improve on next year is the venue; the 3 legged dog was too small to hold this kind of event. I would suggest changing for a new place. What I really liked: that the speakers where different from the speakers on the other conferences roasters (seems like it’s all the same people speaking from conferences to conferences) so I got to see people I had not seen yet.

The realisation

I consider myself a developer and FATC was really more aimed towards developers, so I should have been very happy there. The thing is, I wasn’t; it didn’t have the same impact as FITC did on me, which is weird. I don’t know, maybe it is because I follow a lot what is happening in the Flash community and I am well informed on the new possibilities the platform has technically. Because of that, the presentations didn’t marvel me as much as a creative presentations where everything is mostly new. Maybe I am not so much a developer after all.

Best of show

Anyway there was still some presentations that I found really amazing. The best one that I saw really was Gaia Flash Framework by Jesse Warden. He spoke about using Gaia and Robotlegs together. I mostly knew what he was speaking about but it still was awesome. I wish I could see it again in slow motion because there are so many words that come out of Jesse’s mouth. What is the major point of interest is Jesse’s views on the industry and the way he express them. If you get the chance to see him speak don’t miss it. Well, he started doing some video capsules, so you should go watch those. I used to make the new guys watch them when they had nothing to do (when is the next one coming out Mr Warden? I want more!). Aside from this Jesse, it was also good to see that Jesse Freeman is a very well spoken, nice , intelligent and professional dude. It clashes from his Twitter personality where all he does is wine about Adobe (well he seems to like Adobe now that he is working with Flash on Android). I really enjoy his articles on InsideRIA but sometimes I want to unfollow him on Twitter because all his bitchin is impacting on my moral. It was nice to see him in person, it gives me a new (good) perspective on the guy. Also another interesting thing I learned was that searching for Flash Bum (Jesse’s username on Twitter is theflashbum) on Google images yields unexpected results.

All in all it was a great week-end, I wish good luck to the Flash and the City team for next year.

, , , , , ,


FITC Toronto 2010 Recap

Ya what happens when I drink coffee at 3 in the afternoon? Well yeah, I can’t sleep; so at least I will do something positive with my time. FITC Toronto 2010 ended last week and I was pretty busy there as I was covering the conference for Applied Arts. I wrote 3 summaries for them (1, 2, 3) but these were mostly just recaps. What I want to do here is to write what I got out of this year festival.

Flash In The Can

Storytelling and the attention to details

One thing that stood out was the importance of storytelling. From North Kingdom putting stories even in their preloaders to Alex McDowell that writes an entire biography for a house in Fight Club, storytelling should be at the hearth of everything we do. Which bring me to the other point: attention to details. No elements in a production should be there for nothing, everything should have a purpose, a story. At no point in a project should you start rounding corners, if you do, it will show up in the finished product. It is hard when you are working on it, but you should keep this in mind, stay focused.

Making your tools

There was supposed to be a presentation by the president of firstborn Dan LaCivita, but unfortunately he couldn’t make it to the conference. So instead we got Mathieu Badimon (creator of FIVe3D) and Eric Decker showing how, when they encountered repetitive tasks in projects, they would build tools to help them. That advantages for doing this are pretty obvious; if the client wants to change something, you just make the change in the tool and reexport the data, plus you learn a ton while building the tool. These tools ranged from handwriting animation font creators to character path tools. Those tools where amazing and we saw that they reused some parts from tool to tool (like path drawing). This was a common thing through out the conference. People were making tools that would export them usable assets for the Flash projects. So I thought this isn’t a bad idea, the next time I encounter a problem that has repetitive task to it, instead of solving it by brute force, I am going to build a tool for it.

Best of show

I couldn’t do a recap without speaking about the best presentations I have seen. Jason Theodor and is talk about Creativity and Chaos was really inspiring and was the best I have seen this year. He generously gives his slides on slideshare, so I suggest you see them, it won’t be as good as seeing him talk but it is still pretty good. Jared Ficklin also gave a great presentation; he is a great entertainer and his curiosity is contagious. Finally I really enjoyed the Brendan Dawes’ talk about the grammar of interaction design.

A little extra

Last year I stopped by the booth of the creative group and took a leaflet to be well surprised by the quality of it. The best part of it was that it was a salary guide and it covered most of the employes of a digital agency. So this year, I went to the booth wanting my updated salary guide for 2010 and it took the form of a calendar. While browsing through it, I saw that they went a step further this year by making an online tool (click salary calculator on the right) where you can enter your fonction and where you live and it will give you a salary range. I think this is pretty awesome and very useful. I just moved to New York from Montreal and had no idea a all what salary  I should ask; I would have killed to have this tool like at that moment. So now you know, go check if you are paid enough.

It was the third year that I went to that conference and as the last years I came back from it fully motivated and with plenty of new ideas for blog post. Stay tuned for more

, , , , , , , , , , ,


My article about FITC day one on Applied Arts

Hey, this is just to tell you that I will be doing recap of the Flash In The Can conference on Applied Arts. Here is my recap for day number one, there is going to be one for day 2 and 3 also; I’ll keep a general recap for my blog. Also, wish me luck for tomorrow for I am in nomination for Best Canadian Developer Website for this blog and I really want to win (well it would be awesome). Good night!

, ,

1 Comment

My FITC 2010 Schedule

Yeah a lot of good news lately. I started to work for B-Reel as of today, but because of that I was unsure I could go to FITC. Today, the nominations for the FITC Awards have been revealed and I am nominated in the category Best Canadian Developer Website!!! So I asked my new boss if it could be arranged that I go to the festival and he said yes, now I got two reasons to be super happy.

Anyway like I did for the last two years I am going to write down what I wanna go see:

Sunday April 25

  • Set your Code on Fire
  • The Importance of Whiskey While Working (and other work flow tips, too!)
  • From Solo to CEO – Managing Growth – Panel
  • Adobe Keynote
  • North Kingdom: An Inside View (saw that one already)

Monday April 26

  • Analog Designer in a Digital World
  • Creativity and Chaos
  • UnitZeroOne: Skunkworks (here I am divided but Ralph is so good)
  • Whats New with Flash Professional
  • Terraforming Narrative
  • The Grammar of Interaction Design

Tuesday April 27

  • Flex Data Binding Pitfalls 10 Common Misuse Mistakes ( I wanna see Elad Elrom)
  • The Cool Shit Hour
  • Quick as a Flash ( Grant Skinner FTW)
  • Sixteen Colours ( I wanna see Peter speak too)
  • Eyes Can Hear, 5 ways (missed his session last year)
  • It Has To Be This

Well, I’m not saying I’ll stick to this, but this is what I’ll consider when I look again.

, ,

No Comments

Big Spaceship presentation at FITC Toronto 2009

FITC just posted videos of some of the presentations that were done this year (2009) at Toronto. It’s a shame that for some reason they removed the Joshua Davis one because he his a really good presenter. That being said I’d like to drive your attention to the Big Spaceship agency presentation. I don’t know why I missed it when I was there, but I am really happy I got to watch it in video because it really gives insights about how to run a digital shop. When I listen to presentations like this one, I don’t take everything for money, but it help shape my ideas about the topic.

The video is the last one on the right on the first line right under the video player found here: (it would be nice to have direct links)

So, in a nutshell, here is what they say:

  • They don’t use the word creative to define designers because everybody is creative.
  • Don’t hire assholes (very close to the netflix presentation)
  • People in team sit together, instead of department sit together
  • Great importance to culture and fun at work
  • Try to include one person of every department as early as possible in a project
  • They avoid using stock images or footages and prefer doing that themselves
  • To increase creativity they try to spend some time away from the computer, doing analog things like with their hands (I know, that is crazy)
  • They don’t pitch when the client ask for comps
  • They don’t pitch when client will choose the lowest costing solution

A very interesting watch. Take whatever you want from it.

, , ,


My review of FITC Toronto 2009

Well I’m on the train (not anymore) and I have 5 hours to kill so I thought I might use this time to write my recap of FITC Toronto 2009. In a general way, I liked this iteration of the festival more than last year. I think that my choice of presentations had a lot to do with it. Looking back, there are sessions I would have changed in my schedule but since they were filming most of the presentations I can just go and watch those that I heard good feedback from. The downside of this year was that I was alone so I kinda not fulfill the Connect part of the festival mission (Inspire, Educate, Challenge, Connect) but I will work on that next year.

What I learned

Here is interesting stuff I wanted to share:

  • I really liked the presentation from PowerFlasher (makers of the FDT tool to write ActionScript). It gave insights on their creative process and how they deal with in-house projects. They said they would put the presentation on youtube so I will point it out when it is there.
  • GAIA Framework: I wasn’t convinced before the presentation. Now I would like to try it out on certain type of project. What convinced me: the fact the it handles SWFAddress for you. I like SWFAddress a lot, but sometimes I would like it to be a physical object so that I could throw it out the window.
  • Joshua Davis is an awesome presenter. If you get the chance to see him talk, seize it.
  • I chose a couple of business presentations and they were probably not the best choices to make but I still got a couple of usefull links out of them:
    • IconBuffet : Nice for Icons but also nice to know that they are made by Firewheel Design and given freely; nice way to get known.
    • CoComment : Nice way to track your conversations, will definitely try it out.
    • 37 signals : Heard so much about them that I should probably at least follow their blog
    • BaseCamp : An online application to manage projects, made by 37 signals
    • HARO : Help a reporter out : a nice way to get your name out there by helping a reporter and getting quoted
  • VizualPV3D : Layout tool for Papervision3D that looks great. Can’t believe it was done by only one dude: Gary Stasiuk.
  • Finally Colin Moock‘s presentation held a couple of gems. First he his starting a company called User1 that will offer and develop the union platform which will facilitate the production of multiuser applications be it on the web or the desktop. Also he teamed up with MegaPhone, a company that provides  a framework to manipulate any screen using any phone. I foresee lots of new marketing opportunities.

On a personal note

I own a HP mini 1000, one of those new netbooks. It’s a pretty nice netbook: it has a 10 inch screen, but I believe I need more than that. 10 inch is good for writting and browsingthe web, but not that good for coding. I really hope that they will develop folding LCD soon so that the laptop can stay small but the screen can get bigger.

Lastly, being in Toronto made me realize how much I like Montreal. More trees, smaller streets, no tramway; it’s just warmer. The only other city that compares (and that I have been to) is Amsterdam. I think Montreal deserves its own Flash conference.

, , , , , , , ,


My FITC Toronto 2009 schedule

Just like last year, I’m going to the FITC Toronto conference at the end of April. Based on my last year’s experience here is what I want to see:

Sunday April 26th

  • Feed the Experts: A Sneak Peek Into the Treasure Chest of Creativity
  • The Tinkerer’s Box
  • Gaia Framework For Adobe Flash

Monday April 27th

  • Flash Interfaces in Console Games
  • Marketing Your Skillz (aka Self Promotion for the Shy Creative Type)
  • Flash Player Internals v2
  • Reality Cheque: Running a Freelance Business
  • MTV Jackass on AIR

Tuesday April 28th

  • Introduction to iPhone SDK for Flash Developers
  • The Road to “Brilliant”
  • The Magical Mystery Click
  • Your Phone is Your Controller (and Other Multiuser Adventures)
  • Technology Paving the Way for Story Telling

I tried to put more design presentation in there but it was hard, my primary interest is still programming. I also chose stuff that I have never done so that I won’t waste time listening to a 30 minutes introduction on what it is. The only conflict that hurts me is that I won’t get to see Cliff Hall PureMVC presentation. Well I can’t wait to be there.


No Comments

My views on FITC Toronto 2008

I came back this week from FITC Toronto and I can say this; I am tired as hell (well a bit less now since I slept 14 hours last night).

I will start with the bad stuff I have to say and end up with the good stuff. I think I had too big expectation before going to the conference. I thougth I would come back changed, I thougth it would revolutionalize the way I program. Well it did that a bit but on a much smaller scale. I keep myself pretty informed about what is going on in the Flash community so the conference might have more effects on someone who doesn’t. Also I think I did wrong choices in the presentations I went to see at first so I’ll share guide lines when doing such choices.

First since the presentations are only one hour, don’t go see something on a topic you already know about. They are going to introduce it so you will loose half of the presentation on something you already know. Choose something you are completely unaware of over something you already know. Second designer are way better speakers than programmers; keep that in mind.

The good stuff: FITC is a very well organized conference, everything is on time, good speakers and great parties. Here is a list of things I want to check further:

The new stuff: A lot of presenter worked at Adobe so we got sneak peek of new features that will be present in the next version of Flash. First the way you do timeline animations will be changed a lot. The interface to modify tweens will look a lot like the interface in After Effects. You will be able to assigned a different easing function to different properties being modified in one tween. Bones for animation will also be available(you must already know this). Since the last update, the flash player uses multicores to render a frame. You won’t have the possibility to do threads or parralele programming in the next versionof flash, but you will be able to send computations to Hydra(pixel shader language) which will be run on either multicores or GPU. I also caught I glimpse that maybe we will get the profiler in the FLash IDE also. I really hope the last one will come true.

Well that is it, I really hope I will get to go back there next year.



Parse error: syntax error, unexpected ';' in /homepages/25/d169645162/htdocs/wp-content/themes/fusion/footer.php on line 13