Pimping Trazzle

Just wanted to share some thoughts about future enhancements of Trazzle. Currently I’m working on modularizing the built-in functionality. Each and every feature should work as a plug-in, so that I have a small and uncluttered codebase. Even the main logger should become a plugin-in and afterwards I have plans for some new features:

Tail-ing flashlog.txt

This is a pretty basic, but nonetheless important feature. Additionally to logging messages through a socket, Trazzle will be able to read the standard flashlog.txt with the ability to also configure your mm.cfg to make everything work. Of course this won’t be any substitution for logging via the socket, because there won’t be any loglevels and there is no feedback channel, which is needed to notify flash about a change of a file (which is already a feature if you haven’t noticed yet).

Shared object browser

In the last week I’ve pretty much finished classes for deserializing and serializing AMF data, which enables me to write a shared object browser. This will also be a separate plug-in and should be a full-fledged browser with read and write support for AS2 and AS3 shared objects (AMF0/AMF3).

AMF Webservice Faker

This actually was my initial intent to write a AMF implementation. When writing Flash applications which rely strongly on data from the backend side, there are often timing problems in collaboration. So often you’ll need some dummy data to work with and often the backend guys aren’t just finished yet. Until now we solved the problem by reading JSON data into our flash movie, but the problem with JSON data is, that it isn’t strictly typed. We’ll it is, but unlike AMF you cannot register custom classes with Object.registerClass which brought me to the idea to fake a WebService. There is still a problem though: It would be easy of course to create methods on the service and just return, say YAML, which has support for custom types. But I think in reality you might have a folder with a bunch of images you want your webservice to return and probably won’t create that YAML file manually. Indeed you could have a script, which creates that YAML file for you (with all the image paths in it), but when I saw the release of JSCocoa I was amazed by the idea of having a small application server, written in JavaScript with some basic new classes like Directory and File. So you could write a simple service yourself and read data from your harddrive dynamically. I hope you get the idea.

Dumping objects

This is something I really want to have. After I’ve seen the latest screencast (warning: video content ahead) of XRay I instantly wanted to have the inspection feature. I have no clue if the interface will look like that, but the feature is great. This will also be made possible by the AMF implementation, because one can easily create a new ByteArray and write a complete object to it with writeObject(), which will of course use AMF serialization. So there will be no need to iterate over each and every property of a object, just writeObject() and you’re all set. If you want to serialize protected or private methods, though, you’ll need to implement the IExternalizable interface in the flash.utils package. But I guess this is also more lightweight than iterating over properties, which wouldn’t give you protected properties either.

A profiler

Yeah, like the one flex has! I guess this is way to early to talk about, but this would be huge! It would be a frickin’ huge amount of work, but it is possible. And perhaps CoreData could lift a good amount off work of that task.

Dropping Themes

I’m considering to drop the support for custom themes. The WebView is a real bottleneck for that kind of task performance-wise and I think that no one uses them anyway. So if I’d decide to write a replacement for the WebView one day (switching to a custom TextView), I wouldn’t need to carry the burden of theme support through each release of Trazzle. This would mean, that there would be effectively the dark theme for the moment.

Well, I guess that’s it so far. Of course there is no timeline for any of these features, but let me know what you think!


About this entry