Many Sites, One Codebase

The ultimate of reusable code: using one codebase to serve many sites. Not copies of that codebase mind you, but one actual set of code templates. Update a template to fix a bug or add a feature and...? Presto! You've just updated X number of sites at once. Genius! Or is it?


Out With the Old, In With the New: Welcome 2011

2010 brought a lot of changes to the Blades household, the biggest of which being a promotion into management at my job. I took over managing both the Systems and the Development Team, at a time when there wasn't much team left. This began a long, arduous task of recruiting and hiring, and by the end of the year I had hired three ColdFusion developers, one User Interface/User Experience specialist, one SQL developer, one desktop administrator, and one systems administrator. Along with this we took on the completion of four major projects with very short deadlines. These had begun prior to me taking the new position, and were out the door fairly close to schedule, but with the fun that accompanies projects that are poorly planned ahead of time. One of them had a necessary last minute technology change on client-side rendering, which happened very quickly but dragged our testing and deployment schedule immensely. I even pushed through a switch on our mapping application at the last minute, to use Google's JavaScript v3 Maps API, which I actually got to write myself (you don't write much code in management).

2010 also brought my new book, Learning Ext JS 3.2. Due to some scheduling issues with one of the other authors, the book was released way behind schedule, finally arriving just weeks prior to the Sencha Conference. ExtLLC became Sencha, who released their new Sencha Touch framework for mobile development. During the Sencha Conference they also showed some sneaks of the upcoming Ext JS 4; a rewrite of most of the existing framework making it leaner, meaner, faster, better. Hey look! New book material ;)

Adobe had some killer announcements as well. After Apple had banned new apps to the AppStore from cross compilers, Adobe turned around and focused heavily on the Android platform, releasing some very nice tool enhancements for creating mobile content, as well as getting the Flash Player into the Android Marketplace. Later in the year, Apple reversed their cross-compiler position, and Adobe immediately began to work again on tools for creating mobile content on the iOS platform. Unfortunately for me, I was so heavily entrenched at the office that I didn't get to spend near enough time playing with these new developments (Adobe or Sencha). That's about to change though...

In my new role, as a manager, I had hoped to have the ability to drive technical change in a positive direction. Unfortunately, events that long preceded my taking the position worked hard to prevent that momentum, and many of the decisions were no longer mine to make. This, coupled with the drain on my time, my family, and my ability to do the things that I enjoy, were taking a heavy toll on my personal well being. Time had finally come for a change.

December was a very interesting month. First I recieved an offer for a new opportunity, once again doing full time development, but this time as a telecommuter with flex schedule. I wasn't looking at the time, but it kind of came to me, and appeared a perfect fit. I resigned my management position, with the customary two week notice. This was bittersweet, as I had devoted a lot of time and effort to the company over the past five years, but this new opp was too good to pass up, and works with a vertical that's very near and dear to my heart. On a Friday I said goodbye, and the following Monday went to work with the new gig for a week before taking 10 days of pre-planned family fun for my daughter's birthday and the Christmas holiday.

Now that my time is settling back into some semblence of a groove, I once again have some time to re-devote to the different development communities I enjoy being a part of. Jay Garcia recently asked me to convert his book's Ext JS examples over to ColdFusion for some of his readers. Ext JS 4 is due for public beta very soon. And Adobe has many things on tap for this coming year, for which I am on pins and needles. 2011 will be a new start, and is already shaping up to be a great year.

Rookie Mistakes: cfparam

All of us make rookie mistakes. I've always said it's best to learn from the successes and failures of others. One of my guys came to me earlier this week with one I had made myself a few years back. Something so simple, yet easily overlooked. Now, this guy has been writing ColdFusion for years, yet breezed right over it, assuming things acted one way when they acted completely another.

view plain print about
1<cfparam name="REQUEST.base" default="" type="string" />

So, fairly simple, right? My guy expected REQUEST.base to be an empty string. But it wasn't. Why? Well, in an earlier part of the process was another cfparam tag:

view plain print about
1<cfparam name="REQUEST.base" default="#CGI.query_string#" type="string" />

The code in the first block was in a template that, in this case, was nested within another template (via cfinclude) that contained the second code block in it's head. So CGI.query_string was already assigned to REQUEST.base. What one has to remember is that, with cfparam, the default is only applied to the variable if the variable does not already exist. If the variable already exists, then the cfparam tag has no effect. Basically this is just like writing something like this:

view plain print about
1<cfparam name="REQUEST.base" default="" type="string" />
2<!--- The same as --->
3<cfif not StructKeyExists(REQUEST,"base")>
4    <cfset REQUEST.base = "" />

Personally, I prefer the cfparam ;) (less code) Now, my guy was expecting an empty string, and was baffled as to why some other code wasn't processing properly. Once we sat down to dig in further, he saw that the value was not an empty string, and went about trying to figure out why it had a value. His confusion and frustration turned into anger over such a rookie hit, but everybody does it at some point.

New Book: Learning Ext JS 3.2

I've been pretty busy this year, starting with my new position at work. And, having worked on major side projects the last three years running, I also took my after work time to spend some overdue quality time with my family. But, I did make time to work with Shea, Colin, and new author Nigel White, to work on the second edition of our Ext JS book, now titled Learning Ext JS 3.2. Released last Monday by Packt Publishing, our latest book brings Ext JS developers up to date in working with the 3.x framework, updating the content to cover many changes to the library as well as introducing several new chapters on key bits about Menus and Buttons, Plugins, Charting, and Ext.Direct.

Sencha (formerly Ext LLC) released Ext JS 3.3 on the same day that Learning Ext JS 3.2 shipped from Packt. There are several new and exciting features added in 3.3, but the core content of the book still aligns with the core of the framework itself, giving developers the tools and information they need to get off the ground running. There were several important changes to the framework between the last book (finalized just before the release of 2.2) and this one, and it was important to get that information out to those ready to learn. In the new chapter about Ext.Direct, I dissect the ColdFusion Server-side Stack, written by Sencha's Aaron Conran, to give the bare bones info needed for writing one's own server-side data marshalling services, going through the pieces step-by-step. Changes to the Data package were just one of the reasons to write this book. I know that Colin, Nigel, Shea, and myself, hope that everyone enjoys our latest work.

My CF + ExtJs Preso for cf.Objective() 2010

ColdFusion + ExtJsAttached to this is my slide deck and sample code from my ColdFusion + ExtJs presentation here at cf.Objective() 2010. Overall it seemed to go really well, despite the typical technical difficulties, and though Ray said I needed to be a little more introductory (Thanks Ray. I appreciate the feedback.) I heavily commented the JavaScript in my source code, so hopefully that will help to fill in the gaps for people. If anyone has any questions, feel free to use the contact link at the bottom of the page.

I want to shout out to Aaron Conran of ExtJs, for providing me with a license for their new ExtDesigner to giveaway in my presentation. I pinged him last minute on this, and he really came through (Hope you like it Lance. Drop me your info to give back to Aaron.) For those who haven't checked it out yet, it's a fantastic tool, really well done, and more than worth the small price tag on it.

On a side note, I'm using a "work-in-progress" version of CFQueryReader in this sample. I'm in the process of refactoring to support some advanced features of Ext.Direct, and the new version will only be compatible with 3.2 and above. When I put it into SVN I'll add some notes on which revision is the cutoff for previous versions of ExtJs.

Update: I've added notes to the readme.txt file of the sample download with instructions on how to make the examples work in ColdFusion 8 as well.

I Am Speaking at cf.Objective() 2010

I'll be speaking on building applications with ColdFusion and ExtJs at cf.Objective 2010. I was very honored to be asked to submit a topic alongside so many fantastic speakers and developers. I'll post more as the details are refined.

Can We Extend the ColdFusion Server

I love playing around with new toys. So, I'm ecstatic now that ColdFusion 9 has been officially released to the world, and even more so after what I'm about to tell you. Oh sure, I've been playing around with the betas, but mostly in testing the cfajax/ExtJs 3 upgrades (and I'll be posting more on that in the coming months). Time has been somewhat limited for me, so playtime has had to take a back burner. But, I wish I had gotten into this a bit sooner.

Yesterday I finally got around to working with some of the new cfscript implementations. I find these upgrades to be one of the key features for me personally. One, It's a faster coding style for me. Two, I was getting tired of bouncing between script and tags. Three, I really like the economy of code associated with script, finding it to be far less verbose. So, I'm lovin' the fact that I can write all of my CFC's, including my Application.cfc, in pure script. Now I can keep the tags with the display. But, as someone pointed out to me in a recent comment, there are still a few tags (anyone know which ones?) that haven't yet gotten script implementations. What can we do about that?

So, in diving right into playing with script enhancements, I ran into a few roadblocks. Minor errors, stemming from me not properly understanding the implementation. Now, the first place I went was to the documentation. Ray Camden keeps saying to me "Why don't people read the documentation?" I'm one of those that agrees with him. Yes, the documentation has some holes, and even bad examples, but you would be surpised what you can learn. (Read on, you'll see where I'm going with this!)


Scripting a ColdFusion Application

With the release of ColdFusion 9 this past week, at MAX, we finally have full parity for cfscript with all of the cf tags. I personally prefer script when writing data access and business logic. For some it might not appear to be the sexiest feature, but I can see it making CFML much more appealing to developers from other languages.


ColdFusion Ajax and ExtJs Presentation Update

I've been asked to present to the KCDevCore on ColdFusion 9 Ajax and ExtJs. This will be an updated version of my ColdFusion Ajax presentation, with new content to cover the updates and new components presented in ColdFusion 9 and ExtJs 3.0. By request, I'm going to try to keep the slides to a minimum and get down to some code.

That presentation will be next Tuesday, September 29th, at 7 PM CDT, and will be available via the KCDevCore Adobe Connect.

For those who don't know (where have you been?), ColdFusion 9 is now in public beta on Adobe Labs.

ColdFusion for the Redmond Crowd

Some time back I started receiving Visual Studio Magazine. I'm not sure why. I didn't request it, and lord knows I've tried to stay away long enough (since the VB6 days). But, being a developer with a background in linguistics, I began to read through the issues. C# looks interesting, and I'll probably play with it some, but for the most part all of it just reminds me why I'm a ColdFusion developer with skills in related web type languages (XHTML, CSS, JavaScript, etc).

Last week I received my August issue of VSM, and took a look when I got a chance. I got a number of surprises with this issue, the first one being the biggest. In the front of magazine is an 'Online Contents' section, where they list articles that are only available on the web from three Redmond Developer Network sites: Visual Studio Magazine, Redmond Developer News, and Application Development Trends. And, to my surprise, under the articles on ADT, the first heading read Adobe Releases First Beta of ColdFusion 9.

Now, here's a magazine dedicated to .NET development, pointing to sites dedicated to .NET development, highlighting an article about ColdFusion. Nice! This was obviously part of the interview blitz that Adam Lehman did just before the public release. The article talks about ColdFusion Builder, quotes the recent Gartner Report, and talks about the great new features in ColdFusion 9, with emphasis on Hibernate, full scripted dev support, as well as the Office and Sharpoint integration features (it also reminds readers about the .NET and Exchange integration features added in to CF 8.)

So, it was truly cool to see CF getting some love from the press. More so, being as the press targets a different developer market. But, it got cooler for Adobe with the rest of the issue. See, this issue of VSM was also the 2009 VSM Readers Choice Awards. Adobe took a few honors in several categories:

  • Help Authoring: Readers Choice Award Winner : RoboHelp and RoboHelp Server - Adobe Systems, Inc.
  • Web Design & Development Tools : Readers Choice Award Winner : Dreamweaver - Adobe Systems, Inc.
  • Web Design & Development Tools : Readers Choice Merit Award Winner : Creative Suite 4 - Adobe Systms, Inc.
  • Web & Mobile Development : Editors Choice Award Winner : Dreamweaver - Adobe Systems, Inc.

Great news for Adobe, and a nice shot over the MS bow. Looking over the other categories, I see potential with the release of ColdFusion 9. Here's some nice goals/targets for our favorite server:

  • Charting and Multimedia (should've been Flex hands down, but CF has it's own)
  • Data Editing, Reporting & Analysis Tools
  • Grid Components: Web (I can see it)
  • Imaging and Graphics
  • Middleware & Server Based Tools
  • PDF Tools
  • SharePoint Components & Tooling
  • Editors Choice: Most Valuable Tool
  • Editors Choice: Data Handling & Development

Thanks Adam, for pushing the tech press in areas that haven't historically gotten our message. Congrats to Adobe for it's new honors, and here's to hoping other dev communities begin to see, and recognize, the value of ColdFusion.

Previous Entries / More Entries