Slides from My cf.Objective Session on Highly Available CF Apps

The organizers of this year's cf.Objective() had the brilliant idea of setting up a shared Dropbox folder for the slides, code, and supporting materials from all sessions at the conference. I've posted a PDF of my slides from my session, "Making Your ColdFusion Apps Highly Available," to this Dropbox folder. The PDF includes links to a lot of the tools, services, and articles that I referenced in my talk.

Thanks again to everyone who attended, and for the excellent questions and feedback I've received after the session.

Based on some of the questions I've received, I think I'm going to put in a conference proposal next year to talk about Amazon S3 and CloudFront, and how amazingly simple they are to use in ColdFusion!

My cf.Objective() 2013 Schedule

As a number of other folks in the CF community have been posting their cf.Objective() 2013 schedule, I thought I'd do the same — and promote my session in the process.

Thursday, May 16

10:10am: Learn You a What for a Great Good? Polyglot Lessons to Improve Your CFML!

Sean is an excellent speaker, and all-around smart guy. I know I need to learn more languages (my attempt at picking up Groovy went OK, and my attempts at learning Ruby stopped at Rails 101), so it feels like a good opportunity for motivation.

11:20am: The Art of JavaScript: Level Up Your Skills in 60 Minutes

I can always write better JavaScript. Always!

2:35pm: Nothing.

Why is that? Because I'll be preparing for my two hour deep-dive session which begins at 3:45pm.

3:45pm: Making Your ColdFusion Apps Highly Available

This is my session, and one I'm both excited and terrified to present. The topic is so deep and the complexities so great (especially when talking about building for the cloud) that, in the two hours allotted, I'm hoping to give a solid foundation for building a highly available CF application in a cluster and giving an overview of options for the rest. There won't be a lot of code, but there will be a lot of architecture!

Friday, May 17

9am: Building a Single Page App with AngularJS, Bootstrap, and CFML

I want to learn more about AngularJS. I love Bootstrap (it saves you so. Much. Time.) I prefer to use CFML on the backend in most cases, and Kurt is another super-smart guy and a personal friend.

11:20am: Nginx and CFML Apps

I've only ever used Apache and IIS as a front-end to my CFML apps. Nginx gets a ton of play in the Node.js world, and as I develop more there, expanding my knowledge about the server is a good thing.

2:35pm: Who let a bum into the kitchen? Using Vagrant and Chef to create development environments

Chef is becoming an almost required tool in cloud environments, particularly AWS. (Want to know why? Come to the second half of my deep dive on Thursday!) I'd love to see how to leverage it on the desktop and for testing.

3:45pm: Humongous MongoDB

MongoDB is probably the leading persistence engine for Node.js apps, and, thanks to Marc Escher, is easily accessible through CF. I look forward to hearing Sean's experience about deploying and running MongoDB in real production environments.

Saturday, May 18

9am: Grow a Backbone.js and drag your apps out of the past with JavaScript Templating

More JS, though I may head on over to Luis Majano's session on AOP, as I find ColdBox to be pretty impressive.

10:10am: It's either going to be "IIS 8 Troubleshooting Features for CF Admins" or "Railo 4.0 - Developing with Railo." We use IIS for deployment at my place of work, but haven't made the upgrade to IIS 8 yet, and Railo is a superior option for autoscaling deployments on AWS. (Want to know why? Come to the second half of my deep dive on Thursday!)

11:20am: Architecting ColdFusion Applications with AWS

In case you haven't noticed, this is a topic near and dear to my heart. Aaron has been working long and hard to deal with some of the issues with deploying CF10 on AWS.

1:45pm: REST APIs: Easier Than You Imagined

We need to build more REST-based APIs for our projects at work, and I've not been pleased with the REST implementation in CF10 (particularly with the administrative burdens it creates). I know Adam has a lot of experience in the area, and we're definitely considering a framework like Taffy or Relaxation for our work.

3pm: Metrics Driven Development

I'm bad on metrics and measurement. Well, not terrible bad, but not particularly good. I hope this session is the good, swift kick that I need.

I'm really looking forward to this year's conference. The content is always excellent, and I'm very proud that I've been asked to speak for a second year!

Diving Deep at cf.Objective()!

I'm honored to have been selected to speak at this year's cf.Objective() conference. I got the opportunity to speak for the first time at cf.Objective() last year, and this year, the good people on the content selection committee asked if I'd do a deep dive on my proposed topic: Making Your ColdFusion Apps Highly Available.

The full sessions description and outline is at the link above. However, that description and outline were written before the topic was selected as a deep dive session (which runs for two hours instead of one). I do plan on adding a bit more, including information on:

  • monitoring options for the local cluster
  • using a message queue (ie; RabbitMQ/ActiveMQ) in your architecture
  • separation of services to ensure availability when one service (ie; PDF generation, custom reporting, email) fails. This is particularly important for AWS/cloud deployment.
  • moving existing apps to the cloud vs. building cloud-native apps

Once I get the outline finalized, I'll try to get it updated on the cf.Objective() site.

Anyway, thanks again to the cf.Objective() conference team. I can't wait!

cf.Objective() 2013 Call for Speakers is Now Open

cf.Objective() is my favorite ColdFusion-related conference. No offense to the great teams who put together NCDevCon (also pretty damn awesome) and MAX, but I've always been the most challenged and gotten the most out of my time at cf.Objective(). Last year, I was privileged to be asked to speak at the conference, and I hope to do so again this year.

The cf.Objective() team has just opened the call for speakers for the 2013 conference. They really want to see proposals around the following topic areas:

  • Software Architecture & Design
  • Integration & Tools of the trade
  • Security
  • Mobile Development
  • Front End Development & Design
  • Javascript aka js.Objective()

If you think that you're not smart enough or a good enough public speaker to speak at a conference like cf.Objective, do not sell yourself short!. If you have strong knowledge on a subject area that is of interest to developers, they will want to hear you talk. We've all had interesting or difficult challenges to overcome in our daily work, and those make for really good conference presentations (conflict is a great hook for structuring a presentation, plus you get to show how you overcame the problems).

You have about a month to get your proposals in, so get to it!

Slides from "Making Your ColdFusion Apps Highly Available"

Attached to this post are my slides from my presentation at NCDevCon 2012: Making Your ColdFusion Apps Highly Available. While I do talk a bit about ColdFusion code changes that are necessitated by moving from a single server to a cluster, all of the content applies to making any web application highly available, no matter if it's written in ColdFusion, PHP, or Ruby. In future iterations, I suppose I should rename the talk to "Making Your Web Apps Highly Available."

The presentation also wound up covering a lot more about Amazon Web Services than I had originally planned, but there's so many powerful tools in AWS to make applications highly available that I felt I needed to give a solid architectural foundation for attendees to work from.

In any case, enjoy the slides. The last few slides are reference slides that have links to the services and tools mentioned in the presentation. If you have any feedback about the presentation, I'd love to hear it!

I'm Speaking at NCDevCon 2012!

I'm really excited that the team behind NCDevCon 2012 has selected me to speak at this year's conference. I was really impressed by last year's conference (my first) and I really wanted to speak again this year.

Here's the session description for my session:


Making Your ColdFusion Apps Highly Available

Level: 200 - Intermediate

Thousands of Web applications run on a single server, and that works great. But what happens when you need 99.999% uptime and you have to move your Web application from that single server into a cluster of servers in your datacenter, or the cloud? This session focuses on the challenges you'll face moving your ColdFusion-based app from a single server setup to many ColdFusion servers running in parallel. Specifically, we'll look at changes you'll need to make to your:

  • application code
  • database setup
  • ColdFusion application server setup
  • server configuration
  • network setup
We'll also cover special considerations that need to be made for cloud services like Amazon's Web Services platform. If you've never built a ColdFusion app that runs across multiple servers with shared resources, this session is definitely for you.


At $200 per ticket, NCDevCon is a great bargain. The quality of presentations is on par with other major ColdFusion and Web development conferences, and the conference is small enough that it makes it really easy to talk to speakers and meet new people. You're also only 30 minutes away from the best damn Carolina BBQ on the planet.

Slides from My CFObjective Talk: Making High Performance Caching Easy with ColdFusion

Attached to this post is a PDF of the slides used in the talk I gave yesterday at CFObjective: "Making High Performance Caching Easy with ColdFusion." CFObjective is a great conference (and not only about ColdFusion, by any stretch of the imagination), and one that I felt honored to have been able to speak at. I thought the presentation went well, though I did seem to be talking a bit faster than I usually do (and I'm a fast talker).

After the session, Mark Drew from Railo showed me something very cool that they are working on in Railo 4: the ability to cache the results of a function in the function definition itself. Instead of writing code inside the function to check and see if the item exists in the cache, return it if it does, and build the object and put it in the cache if it doesn't, Railo will do that for you if you add a single attribute to your function definition. Less code = a good thing!

Mark also pointed out that Railo supports Ehcache, memcached, and Redis, another very popular key/value store, and has the ability to put various caches (query, template, saved content, etc) in different locations. It's a very flexible setup.

Speaking at cf.Objective(), UBTech, but, alas, No Open CF Summit

It looks like it'll be another busy Spring for conference presentations for me this year.

I'm honored to have been selected to speak at cf.Objective() this year. I've always enjoyed the conference, and found the speakers to be high-quality and the actionable information I take away from the conference even better. I'll be talking about making high-performance caching easy with ColdFusion. The session focuses on using Ehcache (or any memory-based cache) to significantly improve application performance by caching the right data for your application's use. This is another iteration of the presentation I gave at NCDevCon and the CF Unconference at Adobe MAX last year, but with the guidance of the excellent conference advisory board for cf.Objective(), I've added some key points I had previously missed.

I'll also be speaking at UBTech on a different topic in a different field. In the past year, I've given the "Unleash Your Inner Spielberg" talk at a number of conferences and to different groups across the country. I've really enjoyed doing this talk, and it's evolved a lot a long the way. The team from UBTech called me up late last year to let me know that my session on this topic was one of the highest rated at the conference last year (formerly EduComm). They wanted me to come to this year's conference, but talk about the things I've learned while giving this talk. As such, the title for the presentation this year is "Unleash Your Inner Spielberg When Creating Online Lectures, Part 2, The Director's Cut." It's going to be challenging sifting through three hours of material to get it down to 35 minutes for the UBTech presentation, but relentless editing is a very good challenge to face once in a while.

I'm a bit disappointed that I won't be able to make it to the Open CF Summit this year. It's a really interesting conference, and they've lined up some very interesting speakers and partners. The sessions are really geared to hands-on, practical integration solutions between CFML and lots of different services and environments. It's also incredibly affordable, at $72 for registration. Maybe next year!

Unleash Your Inner Spielberg When Presenting

I've had the privilege of speaking at technical and educational conferences for more than a decade. At the turn of the century (it really wasn't that long ago), I was speaking on using streaming media in higher education, and even did a session on the first release of the Flash Media Server at conferences like Syllabus (back before it became the Campus Technology conference).

There was, alas, a long, dry spell for me in speaking at conferences for the past five years. That dry spell recently came to an end, in a big way.

In the last year, I've spoken at Adobe's Education Summit at MAX, CUE 2011, and Educomm 2011. I also recently spoke as part of the Johns Hopkins Bloomberg School of Public Health Center for Teaching and Learning with Technology's speaker series, giving a variation on the same talk that I gave at some of the other conferences: "Unleash Your Inner Spielberg When Presenting (Online) Lectures."

There are a lot of ways to present information in PowerPoint-style presentations. Most of them don't facilitate information dissemination and cognitive flow. My presentation focuses on using techniques from both film and the stage to help make presentations more engaging and increase learner information retention.

I'm pretty happy with how the presentation has turned out over its various iterations. It's been great for me to get back into the hard work of presenting, refining a presentation, and tuning it for the appropriate current audience.

A recording of the latest iteration of this presentation can be found on the Center for Teaching and Learning with Technology's web events site.

Slides from My NCDevCon Presentation "Improving Application Performance with 3 Simple Functions"

For those of you who wanted my slides from my presentation at NCDevCon — Improving Application Performance with 3 Simple Functions — they're attached to this post. As usual, I learned a lot about what would work and would not work while practicing this presentation, and was making changes just an hour before showtime. I received some good feedback from a couple of people in the session as well, and wanted to extend my thanks to everyone who attended the session,

NCDevCon has turned out to be a really good conference with a number of interesting sessions. A couple of sessions that I wanted to see are running concurrently, which is bad for me but, I think, always the sign of a good conference!

More Entries

BlogCFC was created by Raymond Camden.

Creative Commons License
The content on http://www.iterateme.com/ is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.