cf.Objective(ANZ) 2009 Recap - Part 2

I managed to do a short jogging along Yarra River in the morning – it was very lovely.

These are the summary of the sessions that I went to on day 2 as well as my personal reflection.

ORM basic to advance – Terry Ryan

I admit I haven’t even tried the ORM capabilities in ColdFusion 9 (or any of the new cool features of CF9) – I just haven’t got time to look into yet. So I attended this session with a healthy dose of enthusiasm.

Terry started off by giving few quick reasons why people might want to consider using ORM in their apps. According to him – at the end of the day, developers just want to write less code (amen to that!) and an ORM will help to achieve this.

Terry went on to show some simple example (thinking to myself – hm this really looks like a Transfer app). He then moved on to explain Join Mapping, Inheritance (this is very interesting, I guess this is one of the main reason of having an ORM – object-relational impedance mismatch?), Transactions, Caching, Event Handlers, HQL, Database tricks, Naming and Fetching Strategy and ORM vs CFQUERY.

He really covered a lot of ground in his session, I was quite overwhelmed with the information and yet at the same time I excited to learn more about this Hibernate beast. Apparently Terry is going to have the slides available somewhere – make sure you have a look.

ColdFusion, LiveCycle and SOA – Mark Szulc

LifeCycle is yet another Adobe’s great offering that I personally never look at or have experience in.

In my limited understanding of LifeCycle and from Mark’s presentation – it looks like LifeCycle is a software for implementing business processes, you can read the proper definition of LifeCycle either from Adobe website or wikipedia entry on LifeCycle.

Mark shown an example of a company hiring process, which is quite interesting to me as this process one of things that we do in my previous company (we call it Requisition process). So I watched this session with a renewed enthusiasm :)  It’s very interesting to see how the process can be mapped out and built quite easily (and self documented) in LifeCycle – you have to see it to believe it – create process diagram here and there, attach actions to them and bam – your app is built.

I’m a bit lost on where the ColdFusion fits with LifeCycle – I think it’s in the fact that LifeCycle can talk to ColdFusion and vice versa via web services – and hence the service oriented architecture (SOA)?

My thought on this, if at my previous workplace we spent weeks to code this hiring process application workflow in ColdFusion and now it looks like LifeCycle can produce the same outcome in shorter time and more elegantly – will it make us the ColdFusion developers redundant??? :)

Mark has provided the slides on his blog: cfObjective presentation – ColdFusion, LifeCycle & SOA.

Adding Bling to your CRUD – Kay Smoljak

Kay Smoljak presented on few User Interface features of ColdFusion such as CFFORM, CFGRID, CFWINDOW etc2 and how to extend the functionality of these tags by writing your own custom JavaScript functions. She gave some “real world” (if you were there – you know what I mean :) ) examples on how by using these tags you can pretty-fy your list pages and add/edit pages easily.

She gave a warning about the compatibility issue when moving your custom JavaScript functionality from ColdFusion 8 to ColdFusion 9 – mainly due to the fact that ColdFusion 9 uses the newer version of ExtJS library.

She also warned us about the accessibility and performance issues related to using these.

Quite interesting session – especially as I haven’t really looked at User Interface tags in ColdFusion – it looks like they are easy to use and to extend.

Masters of WAR – Mark Stanton

First slide says: Don’t try this at home! Mark warned us that the deployment approach that he’ll show us is an approach that takes a lot of work and lots of time, but will pay off in long term.

Mark basically basically described an automated deployment approach (automation provided by ANT) whereby every ColdFusion applications are deployed as separate WAR (Web Application aRchive) – which means each of every applications have their own ColdFUsion instance – as opposed to the traditional approach of multiple applications on 1 ColdFusion instance.

There are few reasons on why you want to consider approach like: sandboxing (need to restart one client app – other clients’ apps not affected), better control for memory allocation for instance allocating fewer memory for admin. The other good thing is the app including the CF server configuration can all be versioned.

Mark slides on the presentation can be found here. Very interesting approach – never thought of this before – definitely will not try this at home.

ColdFusion Clustering – Mike Brunt

First thing that Mike said : If you have an Enterprise ColdFusion on 64 bit machine – install it as an Multiple Server install – otherwise you are losing advantage of it. Apparently this is very important and not properly documented.

Mike talked about Java Virtual Machine (JVM) briefly – the point he’s driving at is JVM is the heart of ColdFusion – it has 185 arguments that you can pass on, so it’s very configurable but also at the same time it means no one JVM config fits all – you need to know how to tune JVM for your own server.

Mike argued when people talk about load balancer they really talk about clustering as the most important usage of clustering mechanism is to have backup device for fall over rather than balancing the load (this is a secondary benefit). Database is the most important piece of application that needs to b

Mike then took us through load testing a website using a tool called Web Stress Tool (if I am not wrong) and then look at ColdFusion monitoring tool – SeeFusion (he also likes FusionReactor).

Unfortunately, I couldn’t remember much about the rest of this session - looking back on my notes, I couldn’t make sense most of it :( so I’ll just wait for Mike to post his slides on SlideSix.

I have to admit, I have very little knowledge on server performance monitoring and tuning so I am really glad on coming to sessions like this. Now I get a better understanding on what goes on under the hood. And at least I know whom should I refer to whenever people ask me about ColdFusion performance issue.

Using Java Domain Layer with ColdFusion – Jamie Metcher

Jamie discussed an approach that he used to use Java POJO for his domain models in ColdFusion.

Jamie firstly explained the reasoning behind his decision on using Java, some of them are: fewer implementation compromises, he’s free the design his domain model without having to consider ColdFusion restrictions (such as performance issue?), the domain model can be deployed on different platforms not tied to ColdFusion, Java so many tools and frameworks.

For his domain models in Java, Jamie uses Hibernate and Spring combination.

There are many gotchas using this approach (it sounds like another “don’t try this at home”), but Jamie assured us that he’s not trying to scare people but to show the gotchas so that when people do come across his problems they know how to handle them.

Some of the gotchas that he talked about page lifecycle problems, distributed transactions, thread local, classLoader globals.

On most of these gotchas, the main problem seems to be that you cannot rely on ColdFusion for cleaning up your Java side of things (Hibernate sessions?) – for example: onRequestEnd() is not called on cflocation/cfabort, so you cannot rely on your cleaning up code on this function.

The solution that Jamie used is to use Java on the servlet level – so you don’t call Java using ColdFusion’s createObject function but using applicationContext instead. If it doesn’t make any sense, please check Jamie’s blog posts: cfObjective(ANZ) presentation and cfObjective(ANZ) demo code.


I love this conference, true that sometimes I feel out of my depth – but that’s the whole point of coming, to learn new things and realize how n00b I am!