Category Archives: Flex

360Flex:Milan – The Good Bits

Oh yeah, things I liked.

  • USB key – much better idea for handing out presentations and sponsor pamphlets than anything else I’ve seen. I’d love to see this managed via a plug-in/pull-out uber-lightweight terminal, so that Tom and John don’t have to spend all their bar time, slowly updating USB keys
  • Michael LabriolaDense and Hot – An Introduction to Your Application’s Start Up – this was the sort of detailed examination I was expecting from 360Flex. I would have liked it to have gotten even denser 🙂
  • Dan ThomasDeveloper Best Practices – I liked how this effectively turned into a conversation with all the attendees in the room. I tend to see sessions less as lectures and more as severely one sided conversations, so it was good to be able to converse back and forth with various people their points of view.
  • Finally, Milan, whilst not being to my taste (I care not for fashion), is remarkably centrally located for pretty much all of Europe – less than 3 hours to most of Europe.  While I’d prefer the Eurostar, I don’t think it quite stretches out to Romania.

360Flex:Milan – A Critical Review

Firstly, I should note that I believe in the 360Flex concept. I flew all the way to San Jose to attend the first one, and even purchased replacement plane ticket when the first one went wrong due to booking complications. I was the first person to buy a ticket for 360Flex:Milan, before the tickets were even publicised. Also, I can see the need for a purely technical conference in contrast to more designer focused conferences. And finally, I can only commend their complete and utter transparency towards all aspects of their business including traditionally taboo subjects such as money.

Secondly, I should note that there are two factors that were completely outside the control of the 360 Conferences team:

  • OnAirTour conflicts – It is really unfortunate that Adobe scheduled the Brussels and London legs of the OnAirTour when 360Flex was in Milan, and the Milan leg for several months later. This is in complete contrast to the way Adobe arranged the USA OnAirTour which coincided the Atlanta leg of the tour not only with 360Flex but also with the Flex 3/Air 1 release date.
  • Heathrow Terminal 5 – Even British Airways and BAA didn’t expect the complete shambles that was the Terminal 5 launch. John Wilker mentioned that they were expecting merchandise, such as session posters that have been lost within the disaster that is the baggage system of Terminal 5 – up to 15 000 bags have been misplaced so far.

However, with those mitigating factors out of the way, in my opinion 360Flex:Milan was a failure. Financially by their own figures revealed in the keynote, they lost about EUR 9 400 (EUR 15 900 with refunds issued for the first day). As far as the conference itself went, I don’t think it worked either – and it certainly did not meet the high standards already set by previous 360Flex incarnations.

There were minor problems with things such as Internet access, buffet food or even bottomless coffee, but you can always have those sorts of problems with any organised event. Specifically, as far as the conference went I feel there are three main areas where Milan did not match up to previous conferences: speakers, attendees, and less importantly, added-extras.

  • Speakers: Previous editions of 360Flex had a breadth and depth of world class speakers, talking on topics from complete entry level to extremely advanced. 360Flex:San Jose in particular benefited from being near the head quarters of EBay, Google and of course Adobe, but even the other US based variants were able to leverage a good cross section of speakers. 360Flex:Milan on the other hand had very few advanced sessions and a plethora of introductory ones.
  • Attendees: The attendees that did turn up were good value. It was good to see people from all over Europe – I met people from Croatia, Romania, Italy and Switzerland – however there simply weren’t enough of them. By my rough count, there were only about 100 people at the keynote on the first day. While this did make the conference more intimate it also dramatically reduced the critical mass for cross pollination of ideas and networking opportunities.
  • Extras: Finally, one of the things 360Flex has become known for are its added extras. For example, at Seattle, there was an internal video system, FlexTV, rebroadcasting sessions from throughout the day and at Atlanta, they gave away free training and copies of The Cluetrain Manifesto. Milan didn’t have any of those sorts of extras – sure, they made the first day free but I have to say that this really felt like a last minute attempt to boost numbers, and it did not have any direct benefit to existing attendees.

These three issues, in my opinion, boil down to problems with speakers and advertising. Speakers directly drive attendee numbers – attendees go to conferences to see speakers’ sessions. Attendees know about the conferences via some form of advertising, whether grass-root or more traditional. And of course, with enough paying attendees there hopefully can be enough of a profit to be able to have nice-to-have added extras.

On the final day of 360Flex, I noticed the large amount of Twitts from world touring UK based speakers attending the OnAirTour event in London. Why didn’t these people attend at least the first 2 days of 360Flex?

In a similar vein, why did I not hear any official mention of 360Flex:Milan at either the London Flash Platform or Flex London user groups? The London Flash Platform group has attendances between 50 and 100 people every month. The Flex London user group has 428 people signed up for the MeetUp.com group, a good proportion of whom are UK based. Where were these people?

I can only assume that the decision to only partially compensate speakers for their expenses meant many European speakers were unable to attend. I personally know of one speaker who decided to dramatically cut down on speaking engagements and concentrate on direct paid work, due to the amount they were out of pocket through speaking at conferences around the world – I fund all of my conference attendance directly out of my own pocket, so I can complete appreciate their position. And as far as US based speakers go, at least one of the scheduled ones was unable to attend, simply because his company just didn’t do business in Europe.

I can also only assume that 360Flex:Milan was not publicised as widely as it could be. Whenever I spoke to other Flex and Flash developers about attending 360Flex:Milan, I was either looked at in surprise, or they hadn’t even heard about it (and then I gave my spiel based on my experience as San Jose)

360Conferences stumbled a little when it came to Milan – I certainly don’t feel that the 360Flex team put as much effort into advertising and organising 360Flex in Milan, as they did for Seattle or even Atlanta. The sad  consequence of this of course is, using their own numbers released in the keynote, if they’d managed to increase the number of attendees, then they probably would have ended up in profit, and other benefits would have flown from that.

In summary, I think that the core idea of a transparent, developer based, community focused conference is a good one. I also think that in Europe at least, the rest of the equation (speaker policy, choice of on-site location and subsequent costs, advertising) needs some reworking.

Sadly, I’ve now changed my opinions of 360Flex conferences. SanJose:2008 has too many things in its favour not to succeed – but my conference dance card is now full up for the year. I might attend Europe:2009, but I certainly won’t be signing up on day one, sight unseen.

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.

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.

The confusing land of FDS and CFCs

Things, that so far, seem to be true:

  • FDS invokes CFCs independently of webservers and virtual hosts
  • CFCs therefore require cfmappings
  • As do frameworks used in Application.cfc
  • Without these mappings, there will be confusing errors, stating the CFC is not found
  • ServiceCapture is unable to detect FDS transmissions due to the complexity of proxying such a thing
  • There are still silent failures, but there are a number of logging types that can be enabled (and it is then easy to drown in all the noise)
  • Always remember , without the <cfproperty> tags, no translation of types will occur