Bye CFUnited, Hello Community

I’ve seen a variety of opinions on the announcement that this year will be the final year for CFUnited. Some are lamenting, some are worried, and some are FUD that I’m sure will be turned into self-promotion. I figured as ColdFusion Evangelist I should weigh in.

Disclaimer: I never attended CFUnited before I joined Adobe. I am a long time Max attendee, and a cf.Objective fan. Those were my gateways to the community. So I’m not trying to say you shouldn’t be nostalgic for CFUnited, but I am not.

CFUnited’s end is decidedly an event on the ColdFusion Community timeline. Adam calls it the end of the Silver Age of the ColdFusion community, referencing the comic book era.

I see it as a bit of creative destruction. See in the past few years, we’ve seen the rise of smaller regional conferences:

They aren’t limited to ColdFusion, but all include it, and put ColdFusion in front of more new eyes than CFUnited.

This is of course in addition to our long-standing specialized or regional conferences with ColdFusion content:

The great thing about all of the conferences I mention here both new and older is that they are cheap for attendees and sponsors, attract new people, and have a low barrier for entry. That means that people who aren’t long-standing members of the ColdFusion community can break in and get a chance to speak despite not being a “name.”

I see CFUnited’s end as an opportunity for Adobe and the ColdFusion community to invest in more of these local specialized and regional events. We now have more resources collectively to do that together.

So I issue a challenge to everyone lamenting CFUnited’s demise. Show up for CFUnited’s last hurrah, and then invest in one of the other conferences. Or start your own…

Dear ColdFusion Skeptic

Hi, how you doing? Your day going okay? Cool. I’m not looking to fight you. It got a little heated on Twitter. I know our community is passionate; sometimes that “passion” becomes “an angry mob of flame warriors.

You think bad things about ColdFusion. You’re certainly entitled to your opinions, but I think you’re mistaken. I think it’s possible you haven’t tried ColdFusion in the past few years, or ever. If you haven’t, I invite you do so.

But let’s be civil. We can disagree without it being a whole flame war thing.

Let me respond to your issues, we’ll see if I can’t persuade you to see things from a different view. First, let’s start with why you say you dislike ColdFusion:

“ColdFusion encourages spaghetti code.”

It doesn’t. Unfortunately, it enables it, just like most other languages. However, we do have a number of features and community driven projects around enabling well-architected applications. Those include:

All of these combine to make it easy to create well-encapsulated, modern projects in ColdFusion. Here’s an example of some modern ColdFusion code I used in a recent project.

“ColdFusion is just tags.”

Actually it isn’t. In addition to CFML, ColdFusion also supports CFScript. Most of the core features that CFML enables are available here. There are a few view related features (for example AJAX driven html form tags) that aren’t implemented in CFScript because they don’t make sense to.

One thing I’ve found about writing in both script and markup is that writing an app entirely in markup is painful and silly, as much as writing entirely in script is. I’ve come around to the idea that views should be in markup. Views contain hierarchies of content, containers, and other features that are easy to express and understand in markup. On the other hand, when you are dealing with large libraries of functions and business logic while trying to figure out what each piece of code does the less extraneous characters the better. That’s why scripting is better on back-end code.

ColdFusion enables both. Do what you like, where you like. You have the choice in CF to do so.

“ColdFusion isn’t free.”

It isn’t. Sure there are open source clones out there, and if you like the rest of what I have to say, but can’t get over this, feel free to check them out.

ColdFusion is a productive language. If you look at Total Cost of Ownership versus similar products, you’ll see that the cost of licensing is a small part. Development and maintenance is the largest chunk of TCO. Every solution pays this cost, and a language that is more productive will be cheaper in the long run, despite upfront licensing costs.

Total Cost of Overship Chart

All that being said, I skipped out on one part of the story here: development is free. The developer version of ColdFusion is free. If you do move to a production environment, shared development, testing, and disaster recovery servers are free too. The IDE, ColdFusion Builder, isn’t free, but there are free and open source alternatives. If you are using ColdFusion for educational purposes the server and IDE are both free.

ColdFusion does have low cost hosting out there. Additionally, ColdFusion 9 tweaked the EULA with regards to cloud hosting, making it both possible, and economical.

It’s not free. It costs money. But we at Adobe feel that we provide a lot of value for that cost.

“ColdFusion doesn’t have any open source projects.”

Riaforge.org, which requires included projects to be open source, lists 716 ColdFusion projects and 39 ColdFusion Builder Extensions at the time of this post. Brian Rinaldi’s open source list lists 352 projects.

Enough with your arguments let me tell you why I think ColdFusion rocks:

I’ve already written extensively on this, so I’ll sum up and invite you to check out some of these other posts.

ColdFusion makes hard things easy. Most things in ColdFusion are single operations. By “most things”, I mean “things that every web programmer has to do but other technology solutions don’t integrate at a language level.” Send an email? Wrap 2 lines of code around your message content. Talk to an LDAP server? One ColdFusion tag call (or script object.) I don’t have to manage database connections. ColdFusion has features that make it easy to work with results from a database. It doesn’t take me 80 lines of code to talk do an HTTP get request.

ColdFusion already integrates with lots of technology. Need to talk to LDAP, Microsoft Exchange, Microsoft Office or a Java Portlet server? ColdFusion comes equipped to do so. Need to integrate some Java or .NET project into your application? ColdFusion can talk to either. Need to talk to printers or cell phones via SMS? ColdFusion can do it. The great thing here is that I don’t have to search for and rely on third-party code to do so. I can if I want to but for a lot of these commonly used technologies, ColdFusion already talks to them.

ColdFusion can play many roles in a web application stack. Need to build a classic HTML driven web application, or and AJAX driven site? ColdFusion can handle that. Want to build a Flash based rich application? ColdFusion has special protocols that make it a snap to call from Flash, again right out of the box. Need to write a SOAP or REST API for your application? ColdFusion can do that, usually by just writing an easy façade on your existing code. Need to build an IM or SMS driven application without a web based front end… Yep, ColdFusion has you covered.

I hope you made it this far. I hope I caused you to question your stance. I can even hope that I encouraged you to try ColdFusion before you dismiss it.

European Online Event

We just got done with Adobe Developer Week (recordings here), a week-long collection of web seminars designed to help people get up to speed with Flash Platform tools and services. The only problem with it was that it was a little North American focused in scheduling.

The European team is looking to bring the same kind of event to our European friends. The event is called “Build an App in a Week.” The idea is to walk you through all the parts of the Flash Platform that can be used to build multiscreen applications.

I’ll be showing how ColdFusion can be used to power the back-end of an application, regardless of what type of screen it is on. My intention is to show how the old ColdFusion mantra of “Make hard things easier” applies in the mobile application world. Feel free to invite other developers, especially ones that don’t use ColdFusion

The ColdFusion session will be on Friday June 11th, at 12:00PM GMT.

Make sure you check out the sessions by my coworkers too.

ColdFusion Builder Update 1

I’m proud to say we released ColdFusion Builder Update 1 today.

You can read the release notes for yourself, but the small picture here is that we fixed a bunch of bugs. Most were related to performance or usability. The big picture is that the team kept its promise of faster updates for CFBuilder than we’ve seen from the ColdFusion team before. It’s been 3 months since we released CFBuilder and despite working on ColdFusion 9.0.1 and Storm, the team came through with an update.

In order to run the update, you must use the Adobe Updater. To update:

From the Help menu, select Adobe ColdFusion Builder Updates. The updater files are downloaded and silently installed.

Important Notes:

  • If you are on Windows 7 or Windows 2008 Server, you must run ColdFusion Builder as an administrator to run.
  • If you have issues with update on CFBuilder as a plugin, close Eclipse and relaunch with the –clean option.
  • This will run the Adobe Updater for all of your Adobe software, not just CFBuilder.

ColdFusion European Tour

After Scotch on the Rocks, Ray Camden, Ben Nadel, Claude Englebert , Alison Huselid and myself are going to tour around Europe, spreading the ColdFusion goodness to the continent. I for one can’t wait.

Here’s our schedule:

Brussels – May 26, 7PM
Adobe Belgium – Culliganlaan 2F, Diegem
More Info

Amsterdam – May 27, 5.30PM
Adobe Systems Benelux B.V. – Europlaza, Hoogoorddreef 54a, Amsterdam
More Info

Munich – May 28, 5.30PM (Ben Nadel, Terry Ryan)
Adobe Systems, Georg-Brauchle-Ring 58, 80992 München
More Info

Zurich – May 28, 18PM (Ray Camden, Alison Huselid)
Technopark, Technoparkstrasse 1, 8005 Zürich
More Info

Come be Part of Adobe Developer Week

Adobe Developer Week is next week, and it is shaping up to be massive. We’ve put together a lineup of 19 sessions dedicated to current and pressing topics on the Flash Platform. In response over 20,0000 of you have signed up and are ready to learn more.

I’m personally doing two sessions:

Adobe Flash Builder 4 and Adobe ColdFusion 9

May 12, 2010 2 pm PDT

Flash Builder 4 and ColdFusion 9 were made to work with each other, literally. This session will show you the features in ColdFusion 9 that will make your Flex life easier. You will also get to see how Flash Builder’s new features help to rapidly make Flash-powered front ends for your ColdFusion back ends.

Adobe ColdFusion 9 and Adobe Flash Catalyst CS5

May 14, 2010 11 am PDT

ColdFusion has always been about RAD. It continues to be the fastest way to create back-ends for your data-driven applications. Flash Catalyst can do the same for your front ends, making it easy to create Flash-powered content that people want to use. This session will show you how Flash Catalyst and ColdFusion can be combined for some lightning-fast application development.

So go sign up and be a part of what is shaping up to be quite a massive event.

Make sure you check out the rest of the content:

  • Welcome and Introduction to the Adobe® Flash® Platform: Ben Forta
  • Building Multi-Screen Applications with the Adobe® Flash® Platform and Adobe® Creative Suite® 5: Paul Trani
  • New Features in Adobe® Flex® 4 Framework: Deepa Subramaniam
  • New Features in Adobe® Flash® Builder™ 4: Andrew Shorten
  • Adobe® Flash® Catalyst™ CS5 for Developers: Doug Winnie
  • Building Mobile Applications with Adobe® Flash® Professional™ CS5: Create a Game: Paul Trani
  • What’s New in Adobe® Flash® Builder™ for Java Developers: James Ward
  • New Features in Adobe® Flash® Player 10.1: Lee Brimelow
  • Creating Sexy Applications with the Adobe® Flash® Platform: Designer-Developer Workflow: Serge Jespers
  • A Basic CRUD Application with Zend AMF and Adobe® Flex 4 Ryan Stewart and Kevin Schroeder
  • Adobe® Flash® Builder™ 4 and Adobe® ColdFusion® 9: Terry Ryan
  • Advanced Features In Adobe® Flex®: Ely Greenfield
  • AS34J: ActionScript 3 for Java Developers: Chet Haase
  • Adobe® Flash® Platform and Salesforce.com: James Ward
  • Adobe® Flash® Builder™ for Adobe® Dreamweaver® CS5 Users: Ryan Stewart
  • Using Advanced Features with Adobe® Flex® & PHP: Ryan Stewart
  • Adobe® ColdFusion® 9 and Adobe® Flash® Catalyst™ CS5: Terry Ryan
  • Adobe® Flex® and BlazeDS Integration with SpringSource: Christophe Coenraets and Jeremy Grelle
  • Building Desktop Applications with Adobe® AIR® 2.0: Ryan Stewart

ColdFusion Builder Tour – LA Area

This week I’m doing two stops on the ColdFusion Builder User Group tour. Both are in the LA area.

I’ll be stopping by the The Inland Empire ColdFusion User Group meeting on April 7th at 7:00PM on the Cal Poly Pomona campus. Check out their site for directions and whatnot.

I’ll also be stopping by the LA Web Professionals meeting on April 8th at 6:30 in Hollywood. Check out their site for whatnot and directions.

I’ll be talking about ColdFusion Builder as well as Flex and Flash Builder. I look forward to seeing you all there.

Apptacular, onProjectCreate, and Annoying Database Conventions

Sorry for the MeatLoaf-esque title, but I have a video demo that shows off some new features of both ColdFusion Builder extensions in general, and Apptacular in particular.

onProjectCreate

One feature of extensions that hasn’t been getting any play is the fact that you can wire up your extensions to run after a project is created. At the end of the New Project Wizard you can choose from a list of all of the extensions that have this enabled, and run anything an extension can do. This is really cool for starting up your projects with your preferred structure and style right from the get go. The video demo shows running Apptacular in this manner.

Prefixes

ORM and databases are great together, but sometimes database conventions run afoul of ORM best practices. Take table prefixes for example. Having a table with tbl_user makes some sense on the database side, it’s basically Hungarian notation for tables. (I’ve also seen people append the schema name to the table, as in the video.)

As necessary as it may be on the database side, it’s a big pain on the ORM side. We don’t want to work with a tbl_user object, we want to work with a user object.

Apptacular allows you to set a prefix that you can have removed from any of your tables. In this case it will convert the table tbl_user to the ORM entity user. Very handy, and saves a lot of work.

Plurals

The other convention that gets in the way of generating ORM content from the database is plurals in tables. So table users should translate to the ORM entity user. I’ve added a checkmark option that will try and do that for you.

So these options combine to make writing clean, readable ORM from databases with these conventions really quick and easy. Check out the video to see this in action.

http://vimeo.com/moogaloop.swf?clip_id=10526198&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=00ADEF&fullscreen=1

Apptacular ColdFusion Builder Extension – onProjectCreate, prefixes and depluralizing. from Terry Ryan on Vimeo.