5 Reasons to go to cf.Objective

Cf.Objective is in just a few weeks now. Are you going? Here’s why you should:

  1. The content is the absolute best ColdFusion content around. I’m not just saying that because I’m presenting. No introductory stuff, no “Getting started with CFC’s,” just really stellar content.
  2. The price is right. I think the whole thing, including air fare, hotel, taxis, and food cost me under $1300 last year. That’s less than many local training courses, but provides so much more.
  3. Access to the experts. Want to ask Ray Camden, Sean Corfield, Joe Rinehart, Mark Mandel, Mark Drew or one of the other experts something? Well they’re usually just hanging out in the halls. They don’t bite… Except for one of the Mark’s. I’m not saying which, but I think you’ll find it a pleasant surprise.
  4. Everyone is a student. What are the instructors doing between their talks? Most of them are in other people sessions. I don’t know why this strikes me as so cool, but I guess it just feels so much more… collaborative than authoritarian. You’re not learning from experts, you’re an expert by being there, and sharing in the experience. Or I dunno, maybe that’s too granola for you all, but I like it.
  5. If you don’t go Sean Corfield will hunt you down. You will be Ice-T in his home movie version of Surviving the Game. It’s true.

WebManiacs Early Bird Pricing Ends Today

That’s right, today is your last day to get reduced prices for the WebManiacs conference. After today, the only way to get a reduced price is to take a picture of you flashing your gams, send it in, and hope the guys and gals at Fig Leaf approve.*

Of course, you want to go, and see me speak about Air and SQLite, so sign up and get that reduced pricing.

* Actually, I’m fairly certain that won’t work. And gams are legs, for those of you who didn’t grow up during the Great Depression.

I’m in Your IPOD!

Or I would be if you are subscribed to the ColdFusion Weekly Podcast.

I got to participate in the CF_Rountable, a new format for the show where a bunch of ColdFusion community members talk about various geeky topic fodder. This week’s group was:

This is in addition to the hosts:

It was a tremendously fun to participate. It was also impressive to see the amount of work and effort that Matt and Peter put into the podcast. They deserve a lot of credit for making it look effortless.

If you get a chance to participate, or see a call for participation, do it. You won’t regret it.

Come to think about it, you should probably listen to it too. You won’t regret that easier.

Yawn, Blue Dragon Goes Open Source

The ColdFusion community is aflutter with news that Blue Dragon has gone open source. Many other voices have chimed in on this. But I feel like I have something different to say.

Regardless of the any business gains that Blue Dragon gets from doing this, I don’t think the community will get a tremendous benefit from this.

You see, there is this stream of logic that goes something like this:

  • ColdFusion has a small market share, and it is shrinking
  • ASP.NET, PHP, and Ruby (on Rails) have much more of the market
  • PHP and Ruby (on Rails) are Open Source and free.
  • ASP.NET is zero cost on top of something else we forget you have to pay for
  • ColdFusion would gain market share if it was open source.
  • By “open source” we actually mean “free.”

I think this line of reasoning comes from people that base their request for opening up ColdFusion on what they think the rest of the web development world wants. They think it is all about cost. There are reasons that other people prefer PHP or Ruby (on Rails) or ASP.Net. Not all of those reasons have to do with ColdFusion’s cost.

  • Some people just have to do many small CRUD apps. For just this specific subset of CRUD apps, Ruby on Rails is a better solution than a default install of ColdFusion.
  • Some people want to build around one or several of the many open source applications written in PHP. Why use ColdFusion when you just have to write a few extra PHP pages.
  • Some people have to work with proprietary Microsoft technology. With the exception of Exchange, ColdFusion isn’t as good as ASP.Net for that.
  • Alright – some people don’t like proprietary solutions of any kind. At least we know they’re not using ASP.Net.

I think the ways in which ColdFusion can build inroads around these solution-needs are:

  • More community support around the existing scaffolding solutions for ColdFusion
  • More open source solutions written IN ColdFusion
  • More Adobe support around proprietary interfaces that draw people away from ColdFusion.
  • Acceptance of the fact that just because some people won’t buy proprietary solutions doesn’t mean they shouldn’t exist.

Notice “open source ColdFusion” wasn’t on that list. I don’t think it ever will be.

I don’t know which of the reasons holds the biggest opportunity for ColdFusion to gain market share. You’d need to do surveys and ask current and defecting customers a whole bunch of questions. That sounds like a job for the marketing department of Adobe. Hmmm. Didn’t Adobe add tags for getting information about database’s schema a little easier? Didn’t they fund RIAForge? Didn’t they add code for calling .NET assemblies and the CFExchange tags?

I think Adobe has already decided which customers they are going to go after. Right or wrong, they’ve stuck with selling their current solution, and tailoring it to get those three groups. I think what happens to Blue Dragon, ColdFusion, and market share will do a good job of sorting out who’s right here. I’m betting on Adobe.

Oh, why did I write “Ruby (on Rails)” everywhere? I get annoyed when people fail to understand the distinction between the language and the framework. That being said, I think that Ruby on Rails is the right thing to call the ColdFusion competitor, as it is the entire solution that attracts web developers to it, not just the language. As a further aside, I think the total solution that ColdFusion provides is the special sauce of ColdFusion, not just the language.

ExportReports.com

I’m pleased to announce that I’ve teamed up with Mark Phillips and the guys at Vertabase to publicly release ExportReports.com.

What is ExportReports.com, you ask?

ExportsReports.com is a site that enables users of the 37signals product Basecamp to export copies of their projects to a PDF file. Before ExportReports, a Basecamp user could request a backup of their site, and receive an XML dump of their project. Now, through our site, a user can ask for PDF exports at will. It’s perfect for either ongoing status reports, or an end of project knowledge dump to a client.

We do charge a small fee, but for the first month, we are running at reduced rates.

Technology

ExportReports was written with Adobe ColdFusion, and uses the Basecamp API’s provided by 37signals. Three factors led to us choosing ColdFusion:

  1. We needed to consume webservices, and ColdFusion makes this really easy.
  2. We needed to work with PDF’s and ColdFusion pretty much rocks the PDF.
  3. Let’s face it, I think ColdFusion rocks.

So, wish me luck on this commercial endeavor. If you’re a Basecamp user, I hope you like it. If not, become one, it’s a fantastic product. Then use ExportReports.com.

About Time – An Air and SQLite Application

I few days ago I came across this post at Signal vs. Noise. The first item is about a clock that tells you the approximate time – for example 11:59 is “Nearly Twelve”, 12:30 is Half Past Twelve, etc. etc. The idea is, “Do you really need to know it is 12:53?” This clock gives you the amount of precision that you actually need when dealing with time.

I thought it was kinda cool, but I would never buy one. However when I thought about it, I realized it would make a good AIR application.

After thinking about I decided to do it because:

  • It’s a simple thing to write
  • It could use a database
  • I have a Air and SQLite presentation to prepare

All of these things added up to me writing the thing in about a day. Here’s what I did:

  • Filled a SQLite database with times and descriptions
    • 1 = Just After
    • 15 = Exactly Quarter Past
    • 59 = Nearly (Next hour)
  • Used HTML, JavaScript, and an Image to build the UI
  • Got rid of the default Chrome
  • Used Air Methods to query the database.
  • Placed taskbar items that allow you to:
    • Close
    • Force app Always on Top

The amazing thing to me was how easy it was to do. The actual app worked relatively quickly, most of my time was spent getting the details like icons, and text placement correct.


Download About Time

So if you want to know about what time it is, download your copy of About Time.

Disclaimer: This totally is “an Air app that didn’t really need to be”. I get that. I figured someone else might like it, or at least want to look at the source.

Posting Form to Itself

I’m working on someone else’s code base, and found that they were posting forms to themselves. However they had hard coded the form template names into the code for the form. Like the following:


action=“index.cfm”
method=“post”>

This is a bit of a pet peeve of mine because it tends to make the code very un-portable. What happens if you rename the file “dosomethingelse.cfm.” Now you have to go back and change the file name and the reference.

It was a quick proof of concept application, so I don’t fault the author. But they just aren’t lazy enough.

I prefer doing it this way:


action=“#cgi.script_name#”
method=“post”>

It’s highly cut and paste-able, and you never have to worry when you rename your templates. If you aren’t using cfform, you can still do it, just wrap the form element in a .

Now, I imagine that I will get a comment that says something about not trusting cgi variables. It works with every flavor of IIS and Apache that I have ever worked with. Anybody see any gotcha’s doing that.

Using ColdFusion and SVN to Create Release Notes

I was talking last week about using XML to act as an intermediate step in building your documentation (Automating Documentation and Automating Documentation Part 2). It dawned on me that I could also share my technique for building release notes.

I use Subversion. I’ve gotten positively anal about commenting when I make changes. So if you were to take the history of my SVN commits, they make pretty decent release notes. The trick is to grab them and automatically turn them into documentation.

SVN makes this pretty easy. It takes one command to grab all of the changes. It takes one switch to make the change export as XML. Once that is done, manipulating the content in ColdFusion is a breeze. I do it using <cfexecute> and svn.exe, below is my code:

<cfset svn.wc = “[path to svn working copy]”
/>

<cfset svn.exe = “[path to svn executable]”
/>

<!— -v = verbose –xml outputs it as xml —>

<cfset svn.arg = “log #svn.wc# -v –xml”
/>

<!— get contents of SVN history —>

<cfexecute name=“#svn.exe#”

arguments=“#svn.arg#”

timeout=“30”

variable=“changes”
/>

<cfset changes = XMLParse(changes) />

<cfoutput>

<cfloop
index=“i”
from=“1”

to=“#arrayLen(changes.log.logEntry)#”>

<!— lxml = LoopLocalXML (shorted for display) —>

<cfset lXML = changes.log.logEntry[i] />

<dl>

<dt>#lXML.XmlAttributes.revision#</st>

<dd>

<ul>

<li>#lXML.author.XMLText#</li>

<li>#lXML.date.XMLText#</li>

<li>#ParagraphFormat(lXML.msg.XMLText)#</li>

</ul>

<p>Files Effected</p>

<ul>

<cfloop
index=“j”
from=“1”

to=“#arraylen(lXML.paths.path)#”>

<!— lPaths = LoopLocalpaths —>

<cfset lPaths = lXML.paths.path[j] />

<li>

#lPaths.xmltext#

(#lPaths.xmlattributes.action#)

</li>

</cfloop>

</ul>

</dd>

</dl>

</cfloop>

</cfoutput>

In my build process, I use <cfsavecontent> and <cffile> to write the content to a file, and then use ANT to call the CFML page that creates the release notes – voila, release notes are now part of every build, with no extra work on my part.