Adobe Air Beta 2 and ILOG Elixir components

I’ve been playing with Flex Builder 3 (Beta 2) on and off this weekend and I’m definitely looking forward to the new release sometime in the new year. Adobe Air nee Apollo has also come a long way since Beta 1. As soon as I get over the latest build-hump I’ll probably even switch over to using FB3 for development purposes.

I’ve also been trying out the ILOG Elixir Flex components and I’m really impressed with these. A while back I started work on converting a Java based Treemap algorithm to AS3. The Java code almost compiled as it was, although there were a few areas that Java had to work a lot harder than AS3. All hail the Flash Player. There are already a few open source Treemap components out there, but I’m really impressed with the attention to detail of the ILOG Treemap components. They have two different layout algorithms, styling, user interaction and even documentation for Flex Builder. It has also been announced that these components will be distributed by Adobe as well.

Hugo Awards 2007

This post was originally intended to be written just before the Hugo Awards ceremony in Japan; unfortunately I came down with Influenza at the end of August that knocked me out for two weeks, and I’m still not 100%. This also meant that I didn’t get a chance to read any of the the selections in novella and short story categories and I missed one of the “Long Form” selection as well.

Earlier in the year I decided to expand my horizons on Science Fiction. I figured that the Hugo Award would be a good barometer of new and upcoming fiction, so I decided to read and watch all of the things nominated. I started a little bit late, so didn’t quite manage to finish everything I intended. I’m considering expanding this out to other awards next year, although I’m a little bit daunted by the Man Booker Prize.

I’ve ranked them according to my opinion, with a brief blurb about them; the weblinks go on in greater detail. The 2007 Hugo winners in bold.

Best Novel

  • Blindsight by Peter Watt
    This was by far my favourite out of the five. Charles Stross sums it up far better than I ever could – “Imagine a neurobiology-obsessed version of Greg Egan writing a first contact with aliens story from the point of view of a zombie posthuman crewman aboard a starship captained by a vampire, with not dying as the boobie prize.” This book kept me guessing all the way through. Highly recommended.
  • Glasshouse by Charles Stross
    A war damaged veteran from a post accelerated society is forced to live in a social experiment replicating life in the 1950s, although the experiment is not quite what is seems. Cool future tech mixed in with commentary on “ancient 20th century” concepts of social roles and identity.
  • Rainbows End by Vernor Vinge
    2 decades into the future, a man wakes up from a treatment for Alzheimer’s disease to find a world full of always-on network augmented reality devices. This book was full of really cool fairly realistic extrapolations on modern technology. Even though I preferred Blindsight, I can see why this book won the Best Novel award.
  • His Majesty’s Dragon by Naomi Novik
    What if there were Dragons during the Napoleonic wars? A fun book – I’ve already read the next two in the series – but not as ground breaking in my opinion as the books above.
  • Eifelheim by Michael Flynn
    I could not get into this book at all – these things happen some time. I didn’t like the style of writing, I found the shift in focus between the present and the past jarring, and the pseudo-quantum physics knowledge of the Dark Ages priest properly broke my suspension of disbelief. Oh, and I was bored, always a terrible crime in any media.

Blindsight, Eifelheim and Rainbows End were all available freely online as e-texts. This I was very grateful for, as publication dates in the UK would have otherwise made reading these books far more difficult than neccessary. There is also a tradition of putting the nominees for the short story categories online, in an attempt to boost their exposure. I did download these in an attempt to read them in a park on a nice sunny day – but being ill robbed me of my ability to read, let alone walk to a park.

Best Dramatic Presentation – Long Form

  • Pan’s Labyrinth
    This is a gorgeous film juxtaposing a little girl’s fantastical quest against the horrors of the Spanish civil war. Beautifully crafted by Guillermo del Toro
  • Children of Men
    A deeply depressing tale about hope in a dystopic near future world that is sterile, shaped by current events of terrorism, Iraq and Abu Ghraib. In any other year this film would have been my favourite.
  • A Scanner Darkly
    Philip K Dicks slightly psychotic tale of a NARC officer investigating a group of drug users under cover, one of whom just happens to be himself. 
  • V for Vendetta
    I didn’t like this compared to the book, and to be honest I was a little bored by it and forgot to finish it. But, I’ve added to my list of movies to watch again, just
  • The Prestige
    I missed this at the cinema, bought it on DVD, but caught influenza before I could watch it. On “the List”, where it will probably stay their until I die.

Best Dramatic Presentation – Short Form

  • Doctor Who: The Girl in the Fireplace
    My favourite episode of “Series 2” of the new Dr Who. A love story with a bit of timeline complexity, clockwork robots and a horse. The write also wrote last years winner The Empty Child/The Doctor Dances and next years winner Blink.
  • Doctor Who: “Army of Ghosts” & “Doomsday
    A decent season finale, without too much of Russell T Davies’s trademarked Deux Ex Machina.
  • Stargate SG-1: “200
    A fun episode, sending up all sorts of science fiction shows, Thunderbirds, The Wizard of Oz, and especially Stargate SG1 itself.
  • Doctor Who: “School Reunion
    Sarah Jane Smith rejoins the cast for an episode to investigate mysterious happenings at a school. Mickey’s character really starts coming into his own here, and there’s a nicely un-Giles guest spot from Anthony Head.
  • Battlestar Galactica: “Downloaded
    All of the revamped BSG is currently on the to be watched queue – I’ve spent most of the year rewatching all of Babylon 5 instead.

I really enjoyed this mass influx of new books, movies and ideas – I’m definitely doing it again next year.

360 Flex vs Chilli Fiesta and the Perseids

Although I really enjoyed 360:Flex (San Jose edition), I couldn’t make it to the one happening right now in Seattle for reasons mostly involving finances (starting with £700 for the flight alone – and I can’t get the conference expensed at all) and deadlines (the next version of my “intranet product” has a major deadline in 3 weeks). It’s a real shame, as this iteration looked even better than the last one.

🙁

Instead, I went on a day trip and visited the West Dean Gardens Chilli Fiesta with some friends. Although it seemed to be suffering a little from the effects of a mild summer and record floods – especially compared with what was on offer last year – there was still a cornucopia of all things chilli related – salsa, jams, ice cream, fresh chillis, chocolate, plants and seedlings, beer, massage oil, fudge, gummy bears – you name it.

This year I also discovered my limit of chilli related things – Chilli Pepper Pete’s Dragon’s Blood (which is made from the hottest chilli in the world – the Dorset Naga). Within seconds of sampling a tiny amount on a broken corn chip, my mouth was on fire. A few minutes later and my jaw started locking up in pain. About 10 minutes later, I had a sharp stabbing pain in my stomach. Then the pain went away, but everything was tainted by chillis and even plain boring bread was extremely hot. Eventually I found some chilli ice cream and the ever present chilli sensation finally went away.

To top off the evening, I took advantage of the new moon and sat on Hampstead Heath and watched the Perseids – even within the bright city lights of London we managed to see a few of the brightest meteors.

My weekend was definitely a good substitute for the best Flex conference in the world, enjoying the things that 360 Flex lacks – chillis and meteors!

3 geek events; a summary

It occurs to me I’ve been to three geek events recently, and not mentioned a word about them.

HackDayLondon

Over the weekend Yahoo, the BBC and a bunch of other companies ran HackDay up at Alexandra Palace. The basic principle being: get a bunch of geeks together, give them large amounts of APIs, ideas, caffeine and pizza, and then see what happens. A few unexpected problems occurred, such as Alexandra Palace getting struck by lightning early in the day, and then the fire alarms thought the building was on fire, so understandably opened the roof vents to deal with the problem. Which meant, that it was now raining on everyone’s laptops. The HackDay staff did a good job of evacuating everyone out into the conservatory before the next storm hit, and a lot of people kept right on hacking.

During the day I hit a couple of road block in my attempted hacking, apart from the obvious inspiration one: firstly a lack of crossdomain policy files meant I couldn’t access a lot of the BBC feeds I wanted to. I’m thinking of making moo cards with important info on them, just to hand out to people who don’t make it easy for Flash. Secondly my attempts to use the HTML object in Adobe Air seemed to hit security problems -aka I could only load up locally saved web pages. So in the end I spent a few hours randomly annoying Aral while he was playing with a wifi Nabaztag/tag by making it flash and waggle its ears at him. As a result of all these difficulties I spent most of my time at the event wandering around catching up with people, looking at geeky things at the O’Reilly Make stand (including a gear system built out of pasta and ginger snaps), seeing a few alpha demos of projects for HackDay, and a fair bit of evangelising Flex to a variety of different people of different geek creeds.

As I was only half an hour from home I opted for crashing out in my own bed (as opposed to the comfy beanbags that others seemed to have chosen). Unexpected house adventures involving an ethnic cleansing of moths meant I couldn’t make it back for the second day. I really enjoyed the first day though, and I’m looking forward to the next big London geeky event like this.

London .Net User Group on Silverlight

This was on Thursday, and felt a little strange – I felt very much like a spy in their midst. I turned up to hear someone from Microsoft talk about Silverlight – I didn’t go to Mix and this is the first public chance the UK has had so far; also I wanted to hear a pitch directly to the developers as they tend to be more about implementation and actualities, and less about product pitches. I’m going to write up my thoughts on Silverlight separately, but as far as comparisons on the User Group go, this one felt a little flat -I’m now even more grateful to the efforts put in by Niklas, Tink and Aral to try enliven the meetings, find the right venues and grow the respective communities.

Scotch on the Rocks

This was at the beginning of the month, up in Edinburgh. It was definitely good to catch up with people I haven’t seen in a while as well as put faces to the names on all the blogs I skim. There were a few good sessions in there too and I’m actually looking forward to some of the improvements in ColdFusion 8. The Thursday night was suitably alcoholic as well 🙂 I’m surprised at the how small the UK ColdFusion community actually is, and I’m very grateful for the demonstration of Adobe love we had by their sending over of Tim Buntel to talk to us.

Future Geekery

No more geek things for a while now, although looking at my calendar there are quite a few coming up: hopefully I’ll be able to make the next London Flash Platform meeting in July (I’ve had three collisions in a row now, Whitby, Scotch and now Glastonbury); I’m still toying with 360Flex:Seattle in August, although the airfares are not cheap and work won’t pay my costs; September is BarCampBrighton, which currently is currently oversubscribed by at least 3:1; November is FlashOnTheBeach, this time around I’m planning not to have any conflicting deadlines to deal with.

Lesson Learnt

This weekend, while travelling to a cheesy club night in Islington, we ran into three men who were dressed up as the Ghostbusters. Not only did they have the suits, they also had realistic inflatable packs as well. We tried to convince them to come along, promising them that likely as not get they’d free entry and everyone would think they were awesome, but they declined. And of course, 20 minutes after getting into the club, the DJ played Ghostbusters by Ray Parker Jr.

Sometimes life hands you opportunities, almost into your hands. I think they really missed one of them there.

This weeks' model

Since chatting with Peter Bell at 360 Flex, I’ve been doing a lot of thinking about the base model for my Flex-and-ColdFusion Intranet application, “Stream”.

This application was pseudo reverse engineered from a Visual Basic application and has nearly 200 tables of inter-related data – mostly without primary or foreign keys, but that’s another story entirely. For a long while there has been no clear and overall model of the application. The tables and views were mostly responsible for driving the application but there is still a lot of business logic tied up in various peoples’ heads. This is obviously not an ideal situation, as it dramatically raises the bar of entry on this project for any other developers.

As a direct result of the planned migration from Flex 1.5, to new-and-improved Flex 2.0.1 (including the usage of Flex Data Services), I now have to rework the ColdFusion tier. This seems like a good time to rethink how the application works, apply some consistency to the application as well as build up a global model to develop from. Hopefully there will also be a page or two of documentation. 🙂

When working on “Version 1” of Stream I spearheaded the generation of a lot of the code on for the ColdFusion and Flex tiers, which included various parts of code for usage with Cairngorm in Flex as well as unit tests for ColdFusion. However this code was fairly brittle and an increasing number of complicated edge cases meant that eventually the generation was one-time only. The result of this was that this was barely better than no generation at all.

So for the last few weeks, I’ve been playing around with ideas for the new model and how to generate code for the three effective tiers – ActionScript, ColdFusion and database (accessed via an ORM). This is resulting in an bespoke generator application that I’ve named Dynamo. But code generation is only a part of the purpose of Dynamo. The source for my model is the database, so obviously I’ll need to validate my model against this – checking usage of fields and automatically using the database as the basis for any typing information; and as the end result of the application is to display these fields in a Flex UI, I need to validate that I am using all the fields required for each part of the model. This combination of techniques should allow rapid development based on our existing data while dramatically minimise the number of errors caused by missing fields, typos or incorrect data types.

For the generation part of Dynamo, after much thought and reviewing of options I’ve fallen back on an old favourite technique – using XML for the model and XSLT for the generated files. Based on ideas from Peter, I was originally intended to put all of this model meta data into the database itself. However after some initial attempts at putting a hierarchical data model into a database, I realised that I was overly complicating things and that the “simplest thing that could possibly work” was to work with an XML file for the time being – if required later I can always rework my model code to use a database. One drawback with using XSLT is that many people find it complicated and difficult to work with; at some point I’ll replace this with a simpler templating method.

However, one big advantage of using XML and XSLT is that I can incorporate this into my ant build script so that all of the generated code is created when “Stream 2” is compiled and deployed, and the generated files are not checked into source control. This keeps the focus of change entirely on the model and the templates, not on the generated files themselves.

Ideally I’d have a dynamic and active generator – change my model, next request all the changes are reflected. The problem is that I need my VOs for ActionScript to be generated to be compiled into my application, and ColdFusion requires physical files to automatically translate classes to ActionScript. As an aside, I was talking with one of my friends who works in the finance industry and when I told him I was using XML and XSLT he embraced my like a brother exalting the virtues of XLST programming. But when I told him I was generating my code, he became disgusted and seemed to want to pray for my eternal programming soul 🙂

These are still early days, but I’ve switched back from focusing on Dynamo to Stream -which of course was the whole point of this whole exercise. I’ve now started wiring up a number of screens, and apart from the occasional typo or missing field (which is why I need to validate), the development is proceeding rather quickly.

[Addendum: a few weeks later]

The base idea behind this modelling has worked really well – I was able to wire up a lot of screens with data, in rapid succession, with only a small amount of code required – the rest was generated. I’d like to componentise more on the Flex side, but so far the ColdFusion side is working well. However, I’m yet to need to customise the ColdFusion code – and this is where generated code tends to fall over. Dynamo at the moment is sliding away from being a separate application, and may end up being tied into the main code-base of Stream. One unfortunate and unforeseen side effect of this generation system is that I now need to generate my code for the application to work – otherwise there is no base ColdFusion components to handle data accesses. This means that my build times in CFEclipse are in the realm of 20 seconds – hardly ideal.

Alpha Resurfacing

Well, its been a very hard month or so of work, but last week I finally managed to get the first alpha release of my Intranet project released. It’s still quite a bit rough around the edges, but it works as more than just a proof of concept.

And as far as all the cool buzzwords go, I’ve got Flex Data Services, Remoting, XML and ColdFusion on the server side; a SWC for the UI customisation; a specialised data component to automatically connect to FDS objects, and on edit validate and then auto submit the form; and of course a one click build from source to deployment. Not too bad, even if I do say so myself.

There are still some hurdles to work out,  and there’s a lot of data integrity problems to be fixing, but its finally all coming together properly.

Tomorrow I might even hit “publish” on some of my outstanding blog posts 🙂

360 Flex in summary

I’ve been back from San Jose for a few days now, but I’ve been too caught up with resuming my London-life to post a review.

360Flex was awesome. Without a doubt the best conference I’ve been to. Good choice of venue in eBay, the conference itself was well organised, even in the more basic sessions I learnt something, there was a lot of tasty breakfasts and lunches and of course the requisite range of intelligent speakers. The area around eBay’s campus was devoid of pretty much anything, but it was made up for with the suitably warm and sunny weather of California.

  • Most animated speaker: Jesse Warden demonstrating Flash and Flex Together
  • Coolest demonstration: Mapping Components by Mansour Raad, demonstrating ESRI’s about-to-be-released mapping components for Flex 2.
  • Most annoying clash: Building Apollo Apps vs Mapping Components vs Model Driven Integration
  • Most illuminating speaker: Ely Greenfield presenting Making Components
  • Best meal: Tuesday nights BBQ Chicken
  • Most hungover: Ryan Stewart

And, of course, I put lots of faces to names and met a lot of new friends.

Very much looking forward to the next 360Flex, Boston or otherwise.

BarCampLondon2 – Visualisation Presentation

Introduction

This is a reworking of my session at BarCampLondon2. I started about 5 minutes late, which means I ended up zooming through the following links at a rate of about one per minute.

Historical


Charles Minard – Napolean’s Russian Campaign of 1812
This graphic, first published in 1861, contrasts the size of the French army on the attack and retreat parts of the campaign, and also compares the temperatures faced by the troops on the retreat.


Florence Nightingale’s Causes of Mortality in the Crimean War
This chart was used by Florence Nightingale to show the government the true causes of death during the Crimean war. The graph is not the clearest, but the blue area represents deaths through preventable disease, red is death through wounds and black is all other causes. Its fairly obvious what the main cause of deaths were.

Common


Weighted List
The weighted list is a fairly common technique. used on del.icio.us, flickr, and the example used here is from 43Things. The more popular an item is the larger it’s size is – this provides a quick and easy way to determine popularity.


O’Reilly Treemaps
Tim O’Reilly uses Treemaps to analyse the ups and downs of the computer book industry. Treemaps display hierachical data using areas of comparable size, thus highlighting disproportionate areas and in this example enables easy comparison of shifts in the market place.


Newsmap
This interactive Flash application compares news articles sourced via Google News. Using brightness to indicate freshness, and colour to indicate grouping, the actual relative popularity of news stories can be seen.


Sparklines
Not all data visualisations need to be complicated. Sparklines are a streamlined view of one set of changing data. The example here compares the performance of the stock market, other examples include things such as comparing winning and losing streaks for a sporting team.

Elections


US Election Results – Red vs Blue States
After the recent US election, maps appeared of ‘Blue’ vs ‘Red’ states – this site looks into greater detail the ways of representing this data displaying the influence of population, and the middle ground of purple, as opposed to pure Red and Blue.


Californian Vote Distribution
This site applies some statistical normalisation to results of the Californian Gubernatorial elections and then reworks the map of California to draw insights from the original data.


UK Election Shift
This interactive Java applet shows the shifting of seats that occurred during the recent UK elections. Seats that have become more marginal shift away from the edges and gains and losses are represented by seats migrating into a different section entirely.

Travel


Travel Time Maps in the UK
In these sets of UK maps, coloured contour are are applied to represent the time taken to travel around the UK. Both train and car are contrasted, showing a slightly asymmetric map of travel times. Journeys within Cambridge and London are also displayed, highlighting comparatively unconnected areas of both cities.


Travel Time Maps in Europe
These maps use map distortion to compare rail travel times in around Europe in 1993 and 2020.

World Data


Worldmapper
Worldmapper applies changes to the size and shape of countries based on various data sets to produce distorted maps. Population, economic wealth, air passenger numbers are all vary easily compared across the world. They have produced nearly 300 maps so far, all of which are available in PDF poster format.


World Processor
World processor doesn’t constraint itself to size and shape – it applies images on top of the existing globe of the Earth, changes the topography or removes countries entirely. Not all the examples work well, but those that do highlight the usefulness of this technique.

Others


Data Fountain
The data fountain shows that not all visualisations need to be software. This installation contrasts the relative worth of the Yen, the Euro and US dollar with the height of their associated fountains.


Suicides on Golden Gate Bridge
This infographic shows the reported jumping point for people committing suicides based upon witness and surveillance footage. People are more likely to jump facing San Francisco, than the Pacific Ocean, and light pole #69 is by far the most popular.


Quantum Level Particles
This page demonstrates some conceptual items for representing quantum particles, and their combinations and interactions. While it isn’t ideal, it is an interesting and different way at looking these things.


Circular Calendar
This poster size calendar is designed to be drawn upon. Events and journeys can be non-contiguously marked, and collisions in time can easily become highlighted.


Family Wheel
An interesting look at the family tree, this technique transforms branches into slices of a circle. It is, however, unlikely to be clearer when common ancestors are found.


Lightweight Data Visualisation in Excel
Not all data visualisations need to be complex. This technique for Excel creates easily comparable data using only conditional formatting and a simple command to repeat characters.


Multi-Touch Research
While not quite a visualisation method, this technology – coming soon in the new iPhone – looks to provide a real world interactive with data on screen. The video provided by this research group at NYU shows some quite amazing ways of working with information on the screen.

Resources


Edward Tufte

Tufte is a legend in the field of data visualisation and his books are well worth a read for anyone interested in this topic. He also runs courses on this subject, but unfortunately they seem to be US only.


Periodic Table of Visualisation Methods

While this list is inherently flawed, due to its shoehorning of the Periodic table into comparing visualisation methods, it has some use however, in detailing a large number of techniques, both simple and advanced.

Blogs

information aesthetics and visualcomplexity

I didn’t get a chance to mention these in my talk, but I felt it worthwhile to include them here. Information Aesthetics is a site focused entirely on data visualisation and is a fantastic resource on the subject while VisualComplexity is focused more narrowed onto the domain of complex networks with over 400 examples of different representations.

Conclusion
I think this is a really interesting field of work, getting into the heart of what computers should be used for – making ideas and information clearer to the end user and providing insights which were not previously perceivable.

Feel free to comment below with any additional examples you have found, and without a doubt the visualisation category within my del.icio.us links will continue to grow.