Viewing By Category : coldfusion / Main
July 1, 2009
After I posted my instructions for building Railo from the latest source in SVN, there were some appreciative tweets and success stories but Erik-Jan Jaquet asked can you explain to me WHY I would want that?

It's a very good question so here are some of my thoughts on why you might decide to build an open source project from source yourself...

[More]


June 30, 2009
I wanted to follow up on Part IV Appendix about SES URLs with Tomcat.

Tony Garcia mentioned it there in a comment and since then Jamie Krug mentioned it in a comment on the Railo blog:

Tomcat can do SES URLs, albeit with some limitations.

[More]


Michael Dinowitz poses a very interesting question over on Blog of Fusion: are there really ColdFusion jobs out there?

What he's mostly talking about are those open reqs that you keep seeing, month on month, that never seem to get filled, but he is also asking why well-qualified people have a hard time getting hired. He doesn't really answer his own question but he gives some good advice about applying for jobs...

[More]


June 26, 2009
A couple of months ago I wrote about the support and consulting services offered by Railo Technologies (US, UK, CH). As I've been talking to more people about CFML in general, I sometimes run into the belief that since Railo Technologies grew up around the Railo server, the only consulting we offer is specific to the Railo CFML engine. Whilst it's true that the annual support contracts we offer are specific to Railo, we have a great team that has had a lot of experience with CFML at large over the years and so we're able to help companies - and individuals - solve a pretty broad range of problems.

[More]


June 25, 2009
As of today, you can easily build your very own version of Railo from the latest source code in Subversion! This blog post will take you through all the steps necessary to download, build and deploy a new copy of Railo for your own testing, experimentation and general edification.

[More]


June 23, 2009
Charlie Griefer has found a new location for East Bay CFUG (in Pleasanton) so the group will be meeting in July to refocus and move forward. If you're an East Bay CFer, you should make sure you attend!


If you have any suggestions for things you'd like to see in the Railo server, you can suggest them on the Railo feedback forum as well as voting for existing suggestions!


June 22, 2009
October will be a treat for ColdFusion (and Flex) developers!

Adobe MAX happens in early October down in Los Angeles, then Dan Wilson and friends are organizing a North Carolina ColdFusion conference in mid-October followed by BFusion/BFlex organized by Bob Flynn and friends (I believe this will be a week after the NC conference).

Then you can have a month of down time before the next RIAdventure Cruise'n'Conference in December. This year organizer Joshua Cyr has teamed up with the 360 Conference team to make the event even bigger and better!


June 18, 2009
Luis Majano just announced ColdBox training the day before CFUnited. If you're going to CFUnited this year and you're interested in learning more about ColdBox from the creator of the framework, I can highly recommend this intense, one-day pre-conference training class!

I was privileged to sit in on parts of this course before cf.Objective() this year and was very impressed at the amount of material covered, the quality (and thickness!) of the handouts and the hands-on approach that Luis takes.


June 15, 2009
One of the nice aspects of the "Professional Open Source Sofware" business model is that you can be very flexible for your customers. The Railo server has a roadmap of core features and downloadable extensions - some free, some paid - but our roadmap can easily be influenced by our customers. Now that more developers are trying Railo every day, we're seeing more interest in certain features that were already on our roadmap but were either lower priority or scheduled some distance off in the future.

[More]


As I've been working on my Living in the Cloud talk for CFUnited (since I didn't have to complete it for Scotch on the Rocks), it occurred to me that this is a topic covering stuff I worked on in the middle of 2008 (Broadchoice Workspace, built for Amazon EC2 and S3) and the end of 2008 (migrating Broadchoice Workshop to Amazon EC2).

Conferences usually want topics submitted a long way in advance of the conference, even tho' drafts and the final version of the talk can be delivered just before the conference. CFUnited 2009's deadline for topic submissions was December 1st, 2008, eight months ahead of the conference. MAX 2009 opened its call for speakers on March 3rd 2009 and closed it in late April, six months ahead of the conference.

Conferences set deadlines far in advance so that they can offer a good roster of speakers and talks because that's what attracts attendees. I've been on the advisory for a number of conferences and getting a schedule out early is key in the battle to boost registration.

Our industry moves very fast. Something that's hot in the Fall may not be on anyone's radar today. Something that's hot today may be old, old news by the Fall. Conference committees have to guess what will be attractive, many months in advance - which is extremely hard! And yet, one of the biggest complaints we hear about conferences is when they have the same topics every year - which is a natural consequence of trying to fill the schedule so early: how many brand new topics can you think of off the top of your head?

How do you feel about conference schedules? Do you feel they manage to stay ahead of the curve? Do you think there's too much "safe" content? Do you have suggestions for how conference committees can balance the need to publish a schedule so folks will buy tickets against the desire to feature bleeding edge topics?

Do you think I'm too concerned about this - and that maybe there's no real issue here?


June 13, 2009
After the "Help the CFML Advisory Committee" thread got so long (145 comments at the time of writing this!), some folks asked for a summary.

I just posted a detailed summary with explanations to the committee mailing list. Here's an abbreviated summary:

  • In first place with 18 votes was: introduce a set of objects!
  • In second place with 11 votes: use pure function notation using body= and sql= to pass in strings to mail() and query() respectively.
  • In third place with 9 votes: tagname(attributes) { writeOutput("string"); logic(); writeOutput("string"); }
  • In fourth place, a new idea, with 6 votes: introduce E4X syntax to allow tags in script.
  • In last place, my poor, unloved favorite, with just 4 votes: tag { }
Since we still need to handle custom tag invocation somehow, my recommendation to the committee is to look more deeply at the function notation, with a view to adding a form of cfimport that introduces a prefix/taglib so custom tags could be invoked as:
pfx:mytag(a=1,b=2,body="this is the body");
which would be equivalent to:
<pfx:mytag a="1" b="2">this is the body</pfx:mytag>
Without the body attribute, it would be a simple tag invocation like this:
<pfx:mytag a="1" b="2">
Thank you everyone for contributing to the thread!

I'll keep you posted on what the committee decides to do next on this tough issue.


June 12, 2009
Don't miss the ColdFusion 9 / Flash Builder 4 tour when it hits the Bay Area: Ben Forta, Adobe's Senior Technical Evangelist, will be the speaker at this cross-user group event!

Learn about Flex 4, Flash Builder 4 (formerly Flex Builer), Flash Catalyst, ColdFusion 9 and Bolt!

Make sure you RSVP via the BACFUG website!


June 11, 2009
I'd like to extend a warm welcome and a big round of applause to Todd Rafferty who has just stepped up to become the (volunteer) Community Manager for Railo!

Todd has already started to pull together a couple of FAQs on the community site (getrailo.org) and monitors Twitter and mailing lists for questions about Railo so he can point people at the right resources.

Thank you Todd!


June 10, 2009
Last night I visited the Sacramento CFUG to talk about Railo. There was a pretty good turnout and a nice relaxed environment for the meeting with comfy chairs and plenty of pizza and sodas (thank you Clear Capital!). The audience was very interactive, asking lots of questions, which always makes presenting much more enjoyable when I'm free of the 50 minute constraint of conferences.

[More]


June 2, 2009
The Sacramento CFUG has invited me to talk about Railo on June 9th:
Railo - Free as in beer and free as in speech!

Railo's CFML engine is now a Free Open Source Software (FOSS) project under the JBoss Community umbrella. Sean will provide a history of the Railo project, show several of its unique features - and its compatibility - and talk about future plans. Come armed with questions so you can go home fired up with answers!

The group has provided me with a (long) list of questions they want answered so it should be an interesting evening. I don't know whether it will be broadcast / recorded (ask the UG manager, Seth Duffey).


June 1, 2009
Railo supports a scope that synchronizes across multiple servers: cluster scope. Just like server scope is accessible across multiple applications on the same server, cluster scope is accessible across multiple servers. This blog post looks at how to set it up and use it.

[More]


May 31, 2009
Marc Funaro kicked off quite a heated debate on his blog lately by raging against people pushing object-oriented programing/design and how his attempt to follow their advice nearly led to the collapse of his business. Marc was expressing a common frustration that many of us have heard from people who try to learn OO, especially from people with a long history of procedural programming and/or no computer science background.

I've left comments on a few of the blog posts but several people have asked me to go into a bit more depth about my thoughts on this issue (since I'm one of the people sometimes accused of "pushing" OO and insisting it's the "right" way to do things).

[More]


May 29, 2009
Alurium's Peter Amiri just announced 60-day free trial accounts that offer Railo with full Web Administrator capability, so you can see how Railo works for you without even needing to install it yourself!

Sounds good? Visit Alurium and click on the 60 Day Free Trial badge on the home page to sign up!


As just announced on the Railo blog, a new beta build is available. 3.1.0.015 includes a number of enhancements, bug fixes, performance improvements and compatibility improvements.

One of the really nice things about the way Railo patches work is that you can apply them automatically from within the Server Administrator and have your server restart without having to do anything more than click a button! I upgraded my site this morning from 3.1.0.012 to 3.1.0.015 and was very pleased with how easy it was!


May 20, 2009
I've almost recovered from this year's cf.Objective() so I wanted to get my thoughts on paper before the memory blurs too much. As usual, it was an excellent conference with top-quality sessions from top-quality speakers. It's the only conference that I would pay to attend - and would pay out of my own pocket if I had to. I learn plenty of new things at cf.Objective() every year and the networking is phenomenal because it's a relatively small, friendly conference (around 200 attendees this year).

[More]


May 18, 2009
Lately, the committee has been looking at proposals to extend CFSCRIPT so that components can be written entirely in CFSCRIPT instead of requiring tags. Adobe has been the main driver for the proposals but other committee members have been providing their share of ideas and suggestions when we get stuck (or don't like Adobe's proposals).

Right now, we have a pretty solid definition of how CFSCRIPT should work so that you can write entire components. Mostly it follows what you may have seen Adobe show off at conferences but Adobe is still making changes in response to feedback from the committee (and its own banks of prerelease testers, I'm sure) and some of Adobe's suggestions were considered vendor-specific by the committee.

But we're stuck on a couple of tags that we're really struggling to define in CFSCRIPT. We'd like you to help us make some decisions here!

[More]


May 17, 2009
I just posted the slides (as a PDF) and the code example (account.zip) under PRESOS and SOFTWARE on my blog. You'll need to download cfSpec from RIAforge to run the sample code.


With my recent change of employer, a change was necessary on the CFML Advisory Committee. I was previously a "community member" of the committee which was made up of:
  • Adobe: 2 votes (Ben Forta, Adam Lehman)
  • Open BlueDragon: 1 vote (Matt Woodward)
  • Railo: 1 vote (Gert Franz)
  • Community: 3 votes (Ray Camden, Rob Brooks-Bilson, me)
In order to retain the voting balance, I have taken over Gert's voting role, representing Railo, and so we needed a new community member.

After lots of discussion, the committee selected Peter J. Farrell and extended our invitation last night. I received an acceptance email from Peter this morning.

Welcome to the committee Peter!


May 15, 2009
Due to a session cancellation and several requests from the community, the Railo team will be hosting a Q & A BOF at cf.Objective() at 3pm (Friday) in the Nicollet C room.

This is all somewhat last minute so we're trying to get the word out. Gert Franz, Peter Bell and myself will be available to answer all your questions about Railo the CFML engine and Railo Technologies the consulting organization. Hope to see you there?


May 11, 2009
Today I had a short gap between projects so I finally created a multi-web install of Railo on Tomcat. I'm deeply indebted to Jamie Krug for his Railo JAR install tips and tricks blog post which I used as a starting point for my installation process.

[More]


In the absence of a printable schedule - sorry, Joe Rinehart says it's a problem with the Media3 hosting and he's been trying to get them to fix it for months! - here is my schedule for cf.Objective() 2009:

[More]


May 8, 2009
When I posted the quick tip about argument types and default values for Railo, Ben Pate asked if the CFML Advisory Committee was discussing this stuff.

The short answer is: yes.

The long answer is...

[More]


I like writing my CFML functions as script code where possible. That has traditionally meant that you cannot specify argument types or default values:
function someFunc(arg1,arg2) { ... }
That means you cannot have optional arguments and you have no type checking. You might want to say:
function someFunc(
numeric arg1,
string arg2 = "foo"
) { ... }
This ensures someFunc only accepts numeric values for arg1 and it allows arg2 to be omitted in calls, taking the default value of "foo".

Wouldn't that be nice?

In Railo, you can already do this!


Railo includes it's own FileServlet for serving up non-CFML files. If you are running Railo on Tomcat, it is easy to tell Railo to use Tomcat's Servlet instead of its own.

Edit the Railo web.xml file in WEB-INF/ and find this XML:

<servlet-mapping>
      <servlet-name>FileServlet</servlet-name>
      <url-pattern>/</url-pattern>
   </servlet-mapping>
Change it to this:
<servlet-mapping>
      <servlet-name>default</servlet-name>
      <url-pattern>/</url-pattern>
   </servlet-mapping>
Restart Tomcat. Now all your non-CFML files are served directly via Tomcat.

While developing and testing, it's often useful to have directory listings enabled so you can browse directories (particularly if you have directories full of example / test code). There's no way to enable that with Railo's FileServlet but you can do it for the default Tomcat Servlet by changing the listings setting in the global web.xml file (in Tomcat's conf/ directory):

<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>


May 5, 2009
One of the great things about free open source software (FOSS) is that you can use it without it costing you a penny and you can modify the software to suit your needs and, depending on the license, even bundle it as part of a commercial product you may develop.

[More]


May 4, 2009
I've had a few people ask me whether Railo will be doing a session or a BOF at cf.Objective() 2009 - and my colleagues say they've also had similar questions.

The content for cf.Objective() was picked some time ago, before our open source release and before the expansion of Railo into the UK and the US. Similarly, most of the BOFs were selected in early March and the only open slot is in the RIA track.

Despite that, the Railo team will be there in force. Mark, Peter and I are all speaking at cf.Objective() and Gert will be there too. We'll be around every evening for any questions you may have - think of it as a Railo BOF in the bar! I look forward to seeing you there.

All four of us are speaking at Scotch on the Rocks in London - I'm speaking at all three venues and I think some of my colleagues will be attending Manchester and Edinburgh as well. All four of us are speaking at CFUNITED as well. You'll be hearing plenty from us at future conferences!


May 1, 2009
As the conference draws near, we're finalizing speakers for the final few slots in the schedule and the Saturday schedule is now completely fleshed out with Mark Drew's morning session being focused on Model-Glue (in the absence of Joe Rinehart this year, Mark is covering Model-Glue and Brian Kotek is taking over Joe's open source Java in ColdFusion talk) and two exciting new topics in the 3pm slots: Samer Sadek will be explaining how to construct scalable services for Flex using ColdFusion and Pete Freitag will be looking at the CF Administrator and showing how to improve the security of your server.

We still have three speakers marked "TBD" (Working with Transfer, Service Oriented Architecture and Adobe's 'Flex topic') but we expect to announce those in the next few days.

There are still two BOF slots available for RIA topics if anyone wants to lead a session!


April 25, 2009
Now that Adobe has provided most of their session titles, we had to move Jason Delmore's Object Relational Mapping session to earlier in the schedule (so Terry Ryan's Advanced ORM session could follow).

That means that if you signed up for Jason's talk, you're now signed up for Terry's advanced talk and if you signed up for Adobe's "super secret" Friday talk at 1:45pm, you're now signed up for Jason's basic ORM talk!

Feel free to visit the online scheduler to update your selections if necessary!


April 24, 2009
I just got confirmed from Liz @ Stellr that the committee's request for a BOF has been accepted. Here's the information about the session:
The CFML Advisory Committee - Happy First Birthday!

A year ago, at CFUNITED 2008, Adobe announced the formation of the CFML Advisory Committee, made up of vendors and community members, charged with the tasks of answering the question "What is CFML?", providing a specification of the language and providing guidelines for vendors who implement extensions. Come to our BOF and find out what progress we've made and what we're planning for the future. We expect almost all of the committee to be at CFUNITED so this is a great opportunity to meet the team and ask us all your hard questions, face-to-face!


Adobe has provided four of their five topic descriptions. You can see them on the cf.Objective() sessions page. They're covering Advanced ColdFusion 9 Server Administration, Advanced ORM in ColdFusion 9, Extending Adobe Bolt with CFML and ColdFusion 9 as a Service.

These topics have been added to the schedule - and the online scheduler (yes, we know the Printable Summary doesn't work - Joe is having an issue with his hosting company and hopes to get this fixed soon).

Another Adobe topic - covering Flex - is on the schedule but we do not yet have the title or description.

cf.Objective() 2009 is offering last year's price of just $629 for three days of all-new material - no repeats this year! - so it represents incredible value. Also, don't forget that there is a one-day ColdBox training course on the Wednesday before the conference!


April 22, 2009
Since Mark Drew was also covering cloud computing in London, we've decided to offer a version of my framework comparison talk instead.

I'm looking forward to that first week of June despite the crazy travel schedule (I arrive Sunday afternoon and fly back the following Saturday, hopping from Edinburgh to Heathrow on a horribly early flight).


April 21, 2009
The Adobe Developer Center has a great article on Test Driven Development in ColdFusion by Bill Shelton and Marc Esher of MXUnit fame.

If this is a new concept for you, read this article!

If this is a familiar concept for you but you want to feel better about what you already do, read this article!

Seeing this sort of stuff on the Adobe Developer Center is very encouraging because it says a lot about what is considered current best practice!


April 20, 2009
The next meeting of the East Bay CFUG is May 5th and manager Charlie Griefer is looking for your input on topics! He's planning a half-and-half meeting with 30 minutes dedicated to an overview of Balsamiq's mockup tool and the other 30 minutes dedicated to a topic of your choice. Go to his blog posting on Adobe Groups and offer some suggestions!


April 17, 2009
One of the neat features of the Railo Administrator console is that you can easily install pre-packaged applications with just a few clicks. As part of my recent presentation comparing application frameworks, I installed ColdBox, ColdSpring, Mach-II and Model-Glue via the Web Administrator. There are a couple of "gotchas" about the current default settings for those installations that I wanted to cover in a blog post.

[More]


Just a heads up that I plan to republish a number of my ArgumentCollection blog posts here as Broadchoice plan to reuse the domain name for an upcoming support / corporate blog to accompany their new support documentation wiki and support forums.

That means your RSS feed may show a number of articles that you have already read on their original dates. I will republish each article using the original date but I can't guarantee they won't show up new for you :)


April 16, 2009
Last night I presented to BACFUG on ColdBox, Mach-II and Model-Glue. I just posted the recording of the presentation to Charlie Arehart's UGTV. I've edited the recording to remove some of the chatter at the beginning and end which is why it will seem to jump in without my usual biographic introduction and cuts off at the start of Q&A.


After a year at Broadchoice, it has come time to move on.

I've had a great time working with Ray Camden, Joe Rinehart, Brian Kotek and Luke Kilpatrick - as well as the rest of the team (who don't blog). We created a great content management system (Broadchoice Community Platform, powered by Model-Glue 2, ColdSpring and Transfer, running on ColdFusion 8 Enterprise - now up on the Amazon cloud) and we created an incredible desktop collaboration app (Broadchoice Workspace, powered by AIR, Flex, BlazeDS, Spring and Hibernate, running on Groovy and JBoss - with an iPhone web version powered by Model-Glue 3 and ColdSpring, running on Railo 3.0 and JBoss up on the Amazon cloud). I've learned a lot about Flex and AIR and I've gotten to know Railo as an alternative CFML engine.

After working with such a great team on such a great product, what comes next?

[More]


April 15, 2009
BACFUG meets tonight in Alameda, hosted by Planitax (thank you!), and the featured speaker will be me!

I'll be looking at ColdBox, Mach-II and Model-Glue - talking about their similarities and their differences - and showing demos of each framework.

Please see the event listing on Adobe Groups for more details and to RSVP (you must login with your Adobe ID to RSVP!).


April 10, 2009
It's been a while since I posted anything formally about the committee and I've started to see it mentioned in comments on blogs and on mailing lists lately so I feel now is a good time to update everyone on where we are, what we're currently working on and what we're trying to achieve.

First off, you can always check out the CFML Advisory Committee website. We're updating it as we finalize our decisions but it can be a slow process since this is the first time any group has tried to agree on a specification for the ColdFusion Markup Language.

Over the last few weeks, the committee has been pretty active...

[More]


April 9, 2009
It's been a couple of weeks since I blogged about cf.Objective() 2009 so I figured it was a good time to remind people again. This year's conference is just five weeks away!

The early bird rate is over but the full price has been held at last year's $629 so it's excellent value!

If you've ever wanted to learn ColdBox, this is also a good opportunity with a full one-day pre-conference training class by Luis Majano himself for just $449.

This year's schedule features three full days of new sessions - last year, day three was mostly repeats of popular sessions but we had so many great submissions this year that we wanted to showcase as many as possible. We will repeat two of the most popular sessions in the last slot of day three, however, if people fill out the online Session Scheduler (linked from the schedule page) so we know what's popular!

The Adobe sessions covering Centaur / Bolt promise to be smokin' hot - Adobe are keeping them secret right now but we hope to be able to post details next week!

Finally, the hotel rate is guaranteed thru Monday. It may go up after that (we don't know - that's up to the hotel) so hurry up and book your rooms!


April 7, 2009
The last week has seen some big announcements in the CF world! On March 31st, Gert announced the open source release of Railo, the next day Mark Drew announced he has joined Railo as CEO of the new Railo UK and then this week Peter Bell announced that he has also joined Railo and will be heading up the new Railo US operation.

I've been using ColdFusion since 2001, back when I worked at Macromedia and my team of Java and C++ developers first encountered CFML in the form of very early builds of what went on to become CFMX (6.0). We were pretty skeptical at first.

[More]


April 6, 2009
An interesting blog post from TechRepublic was doing the rounds on Twitter this morning so I thought I'd comment on it in terms of revelance to the CF community. The blog post was 10 skills developers will need in the next five years. Let's go through each of the ten items in turn...

[More]


March 31, 2009
Railo 3.1 Open Source is available! getRailo.org is the new community / open source web site, getRailo.com is the new products and services web site. The sites are still in Beta so you'll see some Latin filler text in a few places and a couple of areas need some work to flesh out the information but they give you access to the latest and greatest version of Railo - and the source code!


March 30, 2009
Ben Nadel had a bit of a "crisis of faith" last week over his ability to learn OOP the "right" way. He's highlighted a problem most people have coming to OO these days: in their search for the One True Way(tm), they are overwhelmed and can feel like failures. It can be a long, hard road. In a comment on his blog, I recommended everyone read the first two paragraphs of the "Gang of Four" Design Patterns book because it really sets this in context. I'm going to reproduce those first two paragraphs here to get you thinking. I highly recommend buying and reading the book.

[More]


March 28, 2009
As you might imagine at this point in my Railo for Dummies series, I'm ready to try it on a real website such as my own. I've been running corfield.org on CFMX7 Standard Edition for a long, long time and never upgraded to CF8. Trying to run corfield.org on Railo has been on my 'todo' list for a long time as well and now seemed like as good a time as any. Here's how it went...

[More]


In the comments on Part IV, Barney suggested using AJP to proxy and I confirmed that it preserves the CGI variables REMOTE_ADDR and REMOTE_HOST which Paul Kukiel asked me about. Paul also noted that adding the ProxyPreserveHost directive causes the host headers to be passed through the proxy. I'd actually added that locally but didn't want to complicate the blog post by mentioning it.

In this Appendix post, I want to tackle SES URLs. One downside of Tomcat is that it does not support the following common form of SES URLs:

We're going to tackle this by changing our proxy strategy to use mod_rewrite.

[More]


March 27, 2009
After getting a very basic Railo+Tomcat setup running, now we're going to make it more robust and more 'production-ready' (you'll want to do more than I'm going to show so I'd refer you to the extensive Tomcat documentation for deeper configuration). I'm just going to show how to get Tomcat integrated with Apache in a couple of ways so you can run a 'real' website on it.

[More]


Today, let's get Railo running on Tomcat! Why Tomcat? It's a robust, high-performance Java-based web server and Servlet engine and it's also very light and lean. Tomcat is also the basis of the JBoss Web Server (I'll probably cover JBoss later in this series) so all that you learn about getting things up and running on Tomcat can be carried over to JBoss when you need a full JEE server rather than "just" a Servlet engine.

[More]


March 26, 2009
As Kai Koenig said when he asked a number of us to pass this along "Maybe anyone wants to combine their once-in-a-lifetime dream holiday in Australia/NZ with a tax expense along the way"
You might have already heard that cf.Objective() is coming to the Pacific region and that were going to hold cf.Objective(ANZ) in Melbourne, AU later this year (12 & 13 November 2009).

At this stage were opening the public call for speakers. If youre interested in coming over to Melbourne and present on a topic that goes along nicely with the "ColdFusion Enterprise Development" scheme cf.Objective() has become successful in the US, wed like to hear from you.

Topics were looking for fit into (but are not limited to) the following major categories:

Architecture and Design:

OOP, Design Patterns, Frameworks, Modeling, Refactoring Legacy Apps, Persistence etc.

RIA:

LC DS and CF, Ajax/Flex with CF, BlazeDS and CF etc.

Process and Methodology:

Agile Development, SOA, Managing large CF architectures, Debugging and Metrics etc.

Integration and Testing:

CF and Java, Build and Deployment processes, Server tuning, Unit Testing etc.

Please let us know by April, 24 2009 if youre interested in coming to Melbourne to present at cf.Objective(ANZ). A short blurb about yourself and one or multiple topics youd be interested in presenting on would be very appreciated. Please send all topic submissions to speakers@cfobjective.com.au .

cf.Objective(ANZ) will provide speaker accommodation for the night of the 12th to the 13th of November 2009 at the conference venue (Renaissance Hotel in Melbourne). At this stage we unfortunately cant provide any further financial assistance with travel cost or other expenses.

We look forward to hearing from you!

cf.Objective(ANZ) Steering Group

I'd love to go but finances don't permit it this year. Speaking at MXDU a couple of times in the past was a fantastic experience so cf.Objective(ANZ) should be awesome too!


Both cf.Objective() 2009 and CFUNITED 2009 have their early bird deadlines coming up on Tuesday March 31st.

Register now to get the best price for those two conferences!

Remember that if your company registers at least one person for cf.Objective() as an early bird, you can register others from your company later at the same early bird price!


March 24, 2009
I said I'd look at Railo on Tomcat next but I figured I'd just sneak in a quick Express for Windows post before that so folks don't think I'm forgetting all those PC users.

[More]


I think a lot of people are looking beyond Adobe's licensing model for ColdFusion and evaluating other options. Last year, when Broadchoice decided to use Amazon EC2 as our production deployment platform, we picked Railo to drive our CFML-based iPhone web application because of licensing issues. Whilst that has since been addressed (on a case-by-base basis by Adobe) enough to allow us to move our CF8-based CMS up to the cloud, we haven't had any problems with Railo and we're still using it in production. In fact, our WAR-based build and deployment process lends itself much better to Railo's smaller footprint than the huge-by-comparison WAR files from CF8.

Recently I've been getting a lot of questions from people about installing and configuring Railo on a number of systems. The general complaint I hear is that the documentation is somewhat lacking in this area. Of course, this is something that a large corporation with massive resources - such as Adobe - can be expected to score highly on (even though people complain about Adobe's installation and configuration documentation too).

Personally, I find Railo easy to install and configure but I'm fairly used to Java-based systems. That's not true for a lot of CFers so I figured I'd start a series of step-by-step posts going through a variety of installation and configuration scenarios for Railo. The two systems I have to experiment with are Mac OS X (Leopard) and Windows 7 Beta. I'm going to start with the very simplest development scenario and build up to a variety of production options.

[More]


March 23, 2009
Back in Summer 2005, Peter J. Farrell asked is Mach-II dead? There had been very little action on the framework for ages and Model-Glue was the "new kid on the block" and was surging in popularity. A few days later, he proclaimed Mach-II is dead as a call to arms. The result was that Matt Woodward took over the Mach-II project and Peter became lead developer. Since then Mach-II has gone from strength to strength with 1.8 in development now and 2.0 in the planning stage.

[More]


March 20, 2009
Luis Majano is offering a one day ColdBox training course on May 13th in the Hyatt (the cf.Objective() hotel). Cost $449. If you've already registered for cf.Objective() and want to add this training day, contact Cathy at Best Meetings (cathy at bestmeetings dot com).

You can read all about the training course on the ColdBox website and the cf.Objective() pre-conference page. You can now register for the training when you register for cf.Objective(). You can even attend the training without attending the conference (but why would you want to miss such an excellent conference?).

I know some folks were holding off registration until the pre-conference training was announced - now you have no excuse! :)

Remember that the early bird ends on March 31st. If you register at least one person from your company before then, other people from your company will be able to register at the same price even after that date (and if you send five or more people, you'll get an additional discount!). After March 31st, the regular price goes up to $629 - which is the same price as last year.


March 19, 2009
As noted in several places (and all over Twitter!), Adobe has published its curriculum for both introductory and advanced ColdFusion courses.

The ColdFusion 8 project-based curriculum is designed to teach experienced web developers how to create dynamic, database-driven web applications using ColdFusion 8.

Introduction to ColdFusion 8

This course covers the basics of ColdFusion and focuses on best practices and design, while stressing the importance of usability, optimization, and performance.

Advanced ColdFusion 8 Development

This course is designed to teach you how to take full advantage of ColdFusion 8 while building web applications. The course focuses on best practices and design, stressing the importance of usability, code reuse, performance, and scalability.

Read more about the curriculum, free licensing for education and download the PDFs of each course on the Adobe education website.


I'm very pleased to report that the Bay Area has not just one ColdFusion User Group but two!

In addition to BACFUG, which has been around longer than the user group program itself, we now have the East Bay CFUG courtesy of Charlie Griefer (Amcom) and James Morrow (Planitax).

The inaugural meeting of the East Bay CFUG will be Tuesday, April 7th, hosted by Planitax in Alameda. It's a great facility - Planitax hosted BACFUG's meeting last night - so you can expect meetings to be broadcast and recorded if you're remote and a chance at foosball and darts if you turn up in person!


March 18, 2009
In response to the terrible state of the economy, cf.Objective() 2009 has extended the early bird pricing by two weeks (to March 31st) and reduced the "late" pricing to last year's $629. Also, if your company registers any attendee before March 31st, all additional attendees from your company will be granted the early bird price!

See this press release for full details of the pricing changes as well as information about all of the sponsors.


March 14, 2009
Some people - myself included - have observed runaway memory usage and apparent memory leaks with applications built with certain combinations of CFML frameworks that include Transfer ORM. We spent a lot of time tuning the JVM and looking at code and database usage in our Broadchoice Community Platform (CMS), we worked with Mike Brunt on load testing and tuning (highly recommended - if you have any performance problems, get Mike on your case!) as well as working with Mark Mandel directly on Transfer itself. All that work led to a much more stable system and we decided to just continue investigating as a background task.

[More]


March 12, 2009
If you're tired of CFML being bashed by PHP / Rails / .NET / whatever folks, send them along to Scotch on the Rocks for free!

Sponsored by Railo, Scotch on the Rocks is offering ten free tickets to non-CFML developers!

What a great idea! The blog entry has instructions on how to contact Andy Allan et al to arrange education for your misguided friends.


March 11, 2009
[Originally published in a slightly different format on the Broadchoice ArgumentCollection blog]
The Broadchoice Community Platform has a number of "modules" (applications) that you can add to a page and one of those is a list of documents for download (or external links). You add the module to the page and then select documents (from your document library) to add to that module. In previous releases, authors had to add documents in the order that they wanted them to appear on the (generated) web page. We looked at a number of UI options for allowing authors to "rank" the documents within the module but felt most of them were fairly clunky, involving entering ranking numbers to reorder things or up/down arrows requiring authors to move documents one position at a time. Ugh!

Ray pointed me at one of the cool jQuery UI interactions: sortable. It allows you to mark a "container" tag (e.g., a div) as sortable and then users can drag'n'drop the "child" elements into the order they want. You can attach event handlers that fire at various points in the drag'n'drop operation.

Here's how we do it:

<div id="sortable">
<cfloop query="documents">
<div id="doctag_#documents.id#" onMouseOver="setCursor(this,'move')" onMouseOut="setCursor(this,'auto')">
#documents.name# ... etc ...
</div>
</cfloop>
</div>
That's all you need in the HTML. Then you add the following JavaScript:
$('#sortable').sortable({
update: function(event,ui) {
jQuery.get('/updateRank.cfm?' + $('#sortable').sortable('serialize'));
}
This causes two things to happen:
  1. jQuery marks the sortable div contents as being, well, sortable!
  2. jQuery adds an event handler for update - when the drag'n'drop operation completes - that invokes a URL on the server, passing in the serialized data from the children of the sortable div, i.e., the id values as a list in the new order: doctag[]=1,3,4,2. It assumes an underscore as a separator.
The server side code simply updates the module data to put the documents in the specified order.


The early bird pricing ends on Monday (March 16th) so you can save $130 by registering this week. In a tough economy, saving that money is important!

If you're holding off until the pre-conference classes are announced, we're trying hard to get details and prices finalized this week but we're still going back and forth with the hotel over room availability and costs for pre-conference classes - don't delay registering for the conference: make sure you save that $130! You can always update your registration later and add a pre-conference class and extend your hotel nights if necessary!

BTW, if you're a speaker at cf.Objective() 2009 - like I am - you might be thinking "Oh I don't need to register" but, yes, you do (selecting the appropriate type of registration and payment) and you need to go on and book your hotel. This helps the conference organizers plan the room blocks and saves them from having to chase speakers to get things done!


March 9, 2009
I'm blogging this partly as a reminder to myself since I always forget one piece.
  • You need to specify database tables use UTF-8.
  • You need to use setEncoding() on form and URL scope to set them to UTF-8 (in Application.cfc).
  • You need to set the output content type to UTF-8.
  • You need to set the pageEncoding to UTF-8 (on any CFML page which needs it - so you might as well set it on all of them).
  • Your datasource setup, at least for MySQL, must have useUnicode=true&characterEncoding=utf-8 in the Connection String textarea under Advanced Settings.
That last piece is the one I tend to forget when I set up a new server. The rest is in code and once you have it in place, it'll work on any server but that connection string gets me (almost) every time!


March 5, 2009
cf.Objective() 2009 early bird pricing ends on March 16th and the price will go up by $130 after that.

3-day registration is currently $549. 2-day registration is $499.

After March 16th, 3-day registration will be $679 and 2-day registration will be $549.

Expect pre-conference training to be finalized in the next few days and posted to the website early next week!

The online scheduler will be available next week too.


For a long while, the Railo mailing list (railo-talk) has been hosted on Yahoo! Groups but members were having problems with search failing to return useful results. The Railo mailing list has now been moved to Google Groups (and renamed to just railo):

http://groups.google.com/group/railo

You can still visit the old archives on Yahoo! Groups:

http://tech.groups.yahoo.com/group/railo_talk/

Railo 3.1 - the open source edition - is in alpha testing right now and the public beta release is planned for March 31st, 2009, just a few weeks away, with a full release expected in May.


March 3, 2009
There, I said it!

I said it in a post to the cfcdev mailing list and Henry Ho felt it deserved a mention on his blog.

The topic came up because John Whish, manager of the Devon CFUG over in England (where I spoke last September on design patterns), is running a series of presentations on OO and patterns for the group. He wondered how to approach the fact that CFers tend to have separate DAOs and Gateways whereas that distinction does not exist in non-CF languages or pattern literature.

I feel responsible for that distinction so I replied with my thoughts and an explanation of why I had suggested it nearly six years ago but why I don't think it's good advice these days (and, frankly, hasn't been good advice for years - I no longer had access to the guidelines document that enshrined the advice!).

I recommend you read the thread on the Google Group (cfcdev). Henry quotes part of my reply and links to the thread for more detail.


All of the session descriptions have been posted on the cf.Objective() 2009 website. The sessions page describes the four tracks at this year's conference with session titles and speakers. Click on each title to jump to the description on the full track listing page. Don't forget to check out the schedule - it has had a couple of small tweaks as well. Adobe sessions will be listed nearer the time (since much will depend on where Centaur and Bolt development is at the time of the conference!).


February 27, 2009
Sammy Larbi has a great blog post responding to the recent unit testing controversy sparked by Joel Spolsky and Jeff Atwood. If you're skeptical about unit testing, Joel and Jeff's piece would probably ring true for you but Sammy shares some good insights as to why they might have the wrong end of the stick. Whichever side of the fence you're on regarding TDD, you need to read his blog post!


February 26, 2009
Nic Tunney just notified me that my BDD talk has been picked up for cf.Objective() 2009! Check the conference schedule for more details - a couple of new sessions by Mark Drew have also been added.

Here's the abstract for the BDD talk:

The natural way to develop software is to start with requirements - the expected behavior - of the system. We work our way down the line through design to implementation and somewhere in there we do some testing. Unit testing focuses on implementation, even if you write the tests first. Behavior-Driven Development is intended to let you write the expected behavior - the requirements - in a testable format so that you can develop software top-down, in a natural manner. cfSpec is a great new framework that supports BDD for ColdFusion. Find out how it can help you develop testable, high-quality software in a natural way.

After cf.Objective(), I'll be happy to give this talk to CFUGs via Connect (Salt Lake CFUG - this means you!)


February 23, 2009
Kev has posted confirmation of the dates, venues and pricing for the three-legged rolling conference that will be Scotch on the Rocks Road 2009.

As promised, pricing has been kept extremely affordable - under fifty quid for any one event with discounts for attending more than one (and discounts for groups).

See you there!


February 19, 2009
Event-Driven Programming! You already knew I was a fan of this approach - that's why I wrote Edmund, after all - now Hal is going to cover this style of programming. From his blog post on event-driven programming:
One of the things we'll be working with in the class next week is event driven programming. ...

I find this approach has benefits and drawbacks. The drawbacks are inherent in the approach: it's decentralized. ...

The benefits, though, are considerable. Adding functionality into a site is much, much simpler. Maintenance is easier. Testing is easier. ...


Tonight's BACFUG presentation by Peter Farrell has been posted to Charlie Arehart's User Group TV site. You can view the recording directly.

All BACFUG meeting recordings have now been added to the BACFUG site on Adobe Groups under Resources > Reference Library.


February 12, 2009
This is a very cool and inventive promotion idea from Liz @ Stellr:
If you register [for CFUNITED] by Feb 14th, you will be entered to win $150 gift certificate!

This is our way of saying we love our customers. Read more on the CFUNITED blog.

This year CFUNITED is at a wonderful venue with a very diverse set of topics so register early to get the best price - and the chance to win!


February 11, 2009
In addition to my cloud computing talk, I also submitted a talk on Behavior-Driven Development using cfSpec to Scotch on the Road 2009. I don't know yet which talk(s) I'll be giving at which location(s) for that conference but I'll blog more details once the schedule is updated. I found out today they've decided to go with just the cloud computing talk (but possibly at all three locations). I still plan to develop a BDD talk but it may just end up being given to user groups at this point.


February 10, 2009
I meant to mention this days ago: Pat Santora is presenting my Edmund framework at the Sacramento CFUG tonight. Short notice but if you're in the area, go along and hear Pat talk about event-driven programming in ColdFusion. Pat is a contributor to the Edmund project and has created a new presentation focused on CFML examples using Edmund. Thank you Pat!


I submitted a talk on cloud computing to Scotch on the Road 2009 and just discovered that it has also been accepted for CFUNITED 2009. The talk will cover what it took to migrate Broadchoice's ColdFusion-based CMS (our "Community Platform") from a traditional data center to Amazon EC2, what sort of application design issues you need to consider and what it's like to live in the clouds.

Here's the talk abstract:

The dream of cloud computing is cheap, scalable, on-demand power. What is it really like to run your production applications up in the cloud? What are the design issues you will face? How could you migrate from a traditional data center? Broadchoice runs its two main products on Amazon EC2 and uses S3 for persistent storage. Come and find out how we did it and the challenges we faced along the way - and why we like Amazon as a hosting environment!


February 6, 2009
As Adam just announced, he is the the new ColdFusion Product Manager as well as the product manager for Bolt. Adam's very passionate about ColdFusion so it's great news to hear that he's stepped up to take this on. I can also announce that Adam has joined the CFML Advisory Committee, replacing Sanjeev Kumar who is stepping down to focus on Centaur engineering issues.


A lot of people have asked about OpenBD being represented on the CFML Advisory Committee since the original announcement at CFUNITED 2008. I'm pleased to announce that today Matt Woodward joined the committee, representing the OpenBD CFML engine. We now have the three major CFML engines represented on the committee: Adobe ColdFusion, Railo and Open BlueDragon.

[More]


February 4, 2009
I'm working on a specification suite with Pat Santora, who recently joined the Edmund Event-Driven Model project as a contributor (more on that shortly), and we're using cfSpec to define the expected behavior of Edmund.

[More]


January 31, 2009
I know a lot of people have been asking about this so I wanted to let everyone know that the cf.Objective() 2009 schedule has just been posted!


If you have ColdFusion installed in the multiserver configuration (which is the only way I ever install it!), it's easy to also install Railo on top of JRun in the same setup.

With ColdFusion in multiserver configuration, you have:

{jrun.home}/servers/cfusion/cfusion-ear/
In that directory is META-INF/, containing application.xml, and cfusion-war/, containing the ColdFusion instance itself.

Download the Railo 3.0.2 WAR file (at the bottom of the downloads page) and unpack the WAR file to a directory called railo-war. You can use jar xvf or rename the .war to .zip and just unzip it. Your railo-war/ directory should now contain WEB-INF/, index.cfm and License.txt.

Now move that railo-war/ directory into the cfusion-ear/ directory mentioned above (so it's next to the cfusion-war/ directory.

Finally, edit that application.xml file and copy the <module> definition for cfusion-war and change it to say railo-war for the web-uri and /railo for the context-root.

Start ColdFusion and you'll see it starts both application servers. http://localhost/index.cfm is Adobe ColdFusion and http://localhost/railo/index.cfm is Railo CFML.

If you write frameworks (like I do), this makes it easier to test across multiple engines.

I'll probably stick Open BlueDragon 1.0.1 in there next.

The same process works for the OpenBD WAR file.

Caveats:

1. For OpenBD, I had to add an Apache alias for /openbd to match the location of the exploded WAR so that images loaded correctly (in the shiny new OpenBD Administrator - nice job guys!).

2. For both Railo and OpenBD, I experienced some problems with xmlParse() - OpenBD in particular said "The configured XML parser does not support JAXP 1.3."

The solution to the second problem was to add the following to java.args in jvm.config:

-Djavax.xml.parsers.DocumentBuilderFactory=
    com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
(all on one line, no space after the =)


January 26, 2009
Peter Farrell will be presenting remotely to BACFUG on the topic of ant. See BACFUG on Adobe Groups for more details.

We'll be covering Fusebox, Model-Glue and Mach-II in coming months, based on requests from our members. If you have any suggestions for topics or speakers, please comment on the BACFUG plans for 2009 blog post.


January 16, 2009
I just opened up one of my Eclipse .project files and found it had this nature:
<nature>com.richpalette.he3.he3free.natures.cfml</nature>


January 15, 2009
Thinking in objects can be really hard and one of the biggest stumbling blocks for many who are new to OO design is identifying what are the right things in the problem domain to model as classes. This topic came up in a recent thread on the excellent cfcdev mailing list and Alan Livie shared his recommendation for Robert C. Martin's book "Agile Principles, Patterns, and Practices in C#". In particular, he pointed list members to chapter 20 which discusses the design of objects to represent a coffee maker.

That particular chapter is available as a PDF and it's a really good read. It starts off explaining the problem to be solved and then presents the "obvious" object model that most new OO students come up with. Then he takes it apart, explaining why it's a poor design, and goes on to construct a much better model (with fewer objects) that is very elegant and easy to understand.

If you're struggling with the OO design process, you need to read this PDF and absorb the lessons laid out within it. Even if you think you're an OO 'guru' you'll probably learn something from it!


January 14, 2009
Update: The Java 6 class loader bug mentioned in this post was fixed in Update 10. I just upgraded a 64-bit Red Hat Linux server to Java 6 Update 11 and changed the jvm.config file to specify the new JDK's jre directory for java.home. After restarting the server, it was able to serve up the first page of a complex Model-Glue / ColdSpring / Transfer application in just a few seconds. With the default JDK installed by ColdFusion 8 (1.6.0_04), it took between 30 and 60 seconds to serve that first page. I have updated this blog post accordingly. Thanx to Charlie Arehart for prodding me earlier today on this issue.
Some people have been noticing dramatically slower application startup times on ColdFusion 8 compared to ColdFusion MX 7. I've seen a lot of complaints about shared hosting systems where applications timeout. Since CF8 is so much faster than CFMX7, you might wonder why application startup times can be so much worse.

[More]


January 11, 2009
Ron just posted a new version of cfSpec to RIAForge that improves performance, adds a convenient way to run a directory full of specs and overhauls the "should" matchers to provide a much richer set of expectations. Check out Ron's blog post for more details of this new release.


January 9, 2009
This question crops up fairly often on mailing lists and I usually have to Google the answer so I figured I might as well blog the solution so I can find it more easily (and perhaps so can others).
I'm handling a form post in a CFC but I can't get file upload to work. How do you use <cffile> in a CFC?
The key here is that <cffile> expects a form field name for the filefield= attribute. You'd normally say:
<form enctype="multipart/form-data" ...>
<input type="file" name="userfile" ... />
...
<cffile action="upload" filefield="userfile" ... />
What people often try to do is pass the form fields into the CFC as arguments to a method and then they cannot figure out what to put in the filefield= attribute.

Inside the CFC, you still need the name of the field in the <cffile> tag when you specify filefield=. The easiest way to do this is to pass the name of the form field to the method:

service.uploadDocument("userfile");
and then inside the method:
<cfargument name="formfield" ... />
...
<cffile action="upload" filefield="#arguments.formfield#" ... />
Note the #..# there to evaluate the argument to get the string passed in - the form field name.

This is based on Todd Rafferty's post to cf-talk which was the clearest explanation I found via Google!


About a month ago, I talked about my experience of setting up clustered ColdFusion instances on EC2. Since then we have migrated the Broadchoice Web Platform completely from a regular data center, where it had lived since launch, to the Amazon cloud and now all of the *.broadchoice.com sites and all of our client sites based on the Web Platform are happily running in the cloud.

We've been very pleased with the performance and stability of EC2 so far and we're comfortable about scaling out as demand increases. We took advantage of Amazon's EBS (Elastic Block Storage) that allows you to mount S3 storage directly as part of the file system on EC2. This essentially replaces the NAS we were using in the data center where all uploaded files were placed. We run two ColdFusion instances on a medium EC2 instance and run MySQL on a separate EC2 instance (actually on the instance that is currently running our AIR application, the Broadchoice Workspace for Salesforce, along with its MySQL database). We replicate the MySQL databases to another server (in a data center) so that we can restore / recover in the event of a problem with EC2. We also run scheduled backups of the EC2 instances to S3.

As I noted in my earlier entry, we're using Apache and the JRun Connector to manage the two instance cluster and failover. I'm still suspicious of the connector due to past experience but so far it has been behaving well and when we restart instances for maintenance, we're generally seeing uninterrupted service, from a user's point of view, as requests silently failover to the other instance.

If you're interested in running ColdFusion in the cloud, you'll need to talk to Adobe about licensing (either Adam Lehman or Kristen Schofield) but they are being very encouraging because they want this to happen. The more of us who do this, the better the argument they can present internally to get the EULA changed to support ColdFusion running in the cloud!

If you want to learn more about how we handled the migration and/or what to watch out for when designing applications that run well on the cloud, feel free to contact me via this blog or directly (c'mon, you know my email address!).


January 8, 2009
I finally got around to adding the recording URL to Charlie Arehart's UGTV. It's a bit of a wild ride: it's two hours long with a 5-10 minute pizza break in the middle (sorry, Connect doesn't let you edit out the middle of a recording, only the start / end). If I'd known how limited the Connect editing was, I'd have made two separate recordings.

Anyway, here is Unit Testing Improves Your Love Life - and - Groovin' To The Fusion: Marc Esher and Bill Shelton of MXUnit fame kick off the first hour and then Joe Rinehart of Model-Glue fame carries the second hour, explaining why a mixed language technology stack can make ColdFusion even more productive.


January 7, 2009
Adobe is continuing to put all of the MAX 2008 presentations up on Adobe TV (under the MAX channel). The audio was recorded directly from the in-room mic and the "video" is a screen capture of what was being presented and whatever technology they used to do it has produced a very nice way to watch every single MAX session for free (so I can now go back and watch the sessions I missed which I'd really wanted to attend!).

It seems that only two ColdFusion sessions are listed, one of which is my Event-Driven Programming in ColdFusion session. The other is Rob Brooks-Bilson's Advanced ColdFusion Caching Strategies. Searching Adobe TV for ColdFusion turns up nine videos, six of which are part of the Adobe Developer Connection series from Adam Lehman and Ben Forta.

If you haven't checked out Adobe TV as a learning resource, there's definitely some good stuff up there.


A year ago, I challenged the community to evangelize ColdFusion and convert new developers from other technologies. It was part of a blog post that examined and rebuffed several common arguments that often arise within the community as to why ColdFusion is not more popular. Most of those arguments focus on what people think Adobe should do to make ColdFusion more popular. A lot has happened in the last year since that blog post so I want to revisit the arguments and see where we stand today.

[More]


January 6, 2009
Ron has posted a great step-by-step tutorial for writing testable specs with cfSpec. Using an e-commerce shopping cart as an example, he builds up the spec, one expectation at a time, showing how cfSpec performs intuitive tests on the underlying objects, allowing you to write simple, expressive code, driven by your specification.

cfSpec now includes "stub" objects (with true "mock" objects coming soon) so that you can specify the behavior of components independent from each other (so you don't have to write multiple objects just to get one object's expectations satisfied).


January 5, 2009
As "usual", I start the year with a round-up of the highlights of last year, based on things that I blogged. It's been a strange year for me. After (seven) years with Macromedia / Adobe and most of 2007 spent freelancing, I took a full-time job with a startup and hired some amazing CFers to be part of my team. I (finally) learned Flex (and AIR). I learned a new language (Groovy) and did a lot less CFML programming than I've done in years while at the same time joining first the Open BlueDragon Steering Committee and then the CFML Advisory Committee, as well as attending more ColdFusion-related conferences than usual (cf.Objective(), Scotch on the Rocks, CFUNITED, Wee Dram of Scotch, MAX).

[More]


January 2, 2009
As folks know, I'm a big advocate of automated testing in general and unit testing in particular. I've gradually become a big fan of Test-Driven Development (TDD) where you write tests first and then write the code to satisfy the tests. I'm pleased to see unit testing well enough established in CFML development now that we have several unit testing frameworks (my current favorite being MXUnit, which I think has become the de facto standard choice for most CFers who are doing unit testing).

Getting into TDD is not easy, however, and I think there are a couple of conceptual problems that take a while to get your head around. One is just a simple case of "Where do I start?". Given a blank piece of paper, how do you just start writing tests that are an accurate representation of what the yet-to-be-written system is supposed to do?

[More]


December 31, 2008
Liz has posted an explanation of the process for announcing the remaining topics for CFUNITED 2009. She had earlier posted a list of just over 40 topics and noted that Centaur and Bolt topics will be announced later, as well as commenting that a quarter of the final topic list will be Flex/AIR.

I know some speakers who didn't make the first list assumed they weren't speaking. Not necessarily true. The manager and beginner tracks have not been (fully) announced yet, not have all the Flex/AIR topics and none of the Centaur and Bolt topics (and, indeed, several slots in the other tracks have not been finalized either). Additional topics will be announced over the next few months but Liz wanted to give a sense of what is coming in some of the tracks this year.

Another clarification in her latest post covers the "exclusivity" of Centaur/Bolt topics, namely that certain topics will be exclusive to CFUNITED but by no means all Centaur/Bolt topics. That means that other conferences will be covering Centaur and Bolt (and may well have "scoops" as has been Adobe's practice in the past during keynotes). That's good news for cf.Objective() and Scotch on the Rocks attendees since they know now that they won't miss out on the "highly anticipated next major release" of ColdFusion!

Don't forget that the early bird price ($849 for 4 days) ends TODAY!


More articles...



Hosting provided by