The Combined Corner

Idealism is what precedes experience; cynicism is what follows...

Wednesday, August 27, 2008

IDEFactory... currently in Beta… soon in production…

When using Adobe Flex to build enterprise scale systems, the limitations of Flex Builder becomes not only very apparent, but also a limitation for productivity and flexibility (note the irony :-) )

However, a group of talented developers have started on the quest to deliver architectural features to us inside Flex Builder… fortunately they have decided NOT to change the base, but build it as a plug-in to Eclipse / Flex Builder.

IDEFactory… looking really good sofar (however not in this picture :-) )…

RSL and the lack of a build-in map over class-definitions

In response to the lack of Reflection in ActionScript and the emergence of techniques such as RSL and Modules and the combination of these two, several initiatives have been launched to facilitate a map of class definitions within a SWF.

One is the SWFExplorer by ByteArray which is still in a very early stage of development, but it appears to become a simple and easy way to get the definitionNames from a SWF at Runtime.

Another is the getDefinitionNames by Dennis Kolyako which is a bit more complex in its implementation than SWFExplorer, but yields the same gross results.

SWFExplorer overall seems to fit the OO design model of Flex more than the latter implementation by Dennis which seems to match a more traditional Flash Authoring design model.

Adobe Flex training in a nutshell: Flex in a Week

Adobe has started an initiative they call "Flex in a Week".

It consists of a predefined set of tasks which put in sequence presumably should take the average intro-level developer about a week to complete…

Days 4 and 5 are still to be defined, but sofar it looks like a nice way to get new developers started… :-)

Check it out…

Guice (pronounced 'Juice')

Guice (pronounced 'juice') is a lightweight dependency injection framework for Java 5 and above, brought to you by Google, however the principles are sound and could be used for other frameworks too.

Writing factories and dependency injection logic by hand for every service and client can become tedious. Some other dependency injection frameworks even require you to explicitly map services to the places where you want them injected.

Check it out... exciting stuff

Curved Scrollbar

Charles Petzold did a simple implementation of a curved scrollbar in XAML.
Nevertheless its probably more cool than useful, I have decided to do an implementation in Flash to match...

However... check the original posting by Charles...

Tuesday, August 26, 2008

.NET Reflector... no more Lutz Roeder

It appears that Luts Roeder have decided to leave development and maintenance of .NET reflector...

If you have ever used Reflector, you probably already know how cool a tool it is...
Creator and Inventor has left it to Red Gate to continue the further development...

Check it out...

Friday, August 22, 2008

ClassMappings between WebORB and Adobe Flex

Basically there are three methods to obtain a classmapping between WebORB and Adobe Flex.

1. ClassAlias in WebORB configuration.
2. ClassAlias in your ActionScript code through the "registerClassAlias" class.
3. ClassAlias in your ActionScript classes through the RemoteClass metatag.

1. ClassAlias in WebORB configuration
Add the following to your WebORB configuration file (This can also be done through the WebORB management console):

Name of ClientClass
Name of ServerClass
Name of assembly

2. ClassAlias in your ActionScript code through the "registerClassAlias" class.

var clientClass:Class = getDefinitionByName( clientClassName ) as Class;
registerClassAlias( serverClassName, clientClass );

3. ClassAlias in your ActionScript classes through the RemoteClass metatag.


The result is almost identical (some differences in behavior exists, but outside the scope of this short note) and will eventually mean that serverclasses returned and send to the server will be serialized and deserialized between the two class-definitions automatically by the WebORB server and the Flas Player respecitively.

The other Adobe Flex ACE's in Europe

Among ACE's in Europe within Flex, there are currently 3 others...

They are as follows...

Xavi Beumala from Barcelona... he had just been hired by Adobe Consulting when I last saw him to Flex 360 in Milan. A very sympathetic guy with great talent with the will to bring it far.

Dirk Eismann from Hannover... last i saw him it was at MAX in Barcelona where he was working for Herrlich and Ramuschkat. Extremely skilled and versatile developer which I have the outmost respect for.

Giorgio Natili from Rome... a real trailblazer and a true community leader from central Italy with a community of more than 3000 active users and 100.000 visits every month. I met him last time I was in Italy, a real fire-spirit...

Peter Elst from Belgium... one of the nicest guys in the community and on top of that an innovative and tech-savvy cool guy who contributes more to the community than averages... obviously I am in very good company and I only hope that I some day can grow to match these true icons in the community and contribute as much as the have...

I got my Adobe Community Expert (ACE) designation today

I was delighted to learn today that I have been designated an Adobe Community Expert (ACE). Many know the program as the segue from Team Macromedia.

It may take a few days to get the listing on the site, however I look forward to continuing to contribute to the Flex/RIA and broader Adobe community.

Check out the existing ACE's on the listing...

Saturday, August 02, 2008

The MyLifeBits Project

I try to keep the clutter on this blog to an absolute minimum, I try to attain this by carefully considering what to blog about and by having a personal blog which tries to cover all the non-technical stuff I find relevant to share.

However, sometimes very interesting comes along which does not exactly reside in my knowledge domains but is technical enough to belong here, and hence "forces" me to blog about it in "The Combined Corner".

One such things is The MyLifeBits Project by Mr. Gordon Bell at Microsoft.

Ever try to remember who you bumped into at the store a few days back? Or exactly what the company president said at the morning meeting?

Well, you're not alone. And IBM researchers are working on software that just may help you better recollect all the forgotten pieces of your life.

This week, the company unveiled software that uses images, sounds and text recorded on everyday mobile devices to help people recall names, faces, conversations and events. Dubbed Pensieve, the software organizes bits of collected information, stores them and then helps the user extract them later on.

"Today, we're flooded with information. It's an information overload and we're not capable of handling it," said Eran Belinsky, an IBM project leader. "This would relieve us from the anxiousness or need to try to remember everything. And there's the issue of trouble with recollection. [It's like] your index is broken. You know you know something, but you can't get there. This could help people having trouble with their memory reconstruct their memories."

IBM's project is akin to one that of Mr. Gordon Bell and a couple of other scientists at Microsoft Research have been working on for the past nine years. Bell, a longtime veteran of the IT industry and now principal researcher at Microsoft's research arm, is developing a way for people to remember different aspects of their lives.

MyLifeBits has Bell supplementing his own memory by collecting as much information as he can about his life. He's trying to store a lifetime on his Dell laptop. Collecting telephone conversations, music, lectures, books he's written and read and photographs he's incessantly taken, Bell is amassing a great database of his life.

Interesting stuff... :)

Sunday, July 27, 2008

Adobe Flash Player : MultiThreading

These days I am recontemplating on my vision for a multithreaded AVM instance.

Jim Corbett said multithreading wasn’t being built into the ActionScript Virtual Machine, however, looking ahead into the inner workings of Flash Player 10, processing for the new bitmap filters using the programming language Hydra would be using multithreading! What’s more is that you don’t need to focus on manipulating DisplayObject items with Hydra, but are able to send it plain math equations as well, which it will be able to crunch blazingly fast, thanks to multithreading! So any math heavy Flash applications will get a HUGE performance boost, not to mention the various 3D engines and physics engines.

Adobe Flash Player : Codenames

On a funny sidenote... :)

While the Adobe code-name for Flash Player 10 is “Astro”, the Flash Player team has their own code-name for it… Bacon! That’s the name that the team voted for, they didn’t get that name, but still refer to it internally as Bacon. Flash Player 9 Update 3 was code-named Moviestar, but once again the internal Flash Player team referred to as Frogstar.

Google Gears : WorkerPool

The WorkerPool behaves like a collection of processes, rather than threads. Workers do not share any execution state. Changing a variable in one worker has no effect in any other worker. And created workers do not automatically inherit script code from their parents.

Members of a WorkerPool interact with each other only by sending message objects.

Google Gears

The latest entry among the candidate RIA technologies is Google Gears.

Still in version 0.3 at the time of this writing, its obvious that a lot of work needs to be done.

However, Google Gears (GG) has a couple of neat features...

* Database based on SQLLite.
* WorkerPool (JavaScript MultiThreading).
* Desktop Module to interact with the OS.

The Database module provides browser-local relational data storage to your JavaScript web application. Gears uses the open source SQLite database system. Ergo exactly as we have grown accustomed with Adobe AIR.

The WorkerPool module allows web applications to run JavaScript code in the background, without blocking the main page's script execution.
In web browsers a single time-intensive operation, such as I/O or heavy computation, can make the UI unresponsive. The WorkerPool module runs operations in the background, without blocking the UI. Scripts executing in the WorkerPool will not trigger the browser's "unresponsive script" dialog.
Nevertheless, since the browser's XmlHttpRequest object is not available in the context of a worker, Gears provides its own HttpRequest object to fill that need. Gears HttpRequest provides most of the features of XmlHttpRequest except for the ability to access the response as an XML DOM object and the ability to send a request synchronously.

Check it out...

A couple of more cool features are scheduled, but lets see which ideas actually make it out of the labs alive.

Some reasons to consider GG are that it does not require an explicit installation, just that you allow a specific site to run Gears enabled and that its open source in contrast to e.g. Adobe AIR and there a couple of more pretty interesting features of GG, but I will not get into that now.

When this is said, in my very humble graphical understanding - I think there exist a striking resemblance between Adobe AIR logo and the Google Gears logo and to be totally honest, the feature set if we disregard the very promising multi-threaded Javacsript... do you see what I mean ?

Adobe Flex : Change between Debug and Production Builds

Sometimes FlexAnt is just too troublesome to get working correctly (extisting projects tends to be difficulty to FlexAntify) so you need an easy way to toggle between Debug and Production builds...

Instead of going through your projects and setting the variables to Debug=false (even if you have a script / application that does it for you) it makes more sense to use the optimizer application from the Adobe SDK.

Then all you have to do is to call the following command on your binaries...
optimizer bin-debug/[binary].swf –output bin/[binary].swf –keep-as3-metadata=Bindable,Managed,ChangeEvent,NonCommittingChangeEvent,Transient

You can read more about the Optimizer here...

Adobe Flex : Code Quality of Flex 4

To be honest, I have great expectations to Flex 4... and as always, when I feel my expectations starting to rise - I begin to worry about the lurking disappointment which is one of the most frequent outcomes of high expectations...

Am I the only that think the note to the Scrollbar implementation sounds like an API problem (read: behavioral inconsistency) in the making ?

Check it out...

Archived Adobe Flash Player Installers

When I was testing my theory regarding the AXIS cameras and the lack of a crossdomain file being the only obstacle to using the SWF stream, I needed the Flash Player 7 installer and I found this list in the Adobe KnowledgeBase:

It contains a download link to all players since Flash Player 2... for some reason they don't have an installer for Flash Player 1... please feel free to comment if you know of an explicit reason for this :-)

On a side-note, its interesting to see the peculiar growth in file-size.

Saturday, July 26, 2008

Debugging WebORB from Visual Studio

Its quite easy to debug applications running within the WebORB for .NET container with Visual Studio, however there are a few precautions to observe before its possible.

Some of the things I mention may seem obvious to you, but based on my experience - some of these very obvious details can be some of the pitfalls that prevent many developers from debugging their applications once deployed to WebORB, so now I include them here in my list for the seasoned developers to ignore and the novices to use.

First make sure that your assemblies are compiled with DEBUG information, you don't have to deploy the PDB files to the WebORB BIN directory. PDB files are the program database files which holds debugging and project state information for your program, but Visual Studio and the .NET runtime can map the debug assembly to the code in Visual Studio if just the PDB files are available in the output directory of the Visual Studio project.

From Visual Studio (I am using 2008, but its the same for 2005) with the code open used to generate the assemblies, you open the "Attach to Process" window found from the "Debug" menu.

Make sure that the checkbox "Show processes in all sessions" is selected.

Find the w3wp.exe (The IIS Worker Process) and attach the debugger to it.

I have for the sake of convenience mapped the following keyboard shortcut for opening this window: CTRL+SHIFT+ALT+F5. That has enabled me to start the debugging process with the following key sequence:

* "w" or "W"

Now Visual Studio will start the debugging session and map the debugging assembly to the code in Visual Studio.
As the debugging information are loaded you will see your breakpoint indicators be filled out, effectively indicating that debugging information mapping to the current code have been loaded. If your breakpoint indicators remain unfilled circles, it is not working, a likely cause for this is that the deployed assemblies have been compiled without DEBUG information.

Once your assemblies are loaded correctly and your breakpoint indicators are correctly filled, you turn your attention to either your application or the WebORB management console (I recommend the latter as its always a good idea to test each tier isolated).

Once you execute the code which eventually will hit the breakpoints, control will be transferred to Visual Studio and your debugging session should be fully active.

PS. Yes, the code in the second screendumb is a joke :-)

My Network