ColdFusion Builder Tour – More Stops

I’ve added a few more stops on my stretch of the ColdFusion Builder Tour.

I was already scheduled to do:

Dallas, TX  DFW CFUG Wednesday March 24 7:30PM RSVP
Philadelphia, PA  Philly CFUG Tuesday March 30 6:00PM RSVP

 

Make sure you sign up for these if you are planning on coming.

I am now adding:

Pomona, CA  IECFUG Wednesday April 7  
Los Angeles, CA  LA Web Professionals Thursday April 8  
Chicago, IL  CCCFUG Wednesday May 12  

 

Details are forthcoming

ColdFusion Builder and Flash Builder FREE for Education

So yeah, the title pretty much says it all. If you are a student, faculty, or staff member of an educational institution, looking to use ColdFusion Builder or Flash Builder for educational purposes, they’re free.

Go get them: freeriatools.adobe.com.

It’s important to note, that if you are looking to set up a lab of multiple computers, you don’t have to get a license for every machine or student. You can use the license we give you to install on multiple machines. Just let us know when you sign up that you intend to do so.

Upgrade from Flex Builder 3 Professional and get ColdFusion Builder

Asked a few times in various places:

If I am a Flex Builder 3 Professional User, is there a way to upgrade and still get ColdFusion Builder, since ColdFusion Builder comes with a copy of Flash Builder?

If you are a Flex Builder 3 Professional User, you can upgrade to Flash Builder Premium for $299. Flash Builder Premium has a few key features above and beyond Flash Builder, including Network Monitor, profiling tools, and unit testing support. We made a handy upgrade chart for you.

To upgrade, you can head to the Adobe store.

ColdFusion Builder GO!

I’m happy to announce that this morning, at 12:00 AM EST*  ColdFusion Builder has been released and is available for purchase. Before I tell you how kick ass ColdFusion Builder is let me answer the questions everyone has asked me that I’ve had to be coy about for the past few months.

When will it be released?

TODAY!

How much will it cost?

ColdFusion Builder Standalone will cost $299 and will include Flash Builder Standard. That’s right; you get ColdFusion Builder and Flash Builder for $299.

Flash Builder Premium will also include ColdFusion Builder for the price of $699.

Where do I get it?

http://www.adobe.com/go/coldfusionbuilder

Okay, that’s out of the way. Let’s talk about ColdFusion Builder.

I love ColdFusion Builder. Sometime during the betas I switched over to using ColdFusion Builder, and I haven’t looked back. I’ve put up with reinstalling over and over and over again through 3 public betas, and several private alphas, and several private refreshes. I’ve done this because I was excited with every drop to see what our engineers added. With few exceptions every release was a phenomenal leap over the previous versions.

Of course I’m going to say this, because I work for Adobe, right? Well I’ve griped, but gripes go inward, not outwards. (At least in the written form 😉 )

It’s not hard for me to pick my favorite feature: ColdFusion Builder Extensions. Extending an IDE isn’t a new concept. We chose Eclipse as the platform for ColdFusion Builder precisely because it was designed to be extended. But the fact that ColdFusion developers can extend Builder with the language in which they are expert instead of dropping down to Java and Eclipse development is huge. It makes the development of plugins have almost no barriers to entry. Have an idea? Write 50 lines of code and XML and there it is. We’ve already seen 30 extensions up on RIAForge before ColdFusion Builder is even out of beta. I am continuously impressed at what the community is doing in this space, and I can’t wait to see what they do after today.

Check out for yourself what the community has done at the ColdFusion Builder Extensions section at RIAForge.

It’s tough to get a sense of how good a product is when you are working this close to it. You don’t know if you have something, or you’re suffering from groupthink. But some people will always find fault, some people will always love everything. You have to throw away those opinions and focus on the rest. Doing this, I think the verdict on ColdFusion Builder is that it is a great product, an impressive 1.0 product, and it still has lots of potential for which to strive in future versions.

I think the engineers, and product manager (Adam Lehman) deserve a round of applause (and several rounds of whatever they want to drink) for their efforts.

Go get yourself some ColdFusion Builder today!

 

* Or possibly earlier.

ColdFusion Builder Refcard


Refcard Screenshot

DZone just published my latest contribution to their Refcardz series, Getting Started with ColdFusion Builder. It’s intended to be a quick overview on getting up to speed with ColdFusion Builder, and a tour of the major features.

This joins my Getting Started with ColdFusion 9 Refcard.

It’s great to get ColdFusion content onto DZone, as they reach outside the normal ColdFusion audience. So check it, and their other Refcardz out.

Special ColdFusion Builder Tour Events

For some reason, the ColdFusion Team is going on a tour in March and April, to spread the word about ColdFusion Builder, which is currently in public beta 3 on labs.adobe.com.

I’m hitting two cities for now; some other dates are still in talks:

Dallas
March 24, 2010 7:30PM – 10:00PM
To RSVP

Philadelphia
March 30, 2010 6:00PM – 7:00PM
To RSVP

I’m extremely excited about both of these events. I hit Dallas on the last year’s User Group and they did a completely kick ass event with the Flex Group. As for Philly, it’s where I live, and I haven’t been to an event here since I’ve worked for Adobe. I’m always somewhere else, but not this time.

I’ve got some cool stuff to show, and I can’t wait to see you all.

ColdFusion Builder Extension Using Flex

So, buried in the documentation around ColdFusion Builder is the fact that you can write extensions in Flex. I decided to fool around with this for a bit.

If you want to skip all of the demo and explanation and just try it out, feel free to pull down the extension:

Builder Stats at RIAForge

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

Builder Stats – ColdFusion Extension with Flex from Terry Ryan on Vimeo.

 

So doing it is pretty easy on the Builder side:

  • Create a remote service CFC for all of the information that you want to expose to Flex
  • Have your ColdFusion Builder extension pass information to the Flex generated SWF
    • Pass any variables to the SWF just like you would pass URL variables

On the Flex side:

  • Pull in the remote service cfc as a WSDL* using Flash Builder’s Data/Services
  • Write your Flex app to use the services that get created
  • Alter the generated ActionScript classes to use a WSDL that is passed into the SWF via the URL (Flash Params)

One more thing:

I’m not sure if this is a Flex thing, a ColdFusion thing, an OS thing, a webservices thing, or a me being dumb thing, but the automatically generated WSDL for my remote service CFC was different on Windows and Mac. Consequently the SWF could call the Mac hosted WSDL but not the Windows hosts WSDL. My solution? Create a static WSDL file that had the service spelled both ways. Maybe a hack but worked like charm.

Anyway, if you want to see the code, it’s available on github:

*WSDL? Why not Flash Remoting (or ColdFusion in the Data/Services list)? Remoting needs to be configured to each system’s configuration, and isn’t very discoverable. WSDL doesn’t require knowing about the Extension user’s AMF setup; it just uses a URL, which can be easily discovered.

 

Builder Extension using HTML

One of the cooler features of ColdFusion Builder’s extension tooling is the ability to create extensions that are driven with HTML/JS/CSS instead of with the default XML options. I think this has a few advantages:

  • Allows interface options enabled by the XML options
  • Allows better branded extensions via CSS and background images
  • Allows you to develop/debug your extensions like normal web applications

This is pretty easy to enable. Normally you would have code like this in your handler to communicate back to the IDE:

<cfheader name="Content-Type" value="text/xml">
<response status="success" showresponse="true">
    <ide >
        <dialog width="600" height="400" />
        <body>
            <![CDATA[
                Some Response
            ]]>
        </body>
    </ide>
</response>

Instead you pass a URL parameter to the ide tag in your extension handler:

<cfheader name="Content-Type" value="text/xml">
<cfoutput>
<response showresponse="true">
    <ide url="http://localhost/extension/handler.cfm?configPath=#configPath#" >
        <dialog width="655" height="600" />
    </ide>
</response>
</cfoutput>

As you can see it can even handle URL variables.

Now, where I ran into trouble with this was with the URL itself. Basically you can’t be sure of the URL when dealing with extensions. It could be localhost, but it just as easily could be on a remote server. So I was all clever and wrote some code to handle this:

<cfset baseURL = "http://" & cgi.server_name  />
<cfset messagesPath = getDirectoryFromPath(cgi.script_name) & "/messages.cfm" />
<cfset messagesOptions = "?type=notanapplication" />
<cfset messagesURL = baseURL  & messagesPath & messagesOptions >

 

You see, this will give me the correct URL to use to pass information to a template named “messages.cfm” that sits in the same folder as my handler. I use CGI variables to grab the server information. Then I use getDirectoryFromPath to make sure that I get the real relative path of the folder that the extension is sitting in (as opposed to assuming that it lives in the webroot). This works great.

Except I got reports of one of my extensions not working at all for some people. Look at that code again… There’s another big assumption there. The assumption is that the extension is being called over the default http port, which for many ColdFusion developers it isn’t. So the correct version of this code goes:

<cfset baseURL = "http://" & cgi.server_name & ":" & cgi.server_port />
<cfset messagesPath = getDirectoryFromPath(cgi.script_name) & "/messages.cfm" />
<cfset messagesOptions = "?type=notanapplication" />
<cfset messagesURL = baseURL  & messagesPath & messagesOptions >

Doing this you can be sure that you hit the right URL regardless of:

  • Server hostname
  • Server http port
  • Relative location of extension to the webroot

Happy extension building.

Apptacular Update and Video

I know I’ve been quiet of late. But I’ve been working.

You see a few weeks ago I had this checklist up on the site:

  • Make sure apptacular_blog database works on MySQL on MAC.
  • Make sure apptacular_blog database works on MySQL on PC.
  • Make sure sakila database works on MySQL on MAC.
  • Make sure sakila database works on MySQL on PC.
  • Make sure apptacular_blog database works on MSSQL on MAC.
  • Make sure apptacular_blog database works on MSSQL on PC.
  • Make sure adventureworks database works on MSSQL on MAC.
  • Make sure adventureworks database works on MSSQL on PC.
  • Fix major issues in code readability.
  • Start Document how to work with Apptacular

See those AdventureWorks database items? They nearly killed me and made me want to stop work on Apptacular. AdventureWorks is like a cruel Double Dare obstacle course for code generation:

  • Composite primary keys
  • Composite foreign keys
  • Composite primary keys that are also foreign keys
  • Custom Datatypes
  • Constraints (Really only affected unit testing).

I came through, and now I can give you this list:

  • Make sure apptacular_blog database works on MySQL on MAC.
  • Make sure apptacular_blog database works on MySQL on PC.
  • Make sure sakila database works on MySQL on MAC.
  • Make sure sakila database works on MySQL on PC.
  • Make sure apptacular_blog database works on MSSQL on MAC.
  • Make sure apptacular_blog database works on MSSQL on PC.
  • Make sure adventureworks database works on MSSQL on MAC.
  • Make sure adventureworks database works on MSSQL on PC.
  • Fix major issues in code readability.
  • Start Document how to work with Apptacular

So that’s where I am. A few of you asked if you could get your hands on Apptacular and I would be happy to distribute it to individuals. I’m not ready for general availability yet though.

And as a final note, I thought I would share this feature with you: Apptacular can model CRUD for image fields in your database.

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

Apptacular ColdFusion Builder Extension – Working with Images from Terry Ryan on Vimeo.

Builder Stats

You may have seen my previous posts about Apptacular. I’m getting pretty far along in it, and I wanted to figure out how many lines of code I had written, you know, for my only curiosity’s sake. There’s no easy way of doing this, but I figured that this was the perfect excuse to build another extension.

So basically I wrote an extension that will count every nonblank line in every file in a targeted folder. It then groups those line counts by folder, extension, and then just all files.

This extension isn’t going to change anyone’s life. But it’s a great example of the fact that ColdFusion Builder extensions remove barriers to entry for this sort of thing. If I had to drop to Java to extend this in Eclipse I would have never done it – too much work for too little reward. But with ColdFusion Builder extensions in ColdFusion there’s very little cost to indulging in this sort of experiment:

  • 10 minutes to write the base code
  • 10 minutes to turn it into an extension
  • 1 hour getting the formatting right to share publicly. (CSS is sadly harder then ColdFusion)

Feel free to use it, and improve on it: BuilderStats at RIAForge.