CFDevcon 2008, Brighton, UK

July 21, 2008
We just completed our first mini-conference in-house and it was an exhausting - but exhilarating - three days. We flew our remote developers into the Bay Area and had three days of sessions, with evening social events, just like any number of conferences we've all attended.

Friday focused on company vision - both business and technical - kicking off with a keynote from our CTO, and then Saturday and Sunday were deep dives into architecture, system integration, user interface design and process & communication.

As a company that has a number of remote engineers, we feel this is an important way to help everyone get on the same page and to encourage intense interactions and information sharing. We're going to try to do this twice a year from now on.

As a result of these sessions, we're also going to be making some changes to how we manage communication internally to help remote folks stay connected (e.g., more video conferencing, more screen sharing when working on projects, regular but brief cross-company conference calls to share business and technical news, increased use of internal blogs).

Does your company do anything like this? How do you work with your remote team members?


July 16, 2008
Although we've been relatively quiet since the announcement at CFUNITED, I wanted to let folks know that the CFML Advisory Committee are working away in the background. After that announcement, Ben Forta posted his thoughts on the committee but there haven't been any other public utterances about the committee by its members.

We're working on a number of things.

  • We're drafting a document that will outline what cfscript features, tags and functions we believe to be "core CFML language".
  • We're also going to draft a document that gives guidance on adding new features in a consistent manner - attempting to define the essence of "CFML-ness".
  • We're in the process of setting up a website that will have a wiki where we publish our documents and discussions as well as a blog where we make announcements and, more importantly, ask the community for feedback on issues we are considering.
We're considering a Birds of a Feather session at MAX to discuss things with the community as well, very much as an interactive, two-way discussion.

There are also ongoing discussions with the Open BlueDragon team to see if we can bring them to the table.

Hopefully we'll have more to share on all of this in a week or two.


July 15, 2008
So I said I'd post an off-topic piece about my trip to Vegas. If you don't like off-topic stuff, stop reading :)

[More]


Update: Bob just added Part VII so I'm updating this post to include that.
For ease of reference I just wanted to post a quick note highlighting Bob Silverberg's excellent series on using Transfer ORM and OO architecture: If Bob adds additional pieces, I'll update this post with his new articles.

There's a lot of good information here although it may be a bit overwhelming on first read so be prepared to keep coming back to these posts!


In case you can't stand another month without a conference - or you're "down under" and want something local instead of constantly commuting halfway round the world - you should check out Web on the Piste 2008 which offers a great selection of RIA-focused talks over two days in August, which is mid-winter in New Zealand so you can get in some snowboarding while you're there (or skiing if you're that way inclined - weirdo!).

I haven't made it to WotP yet but given the atmosphere and buzz at MXDU/webDU, I'll bet it's a great event - the aussies are a terrific bunch and there is so much hardcore RIA work going on down under!


Intermediate Uses of CFCs - Nolan Erck

7/16/08 6:30 PM for networking; 7:00 PM for the main event; pizza sponsored by Internet Media Inc!

Adobe San Francisco - Kojak

Nolan Erck returns with part two of his series on ColdFusion Components (part one was our April talk). If you're ready for the next step in learning OO with CF, this talk's for you! Directions

601 Townsend St, San Francisco, California 94103


Just a quick post about everyone's favorite blog topic: the updated firmware for the iPhone and the new AppStore.

I was away in Vegas (more later!) so I missed all the trauma/drama that some people suffered. I updated my iPhone yesterday with absolutely no problems and my wife updated hers with no problems either. Yay! So it reset my home page layouts (boo!) and reset my default ringtone (grr!) but otherwise it was very smooth.

So then I went off to the AppStore to see what was useful / interesting:

  • AIM - 'nuff said! I'm seancorfield on AIM (just in case you're not on my list of 200+ buddies). It works except for a repeatable crash whenever I try to view my "coldfusion" group. Not a big deal since I mostly go through the "All Online" view. Hope that gets fixed.
  • WeatherBug - weird but interesting. I wish the radar would automatically zoom in on the selected station.
  • AirMe - I think Flickr is really dumb but this app will have me using it a lot. It lets you take a photo and it will automatically tag it with the current location and weather and upload it to your Flickr account. Easy enough that I'll actually take more photos on my iPhone and publicize my photostream!
  • Twitterific - I tried this and didn't like it (or had some issue with it?). Anyway, it did not stay installed for long. Twitter via the web is fine on the iPhone.
  • Evernote - I'm just starting to use Evernote but haven't really figure out what I'm going to do with it yet. Having the application on the phone is easier than working via the website. We'll see.
  • People - This is Yahoo!'s White Pages and I like being able to look people up by name or phone number and then add them to my contacts / address book.
  • Dobot Todos - I don't know whether I'll actually use this. I've gotten used to 43actions via my iPhone (I'd love to see a real application version of that!). Dobot Todos is a nice, simple to-do list.
You may have noticed but those are all free. I didn't see anything that I'd actually pay for (although if I ever get into Omnifocus - great outliner / ideas tool - I might pay the $20 for the iPhone native application).

What applications are you loving? (or hating?)


I'm working with Ray on some new features of the Broadchoice Web Platform and I'm building out some decorator methods to provide additional navigation across the object graph (essentially reverse navigation across many-to-many relationships).

I'm a big fan of unit testing but for a variety of reasons, we haven't quite established TDD as a day-to-day part of our operations at Broadchoice (something I want to change and as we bring on new team members this summer, we will instigate this as "Standard Operating Procedure").

However, today I wrote my unit tests first because I wasn't quite sure of my TQL syntax and figured that writing the tests first would help me navigate to the correct code.

It worked! Not only did I (re-)learn the lesson that TQL does not allow select class.* ... (Why Mark? It allows select * .... Can't it figure out all properties of a specified class? I know, enter it as an enhancement in the Transfer bug tracker!), but I also uncovered a bug in my transfer.xml file and a few other typos in pieces I'd mistakenly written before I started on these two decorators and their tests.

So, there you have it: write unit tests! Write them before you write your code! It helps you avoid committing code that won't run and that means less pain for your team members.


I'm a bit late with this (I went to Vegas for a friend's 25th wedding anniversary party - an off-topic blog post on that later). MXUnit, currently the best unit testing framework for ColdFusion, just hit the big 1.0 release milestone.

As folks know, I've been a big fan of unit testing for quite a while and used to advocate Paul Kenney's cfcUnit at every opportunity. Unfortunately, Paul hasn't been working on cfcUnit much for the last few years and MXUnit has grown up to take the crown of the most comprehensive, most robust, most feature-rich testing framework for ColdFusion.

If you're still not doing unit testing, you need to check out the MXUnit website and try to get to at least one of the presentations that the MXUnit team are giving. They're on the Online ColdFusion Meetup on Thursday July 17th (database patterns for unit testing - Bill Shelton) and if you're at MAX 2008, you can catch Marc Esher talk about advanced patterns for ColdFusion test automation which should be excellent (Wednesday, November 19th @ 9:30am).


July 14, 2008
Nicolas Lierman, creator of the Google Analytics AIR application, is leaving Boulevart to join Broadchoice. We're naturally very excited to have Nicolas on board and driving our behavioral analytics platform. If you were at Scotch on the Rocks, you may have met Nicolas and heard him talk about analytics - with a very refreshing twist - and if you missed him then, you'll have a chance to catch him at CFDevCon 2008 where he'll be talking about "revolutionizing web analytics with Adobe AIR".


July 7, 2008
Joshua Cyr is organizing a networking RIA-related cruise in the Bahamas. The idea is to have all the networking and social benefits of a conference without actually having sessions. The five-day cruise leaves Miami on February 9th, 2009 and full-board rooms start at $345. Great idea Joshua!


I'm 46 years young!

Probably the best Guinness advert ever made! Raise a glass!


July 6, 2008
Over on Will Tomlinson's blog there's a piece about using structCopy() to create a copy of a struct and a note from Charlie Griefer cautioning that for Will's example, he probably needed to use duplicate() instead. After discussing this will Will on IM, I figured it might be instructive to look at how structCopy() differs from duplicate() and why you might use it instead.

First off, let me say that the reason I think this causes confusion for a lot of CFers is that they don't have a Computer Science background so they've not had the "Memory and Pointers 101" course that makes this stuff a lot clearer. Hopefully, this blog post will help fill in some of the gaps.

Some basics. When you assign something to a variable in CFML, you are really doing two things: you are creating a label (the variable name) and you are allocating some memory to associate the label with the data. In particular, with structs, the struct itself exists in a block of memory (well, lots of connected blocks of memory) and then the variable "points to" the struct data.

Let's start with the simplest example (these examples require ColdFusion 8.0.1):

[More]


OK, a personal rant...

I've owned my house in Castro Valley for seven years (next month) and I just took advantage of the great interest rates and the new conforming loan limits to lock in a 30 year 5.5% mortgage, paying off my previous two mortgages (a $300k 30 year and a $70k 15 year balloon payment). This is the third refinance in six years and the first to lock in above what I paid for the place (paid $370k, financed $409k, value $600-700k depending on who you ask, although Indymac Bank thinks it's only worth $515k... go figure!).

So, I'm happy with my new mortgage. I am not happy with the stream of insurance spam I've received in the last week. Several offers every single day (six today, OMG!). Mortgage protection, health insurance, home insurance. Jeez, leave me alone! I have all that shit already!

I know that a mortgage is a matter of public record but this is ridiculous! The worst thing about these slimy insurance and loan spam offers is that they are all - and I mean ALL - couched in terms of something you should complete and return for your lender. Sure, they all have small print saying they're not associated with the lender but with some of them you really have to read it two or three times to convince yourself you're not reading something important from your own lender.

It's disgusting. Especially given the sub-prime lending disaster we're going through right now. Clearly these companies have no ethics at all.


July 4, 2008
Most of my readers will know that I'm a big fan of closures - the ability to create anonymous functions with bound variables (bound in the context of the closure).

David Harris has a brief post about the joys of jQuery where he comments on what, to him, was an unexpected feature that allowed binding of variables, i.e., JavaScript (and ActionScript) support closures. I find it interesting that he thinks this binding "somehow feels wrong" and I've seen the same reaction from a number of people when first confronted with closures.

This binding is what gives closures their power and why they are more than just "anonymous functions". They carry with them the context in which they were created.

It's also an interesting contrast with ColdFusion where variable binding is done at the last minute at runtime and thus you can take a UDF function that references variables.foo (which might be a page scope variable) and add that function to a CFC instance and now variables.foo will refer to foo in the variables scope of the CFC itself.

I think that's why my Closures for CFMX library has proved so puzzling for a lot of folks :)


New Atlanta's BlueDragon project has never supported Flash Remoting but with the advent of BlazeDS being open sourced by Adobe, TagServlet's OpenBD project has been able to take advantage of the synergy of open source to offer both HTTPService and RemoteObject invocation of CFCs from Flash/Flex. Watch Matt Woodward's screencast showing how to set up and run Flash Remoting with Open BlueDragon.


Walt Mossberg (of The Wall Street Journal) has some general tips for switching to Mac from Windows. It's mostly simple stuff - keyboard and mouse navigate, common preferences etc - but it may help some folks (and there's a couple of interesting comments with extra tips).


July 3, 2008
I've been struggling to consume a particular document-literal web service for the last couple of weeks and nothing I tried quite worked. Tom Jordahl @ Adobe, who wrote all the original Axis integration for ColdFusion MX and has been one of the primary committers for the Axis project, has posted a series of "must-read" articles if you are trying to consume third-party web services in ColdFusion: In particular, the third post addressed an issue I'd run into that I finally pinged Tom about after exhausting everything I could think of. In about 30 minutes, he'd figured out the problem and sent me a workaround.

So, even tho' Tom is off doing Blaze DS and LCDS these days, he's still producing rocking blog posts about ColdFusion - go Tom!


July 2, 2008
Ben Nadel is renewing his efforts to learn OOP and is planning to build a simple project in public to help others learn along with him.

The real gem about this post is the extended commentary by Brian Kotek and Ben's responses. Brian posts some really solid guidelines on designing well-structured object-oriented systems and the dialog between the parties is very enlightening.


The contest is closed - seven entries came in within 90 minutes! The first correct entry was from David @ TLA Video who wins the year's subscription!
I just renewed my annual subscription to Fusion Authority Quarterly Update but because I'm a (fairly) regular author and I'm also on the "staff" (as the Curmudgeon!) I get multiple copies of each issue anyway for promotion purposes. I pay my subscription to support the journal anyway but after talking to Judith at Fusion Authority, she thought it might be fun to run a little contest for someone to benefit from the subscription I pay for but essentially don't use!

So Fusion Authority in conjunction with An Architect's View is offering a year's free subscription to FAQU to the first person to contact me with the answer to this simple question:

How many full articles have I written for FAQU so far and what were they called?


July 1, 2008
A couple of years ago, Pete Freitag provided a very brief overview of Apache, GPL, LGPL, BSD and MIT licenses. Today, Grant Skinner has provided a more in-depth discussion of GPL, LGPL, MPL, BSD and MIT (plus a few other options). Worth reading.


June 27, 2008
First off, I'd like to extend huge congratulations to the team that organized CFUNITED: Liz Frederik and Nafisa Sabu with technical assistance from Elliott Sprehn (and, of course, several on-site folks who man the registration booth and run around making sure everything's OK). Despite all the others, we know the powerhouse behind CFUNITED these last several years is Liz and Nafisa and it wouldn't happen without them.

[More]


Sammy Larbi has a great blog post on the value of contributing to open source projects. He cites several famous names - people we know because they contribute to projects we know. This is part of a series of posts from Sammy on "how to save your job" (by improving your skills) and is inspired by Chad Fowler's book (52 ways to save your job). Good reading!


June 25, 2008
I was just looking through the list of speakers and noticed that John Resig, creator of jQuery, is speaking at MAX this year:
In this session, you'll learn from John Resig, the creator of the jQuery library, how to build a desktop application with Adobe AIR and jQuery. jQuery is a fast, concise JavaScript library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. Although jQuery is typically used inside a web browser, it's now possible to use jQuery to build rich desktop applications.
Should be a great (and extremely popular) talk!


The list of sessions and speakers is available on the MAX site. The site shows 28 ColdFusion sessions (including two pre-event labs). There are just under 200 sessions total so that's a pretty good percentage in my opinion.

34 sessions cover AIR, 54 sessions cover Flex.

Compare that to 13 sessions on Dreamweaver and 14 on the flagship Photoshop product and I think we have no reason to complain (but, of course, some folks will).

My "Event-Driven Programming in ColdFusion" talk has been selected for MAX which I'm pleased about and I will reveal that it will be substantially different to the version shown at Scotch on the Rocks and CFUNITED...




Hosting provided by