Next up was Rupesh Kumar "All about cfthread" which focused more on how hard it can be to write safe multithreaded code than "cool" examples so it was very educational and it means I need to go back and rework part of Edmund to cover some edge cases I'd missed. I'll probably blog more on this in due course since several folks were pretty confused about why Rupesh's examples "didn't work".
After lunch I went to John Farrar's talk about jQuery which showed how easy it was to use and how powerful the selector syntax can be. It was a good intro talk and after several of those for jQuery, I think I'll be ready for more advanced jQuery stuff at the next conference.
Finally it was Joe Rinehart's "From ColdFusion to Flex: Model-View-Controller" which looked at apply MVC principles to structure Flex applications with some simple "no framework" suggestions for organizing code. About the right level for me with my lack of Flex skills at the moment.
And then that was it, CFUNITED was over for another year!
I chatted to John Zhu (ChinaOpen organizer) for an hour then headed back to my room.
I'll write a summary of CFUNITED shortly but, briefly, I enjoyed the networking, I wasn't thrilled with the convention center location, I went to just eight sessions - but there were only two others I wanted to see (I don't really come for the content tho'). More later.
The one session of the day I intended was Elliott Sprehn's "Internals of the Adobe CF Server" which was absolutely incredible! Elliott clearly has far too much time on his hands and has done some amazing detective work to learn about many of the core classes inside the ColdFusion runtime and how to use them.
He explained in some depth how several CFML code constructs actually work at the Java layer and how to do some very cool things with them. One example was passing your own "local scope" into a function call and then using it to examine what local (var scope) variables were set inside the function after the call. He also showed how to invoke most CF tags from CFScript so that, for example, you could throw a custom exception (by creating an instance of the ThrowTag, setting some properties and then calling doStartTag() on it).
Make sure you download his slides and code once they become available.
For me, this was the most interesting talk of the conference so far.
So, again, a day short on sessions but ultimately rich in networking and developer discussions. Next, dinner, drinks and maybe an interview for the CFConversations podcast.
The "breakfast" was a few croissants and some fruit and juices and a thinly veiled pitch from TeraTech for their services. Luckily only a handful of managers actually wasted their time attending.
Next was TeraTech's opening "keynote". It's always the most painful thirty minutes of CFUNITED. Michael Smith is a nice guy but he really doesn't understand what a keynote is meant to be about. At least he didn't mention FLiP for a whole 22 minutes this year (last year seemed to be a pitch by TeraTech for Fusebox and their services and a lot of attendees were pretty annoyed by it).
Then Ben Forta and Adam Lehman took the stage and, after about half an hour of the usual "good news" about the state of ColdFusion, they launched into the meat of their presentation: announcements and then new features that "may or may not be in" the next version of ColdFusion that "may or may not be called CF9".
First off, the announcements:
- ColdFusion will be free to students and faculty in much the same way that Flex Builder is today. The exact details are still being worked out so watch the Adobe site for more news.
- The CFML Advisory Committee. I've already blogged about this and will be blogging more over the next few weeks.
Next, the features (for "will" read "may"):
- <cfscript> will be enhanced to allow functions (both UDFs and CFC methods) to have access declarations, return types and arguments. A new component syntax will also allow entire CFCs to be written using <cfscript>. The applause was somewhat belated but I'm very pleased to see this coming!
- A new scope local will be added to functions make it easier to deal with local variables. You will be able to declare variables with var anywhere in a function (not just at the top). You will be able to specify the default scope for unscoped variables via <cfsetting>.
- We're getting <cfcontinue> as a tag (we've had it in <cfscript> for a while) and we're getting finally and <cffinally> to make it easier to deal with exceptions.
- A new keyword (as an alternative to createObject()) and an import keyword to make CFCs accessible to new - just like Java / ActionScript. Some sort of implicit constructor will also be added.
- Tired of writing all those "best practice" getters and setters? CF9 will have implicit getters and setters auto-generated based on <cfproperty>.
- A Server.cfc will be added to allow for onServerStart() and onServerEnd() handlers in addition to the current application model.
- AIR integration will be improved (I didn't catch any details that were given). They showed some MXML containing <cf:...> tags that defined a datasource and SQL queries that will somehow handle automatic synchronization of data between online and offline operation.
The final feature shown - the "big" feature - was deep integration with Hibernate, the de facto standard Java Object-Relational Mapping engine, so that you can simply specify orm="true" and a datasource on a <cfcomponent> tag and then you can load and save that object against a database table of the same name as the component. More enhancements to the <cfproperty> tag will allow finer control over what parts of a CFC are mapped to what parts of the table in the database.
I think a lot of people were a bit bewildered by the Hibernate announcement because they're not using CFCs yet but I think it has the potential to drive CFC usage by making database access even simpler than ever.
After the keynote, I went to Shlomy Gantz "10 Steps to Ruin a CF Project" which was a wonderfully humorous look at why projects fail. Shlomy told us not to test, not to document, not to plan, not to have a process and so on, illustrating each point with real experiences from his project management consulting past. He said he'd trying telling people the right things to do but it never seems to sink in so he's become bitter and wants to try reverse psychology instead. It was a great session and really brought home the important messages.
During lunch I got caught up in conversations and missed the next two sessions (including Bill Shelton's which I really wanted to see). I popped into the speaker ready room to say "Hi!" to Peter Bell and Joe Rinehart but then Brian Meloche and the cfconversations crew arrived to interview Gert Franz of Railo so I ended up in there for another hour (it was a fascinating interview / roundtable - watch the CFConversations podcast for this episode to appear).
I skipped the networking event (again, a guest pass was $150 for the networking event and the special event and that certainly wasn't worth it) so I had dinner with my wife and then we hung out in the bar with a good crowd.
Since the first session was at 8:15am and there were only two sessions before the HostMySite keynote, I slept in and went over to the Convention Center for lunch. Sandwiches and the usual lack of sodas and coffee (more on that below).
Then it was my Event-Driven Programming talk at 1:30pm. It was a packed room but the presentation went too quickly even with additional examples. At least I got a good number of questions this time and not as much of the stunned "deer in the headlights" looks that prevailed at Scotch. I'll see if I can improve it for Saturday's repeat (first thing in the morning - ugh!).
Next I went to Hal Helms "Changing the Game" which started with Clark Valberg introducing the "outsourced" Hal Helms (Ajay from TeraTech) to prove the point that if you build up a good relationship with your clients, being outsourced is less likely (the audience chanted "We want Hal! We want Hal!"). The talk covered material that will be familiar to listeners of Out Loud but it's always good to hear Hal give advice and talk about his experiences.
Last up was Alan Howitt's Amazon EC2 talk. He covered a lot of ground and showed a lot of tools so it was a bit frantic and he ran over but it's really good to see cloud computing exposed to more people. He talked through four uses (temporary servers, permanent "general" servers, web servers without persistence and web server with persistence), explaining the pros and cons of the elastic cloud computing approach and how to leverage the S3 storage system.
I headed back to the hotel and then went to dinner in Cure, the outrageously overpriced bistro / bar in the Grand Hyatt, with a bunch of folks and several of us got stiffed on the bill because the (very slow) wait staff seemed unable to deal with multiple checks.
I skipped the special event because TeraTech wanted $150 for a guest to attend and that seemed outrageous. After chatting to Dana Tierney and Judith Dinowitz in the lobby for a while, I headed up to my room to blog. My wife's off doing legislative work this evening.
So far I haven't managed to snag a coffee at the Convention Center, nor have I managed to grab a morning or afternoon snack. There just aren't enough of either put out for attendees nor is there enough lunch it seems. I heard several folks complain about food running out and the unionized staff don't seem to care. I have lots to complain about with the Convention Center but I'll save that for another entry.
The platform is powered by ColdFusion 8.0.1, running Model-Glue 2 (BER), ColdSpring 1.2 BER and Transfer 1.0 BER and runs on a cluster of 64-bit Linux servers with synchronization of the Transfer cache managed through a set of ActiveMQ JMS server instances. The database is MySQL.
We're continuing to work on a stream of minor releases as well as planning our next major release with a lot of new features.
I'll be pulling together some presentations and articles about how we're using the frameworks together (because I think we're doing some interesting and unusual things, behind the scenes). I'll some a few snippets of code at Scotch in both of my presentations (and again at CFUNITED). I'm talking to the CFDevcon organizers about appropriate topics and they suggested a framework-related session so that might be the first unveiling of some of our ColdSpring / Transfer tricks and tips. I expect Ray will also be blogging about some aspects of our application architecture in due course.
Feel free to sign up for a free Broadchoice account and see what we've been up to! Our support site (also powered by the Broadchoice Web Platform, as is our public website - we like to eat our own dog food!) has several ways for you to provide feedback to us!
So come along and hear me talk at 1:30pm on Thursday (6/19) or 8:30am on Saturday (6/21)!
$3,800. Ouch!
That's return flights for me and my wife for SFO/LHR and SFO/DCA. With cfDevCon later in the year, plus several more cat show flights to book, at least we'll both be Premier flyers on United next year!
See you at cf.Objective() in early May? Or Scotch in early June? Or CFUNITED later in June?
By the way, today is the last day for the guaranteed hotel price for cf.Objective() so if you haven't registered and booked your hotel, you might want to get on that tonight!
We're starting to see a lot of interest in event-driven programming because Flex demands it, AJAX uses it to some extent and some popular application frameworks use this approach (ColdBox, Mach-II, Model-Glue). This talk looks at expanding this technique to other aspects of ColdFusion programming. If Flex looks alien to you, this talk should let you get your head around the techniques in a familiar environment, helping you get ready for Flex.I've also submitted this to Scotch on the Rocks 2008.
I submitted a second topic to CFUNITED 2008 (and Scotch on the Rocks) that covers dynamic programming techniques. I don't know whether that will be accepted for either conference but if it isn't and there's enough interest, I may go ahead and write it up for user groups or online presentation.
- Tony Hillerson - Offline/Online Features of AIR
- Charlie Arehart - Hidden Gems in CF8
- Michael Smith - Using your Whole Brain for Developers
- Paul Kenney - Test-Driven Development with ColdFusion
- Sean Corfield - Design Patterns and ColdFusion
- John Paul Ashenfelter - Pragmatic ColdFusion: Build, Test, Deploy
- Matt Chotin - Introduction to Flex with ColdFusion
The speakers are Charlie Arehart, John Paul Ashenfelter, Michael Smith, Simon Horwith and, from Adobe, Paul Kenney and Matt Chotin. Matt will be giving an introduction to Flex for ColdFusion developers. Oh, and me.
Remember that you can use the cost of CFUNITED Express as a discount against your CFUNITED 2008 ticket!
CFUNITED Express comes to the Bay Area on November 9th at the JW Marriott in San Francisco. Speakers include Charlie Arehart, Michael Smith, Shlomy Gantz, John Paul Ashenfelter... and me!
If you register before October 31st, you can use 100% of your registration toward CFUNITED 2008 (just 50% after that).


