{Technology Enthusiast & Developer}

From the Blog

code_smI recently discovered the Starred Projects feature in Google Code. As a developer I don’t want to write everything myself because there is already so much out there. The following list contains libraries that every Actionscript developer doing Flex should be aware of their existence:

  • antennae: Templates for building complex Flex projects with Ant. I have been using ANT for a while but have to check out this project to see if it can make things easier. It has been around for a while.
  • as3corelib: A must know library. The corelib project is an ActionScript 3 Library that contains a number of classes and utilities for working with ActionScript 3. These include classes for MD5 and SHA 1 hashing, Image encoders, and JSON serialization as well as general String, Number and Date APIs.
  • as3crypto: As3 Crypto is a cryptography library written in Actionscript 3 that provides several common algorithms. This version also introduces a TLS engine (TLS is commonly known as SSL.)
  • as3xls: Project that makes it possible to read and write Excel files in Flex. The example on the site does not work with my Excel file, but still it could come in handy.
  • as3yaml: as3yaml is an Actionscript 3 YAML 1.1 parser and emitter.
  • facebook-actionscript-api: The Facebook Actionscript API provides an interface between the Facebook REST based API and Flash/Flex based applications.
  • flash-thunderbolt: ThunderBolt is a logger extension for ActionScript 2 and 3 applications using Firebug. For logging without Firebug, especially for AIR applications, check out the ThunderBolt AS3 Console.
  • flex-object-handles: A very common UI element found in many applications are those little square handles around an on-screen object that allow you to move & resize it.
  • flexcairngorm: Extensions for the Adobe Cairngorm MVC Framework.
  • flexcover: Flexcover is a code coverage tool for Flex, AIR and AS3. It incorporates a modified version of the AS3 compiler which inserts extra function calls in the code within the SWF or SWC output file.
  • flexlib: The FlexLib project is a community effort to create open source user interface components for Adobe Flex 2 and 3.
  • flexundoredo: The Flex UndoRedo Framework provides all the facilities that you need for implementing undo and redo within your applications. The Framework can be used with or without Cairngorm.
  • gaforflash: This is an ActionScript 3 API for Google Analytics data collection.
  • openflux: OpenFlux is an open-source component framework for Flex which makes radically custom component development fast and easy.
  • papervision3d: Open Source realtime 3D engine for Flash.
  • swizframework: Swiz is a framework for Adobe Flex that aims to bring complete simplicity to RIA development. Swiz provides Inversion of Control, event handing, and simple life cycle for asynchronous remote methods. In contrast to other major frameworks for Flex, Swiz imposes no JEE patterns on your code, no repetitive folder layouts, and no boilerplate code on your development.
  • tweener: Tweener (caurina.transitions.Tweener) is a Class used to create tweenings and other transitions via ActionScript code for projects built on the Flash platform.
  • twitterscript: This is an ActionScript 3.0 library for accessing Twitter’s APIs. This was originally code from Twitter, but it is being open sourced so it can be maintained and kept current.
  • urlkit: UrlKit supports Adobe Flex applications that need to expose URLs and window titles in the browser to represent their state. These URLs can be bookmarked, accessed via the Back button, etc.
  • wick3d: Wick3d is a 3D engine in progress for ActionScript 3 my colleague David Lenaerts who does some pretty amazing things :)

The order of this list is pure alphabetic and contains must know libraries and useful stuff that could come in handy in future projects.

Dec
24
Posted by Alain at 5:05 pm

It has been a very interesting year and now might be the time to look back. I did several projects and used a lot of different technologies and frameworks like Flex, AIR, Silverlight, Java, Spring, BlazeDS, … Last year I decided to start a blog because I finally had something to say, or so I thought :) , I became the proud father of a beautiful boy named Robbe, I decided that RIA development would be my path, although I had to make a couple detours.

In the first part of the year I was involved in several Flex projects. The first project was a generic product selector build in Flex that was used by a very well known laptop manufacturer. It was used for a short time because the client decided to go for an AJAX version and my very generic product selector got replaced by the AJAX version. The other project was an internal time tracking interface that used Flex and AIR. We build this tool on top of the Basecamp API. For now the application is only used internal at Nascom, who knows what the future brings. I also released my first open source application Airbob.

Then I put on my other hat and did some Java development using Java, Spring, Hibernate and BlazeDS. We used the OpenAMF library for our server-side communication with Java, but BlazeDS makes the implementation a lot easier. You still had to code the Spring bindings yourself, but the good news is that Adobe is working with SpringSource to build it into the Framework. The other big project I worked on for most of the year was the footballfan.be community site. My role was building the HTML front end using SpringMVC. In a lot of ways it was an interesting project.

In between I did a Silverlight Research project, that has not been upgraded to the Silverlight 2 RTM version yet. The problem is that I used the agTweener library and the source has not been updated after Silverlight Beta 2. So for the time being Benny’s Bus Stop is no more. It might come back in the future if I find a decent tweener library.

So what’s up for 2009? I am reading the book “Beginning iPhone Development: Exploring the iPhone SDK” so that will be a challenge for next year. There are some cool Flex projects in the pipeline, more on that possibly later on. Will there be an interesting Silverlight project? Only Steve Ballmer knows ;)

Happy Holidays and see you next year!

This week I was one of the lucky ones to attend the Adobe MAX event in Milan. I just blogged about the general sessions on the event already at the Nascom blog. So I won’t repeat too much what I said there in this post. I just want to share with you what I got out of MAX for my professional career.

My top 5 sessions:

1. Anatomy of a Seriously Sophisticated Adobe AIR Application: Definitely the best session for me because it showcases the power of Adobe AIR. The presenters Rick Williams and Adam Creeger were involved in the Fiat ecoDrive project. We got a high level presentation about how they organized their development team by using Unit tests and Continuous Integration. The application also added a community aspect by uploading the data to ecoVille, an online community by Fiat.

2. Looking ahead to the next version of Flex: The session was a demo about the new FXG format that is going to be used in the new version of Flex. This basically means that we can represent graphics like shapes, paths, strokes, … in MXML. Also the new components will be based on this new format. Flex will also have better text support. For more information about the new component architecture click here.

3. Looking ahead to the next version of Flex Builder: The next version of Flex Builder (also called Gumbo) will have a lot of new features. The most important features are productivity improvements like generating getters/setters, FlexUnit integration, auto generate event handler functions and more. Te also added Data Centric functionality like being able to use the Client Side Data Management without LifeCycle DS. And last but not least the Network Monitor is back. You can download the Preview version of Gumbo here.

4. Introduction to Thermo and the Next Generation of Flex: Well actually it’s not Thermo anymore the new name is Flash Catalyst. We had a quick feature tour of Flash Catalyst and Flex Builder Gumbo. Exciting times are coming for the Flex developers. Unfortunately the Preview version of Flash Catalyst is only available on Mac for now.

5. Flash Lite3: Learn to Package and Distribute Mobile Content: This session made it clear to me that building Flash Lite application is one thing, getting them deployed on all the different devices is a challenge. We saw a demo of the Adobe Mobile Packager Beta that makes it easier to create packages that can be deployed on Windows Mobile and Symbian.

Some of the other sessions I attended were a bit disappointing because they did not matched my expectations. Maybe this is because Adobe MAX is a commercial event where Adobe showcases their new technologies and products and they don’t want to scare people off, but for me it could have been be a lot more technical.

I had a good time in Milan, got to know my colleagues Rien, Michael and Sakri a bit better. We ended each day with a Johnny Walker at Hotel Johnny. Hopefully until next year somewhere in Europe.

Nov
25
Posted by Alain at 10:31 pm

Nascom has been an Adobe partner for some time now. And because of this partnership we were asked to join them at their booth on Devoxx (formerly Javapolis), the java community conference. I will be there giving a demo of an AIR application we build using Flex. The application is used in house for time tracking and has been build on top of the Basecamp API. Fo the moment the application is not available for download, so if you are interested please come and see us at the Adobe booth on 10/12.

I just installed AlertThingy, which is a very cool Adobe AIR application that connects to different services like FriendFeed, Flickr and Twitter. The company who build it is howard/baines and just found this very good presentation from Jeremy Baines. It is called “How to build a desktop app from your web app”. The presentation was recorded at the Future of Web Apps conference last week.

Sep
16
Posted by Alain at 12:25 pm

I am doing some research for a large AIR application that has to dynamically load swf files (these can be Flex modules, but also regular Flash movies). This is apparently not that easy to accomplish, because it doesn’t work the same as in a normal Flex web application. You quickly run in to security issues because your AIR application runs in a different security sandbox then the remote files you are trying to execute.

You might want to read the following posts before using the code:

Finding a proper solution is not easy. While the second post has a solution that is usable in some situations, it should be implemented with caution. A better solution that uses signing your Flex modules is described in the first post, but it is definitely harder to implement. For now I would go for the second approach.

The following code snippet loads a local swf file into your AIR application. The swf file has to be in the user’s local app-storage folder. The original code can be found in this post.

private function loadLocalSwf(fileName:String):void
{
// File reference
var file:File;
file = File.applicationStorageDirectory.resolvePath(fileName);

// Open the SWF file
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);

// Read SWF bytes into byte array and close file
var bytes: ByteArray = new ByteArray();
fileStream.readBytes(bytes);
fileStream.close();

// Prepare the loader context to avoid security error
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true;

// Load the SWF file
var swfLoader: SWFLoader = new SWFLoader();
swfLoader.loaderContext = loaderContext;
swfLoader.source = bytes;

// Add to you stage
swfContainer.addChild(swfLoader);
}

Hopefully Adobe will add more support and techniques to achieve this in future versions of AIR. This would off course be very useful when you want to create large enterprise applications.

UPDATE (07/2009): The code above is not working anymore in the latest Adobe AIR 1.5 runtime. So please use the following code to load a local swf file into your AIR application. This code has been tested on a local swf file and not on a remotely downloaded file, which can cause security sandbox issues (see above).

private function loadLocalSwf(fileName:String):void
{
var file:File = File.desktopDirectory.resolvePath(fileName);
var loader:Loader = new Loader();
loader.load(new URLRequest(file.url));
swfContainer.addChild(loader);
}
Sep
13
Posted by Alain at 5:28 pm

Merapi

Can Merapi help us get more interesting Adobe AIR projects in the future? Well I hope so, but first I have to get approved by the team to play around with the current Alpa version. I registered on their website after reading the articles RFID Enabled AIR Applications With Merapi and Live GPS Visualizations With AIR & Merapiand. This looks very promising indeed.

At my company we get a lot of requests to build an Adobe AIR application for a client, but the client has no clue what Adobe AIR can do and especially what it can’t do. This means that we get requests for applications to interact with other applications and/or communicating with external hardware. You can think of workarounds or tell the client that Adobe AIR is not right technology to solve their problem. But using the Flash/Flex framework can be powerful if you want to build a “Filthy Rich Client”. Using Java also means that the end solution you are building will remain platform independent.

But it also means that you are breaking the security sandbox and your application will have more power over the user’s system. The installation experience of the Java/AIR application might also become more complex then the smooth installation of AIR applications.

Well it’s an interesting product and I hope to play with it very soon.

Jul
02
Posted by Alain at 8:42 pm

If you read a lot of blogs like I do, then you might be using Google Reader for this. Well I do anyway. I used a lot of RSS desktop clients in the past, but I still like Google Reader the best because I can read from different computers. But now you can have a desktop application for reading your favorite blogs and also use Google Reader web. I recently discovered ReadAir, which is an OSX Themed Desktop Client for Mac or Windows build with Adobe AIR. Try it out here and oh, it’s open source.

blaze_ds_logo_spots This article explains how to create an Adobe AIR application that uses Blaze Data Services to connect to a Java back-end. The Java back-en uses Spring/Hibernate to retrieve the data to the client. I will try to explain the steps from database up to the client.

You can download the source code for the sample here. I used IntelliJ IDEA and Flexbuilder 3 to build this sample. To run the web application you will need Apache Tomcat 6 with the BlazeDS jar files installed. You can find more information about how to do that on this page.

(more…)

Apr
17
Posted by Alain at 9:20 pm

I found some time to add a couple of new features to my Airbob application. The beta 2 version now has the following improvements:

  • Application checks for updates.
  • When the status of one of your favorite projects changes a small window pops up at the bottom right corner of your screen.
  • Updated some UI visual components.

You might need to uninstall the beta 1 version before installing this version.