Archive for June, 2006

Adobe has released a public preview of ActionScript 3.0, which will be part of Flash 9. This follows the release of Flash Player 9, which will support AS3 features. At a glance this release seems to reinforce the evolution of Flash and ActionScript into a serious application development. Runtime types, non-dynamic classes and runtime exceptions brings AS3 in line with regular programming languages and hopefully simplifying the process of debugging Flash. In the past, grown programmers have been known to break down and cry at the thought of figuring out what is wrong with a complex Flash app. Perhaps now they will only sigh deeply.

The real reason for these changes is that run-time types and non-dynamic classes give a major performance boost. Flash Player 9 contains a new ActionScript virtual machine, the AVM2. This VM is expected to boost Flash performance up to 10-fold, to a point where the VM can run complex applications at reasonable speeds.

And guess what: Flash now has a revolutionary new primitive type: The “int”. The fact that this was missing in the first place is mind-boggling. My apologies if this sounds snide, but I remember wondering why Macromedia didn’t “professionalize” ActionScript over 4 years ago. Ok, so AS2 had OOP but it felt like a kludge and the willy-nilly handling of pointers made you cringe.

More good news: There are indications (see overview, search for “DisplayList”) that AS3 will ditch the MovieClip class in favor of more logical DisplayList and Shape classes, as well as doing away with the hopelessly outdated layer system for deciding depth of objects.

The recent developments are good, but my suspicion is that they will still fall short of making Flash a real application environment without relying on obscure tricks and guru knowledge. I understand the desire to keep Flash accessible to non-hardcore coders, but surely it would be possible to make the language scaleable without sacrificing consistency.

Don’t get me wrong, Flash is invaluable as a platform for rich media content that can actually be seen by the majority of Internet users. And this new version is inching towards a better Flash world. But if Adobe allows Flash to continue the “fix a kludge with a kludge” tradition that has always plagued Director, they’ll eventually have to scrap the whole platform and build something new from scratch. Let’s hope that doesn’t happen.

Links:

(Via Create Digital Motion)

1 Comment »

Some exciting news about VVVV, the “multipurpose toolkit” from the best boys at Meso. They’ve launched a redesigned and much improved VVVV site, combining Wiki and blog functionality into one user-friendly setup. VVVV has never been the most well-documented tool and the previous site suffered slightly from geek tendencies, but this time they got it right. The documentation page should now have something even for those with no visual programming experience, and if not they can just head over to the Fan Club to look for answers.

And for anyone who is unaware of the powers of VVVV, have a look at David Dessen’s new blog, Sanch TV. David has been producing some amazing results using VVVV’s built-in support for vertex shaders. Shaders run directly on the GPU of your graphics card, and so get a major performance boost compared with CPU-based methods. That feature alone should be reason enough to start experimenting with the VVVV toolkit (Windows only.)

Note: I blogged David Dessen’s work in more detail over on Generator.x.

2 Comments »

060617_geotagging_flickr.jpg

Geotagged Flickr photos in Google Earth via Yuan.cc (maps.yuan.cc/kml.php)

Last year I picked up a cheap GPS unit just for fun, which I have since used to collect GPS traces that I have yet to use for anything useful. I find the whole idea of geotagging quite fascinating, but have never built any applications using it.

Currently I’m in Vienna as artist-in-residence at the MuseumsQuartier, and so I’ve been taking quite a few pictures and putting them on Flickr as documentation. By accident I have met the street artist Space Invader, who is currently here “invading” Vienna. He puts up space invader mosaics in public places, and then documents them in the form of a map. This activity mixes a lot of interesting topics: Urban space, street art, locative media, psychogeography etc. So of course I thought this was a perfect chance to put geotagging to the test.

So far my activities have been those of an end-user rather than a developer. I put pictures on Flickr and geotag them with this excellent bookmarklet. Almost all my Vienna pictures are geotagged, for examples see Invader #1 and Invader #2.

Once tagged, it would be useful to be able to browse these images in a geographical intergace. Yuan.cc is a home-brewed site that allows you to sign in to your Flickr account and see your geotagged pictures on Google Maps. If you “sync” your pictures they get added to the Yuan.cc database, in which case you can browse them with Google Earth. You will also be able to see all other pictures in the database at a given location, with thumbnails and links back to Flickr.

During my residency I hope to be able to document all the Invaders that get put up in Vienna, complete with geotags.

Relevant links:

2 Comments »

Daniel Dihardja has just released a new Processing library called jm-Etude. It is a wrapper for the Jmusic Java library, which provides a framework for musical composition. In the Processing tradition, jm-Etude simplifies this further, setting up a structure where “scores”, “parts” and “phrases” together make up compositions in the form of “Etudes”. The library uses notes as the molecular unit, and MIDI is used for sound playback.

jm-Etude should be useful for a classically structured approach to music, but also to create realtime generative compositions. It nicely fills gaps left by Ess and Sonia, which focus on playing audio files or simpler waveform synthesis. Hopefully Dihardja will add examples showing how to use other sounds than the built-in MIDI instruments, as they sound notoriously cheesy.

See the Jmusic javadoc for an impression of what the underlying library can do.

Update: Daniel has explained a little about future plans for custom instruments:

[...] jm-Etude is not heavy MIDI based, it is just that for now the only playback function which is implemented is the jMusic midi playback. In jMusic the music data can be played and exported as MIDI or AUDIO and there are also libraries to build and use custom instruments, but I haven’t implemented them in the wrapper yet, because I’m still working on the MIDI export which will be a feature in the next update (is still a bit buggy now).

1 Comment »

Robert Hodgins just posted on the Processing forums asking about techniques for mapping colors in an image to a pre-specified palette. This process is known as color quantization, and is what any image software does when it saves a GIF. It consists in mapping a potentially very large number of unique colors in a RGB image to a limited number of colors (for GIF, typically some multiple of 2, i.e. 64, 128, 256 etc.)

I had to find a way to do quantization it for a project where I needed to output GIFs several years ago. At the time I tried some code for NeuQuant neural net quantization, which didn’t work for me. However, Mario Klingemann posted a NeuQuant Processing example (with code) a while back which does it successfully.

The solution I ended up using was the Java Imaging Utilities (JIU) library, an Open Source library written by Marco Schmidt. It has a number of quantization implementations, such as ArbitraryPaletteQuantizer, OctreeColorQuantizer and PopularityQuantizer. The only drawback is that JIU uses an internal custom RGBImage class, rather than the standard java.awt.BufferedImage. For use with Processing, one will need to convert the image before quantizing it.

No Comments »

060609_toxi_flickr.jpg

Karsten Schmidt aka Toxi: voxscape / skinmorph

It seems that the call for more Processing work on Flickr has been an unmitigated success, particularly after TomC added a Flickr badge to Processing Blogs. The Flickr Processing pool now sports 73 members and 277 images, the vast majority (approx 240+) of which have been posted in the last two weeks.

The images posted not only show off the diversity and creativity of different people, but also give sneak peeks at new work by certain people who notoriously create new work without ever documenting it on their web sites. The most severe case of this is perhaps Karsten Schmidt (aka Toxi), whose work is a constant inspiration yet is often difficult to come by. It’s therefore a joy to discover new sketches like the ones above being posted to the Processing Pool.

Keep it up, people! (That means you too, Karsten..)

No Comments »

I just posted an entry about NodeBox over on Generator.x. NodeBox is a Python-based coding environment that specializes in producing vector graphics, with very high quality results. Like Processing’s use of Java, NodeBox uses a simplified syntax but has access to the full power of Python for advanced programmers. It also has some interesting libraries, like the Pixie handwriting library or the PhotoBot image processing library.

Unfortunately, NodeBox is only for Mac OS, but the source is available under a MIT license. It looks like a fun alternative to Processing with a slightly different bias on what kind of work it is useful for. Have a look at the Gallery for some examples.

No Comments »