ExtJS 2.2 Released

As many of my readers already know, I am a huge fan of ExtJS, the wildly popular JavaScript cross-browser component and Ajax library. ExtJS 1.1 is the underlying library used by ColdFusion 8 in it's new Ajax controls, so I latched on to the concept of rapid application prototyping and then extending it through custom ExtJS development.

Well, Monday the ExtJS team released 2.2. Much more than a minor dot release, 2.2 addresses several bug fixes, nice increases in perfomance, better support for Firefox 3, and several new components and examples.

Some of the new components include CheckBoxGroups and RadioGroups for forms, a new History object for managing the back button (a common issue in RIAs), a new FileUploadField, and even an XMLTreeLoader to automatically create Tree components from an XML Document. There are several new examples, to show developers how to use these new components, better information on how to implement Drag and Drop, and more.

ExtJS 2.2 is fully backwards compatible with the 2.1 release. I tested several applications last night, seeing definite speed increases. Really well done. (There also appears to be some speed improvements when implementing ExtJS within Adobe AIR applications as well, from my testing.)

I'll have a lot more info on ExtJS coming in the near future, so watch this space;)

Caught By The Bug

The dreaded BlogCFC curse. After 30 days without a post you see the message 'Sorry, no post' (more or less).

I'm busy. Way busy. Several side projects, fun at work with servers, and a few hush-hush things...I'm beat. I can't go into a ton of particulars on anything, but there are things coming. I am working on a custom asset manager written in ColdFusion and Ext, that I'll be open sourcing, but it's taken a side burner for now. Ext is a blast, and I hope to continue to create and release Ext custom components, but I will always be using ColdFusion for my server-side code examples.

Speaking of code, I still owe everyone my sample code from my WebManiacs Presentation. With all this activity, I am way behind the eight ball on rolling some of this up. I hope to get it out sometime within the week. I'm also hoping to get a chance, soon, to re-record the presentation. I had done it once before WebManiacs, for the Nashville ColdFusion User Group, but the recording was a wash. We'll try to get that scheduled soon, and get it out there for everyone.

And, speaking of NCFUG, Mark Mandel is presenting Thursday night, July 31st on Transfer. Details can be found on the NCFUG Meeting page.

That's all for now. I'll try not to let it go so long between posts this month.

Build Applications That Scale

For over two months now, we've been preparing to migrate our services to a new datacenter. This has been, without a doubt, the most important project within the history of our company, for a number of reasons. We sell, host, and support websites for a single vertical market. A few thousand sites, all operating off a single shared framework/codebase. This is up from the few hundred sites we were hosting when I joined the company almost three years back. Our sites have been a testament to the power of the ColdFusion server platform, and I thought it important to share with you all the importance of our move, the challenges we overcame, and the benefits we've incurred.

I want to give you a little background here, so that you'll have an understanding on the history and growth of our application, and how critical it is to think in terms of scale. In talking with several developers, while at WebManiacs, I was surprised to find out just how many had come across similar issues at one time or another.


WebManiacs Follow-Up

After WebManiacs, I thought it would be good to jot down some thoughts on conferences, and ColdFusion development in general. I was asked to speak at WebManiacs, which was my first conference speaking engagement, and although my session was somewhat small (last session that day), I had a great group who seemed to really enjoy my presentation, with a lot of questions, comments, and discussion afterwards. All in all a lot of fun. That being said, the conference was... lacking a little. Now, in all fairness, it was the first of it's kind, the first for FigLeaf (of this size), and a learning experience for everyone involved.


DC Bound

Well, I'm sitting in the airport in Nashville, waiting to fly out to D.C. for WebManiacs. The Rouge looks to be a nice hotel, and it looks to be a fantastic lineup of speakers and sessions (including yours truly). Might catch a movie after touch down...

ColdFusion 8 Json Return Format and ExtJS

Yes, I am really enjoying getting back into JavaScript. The language really has changed since the days I was heavier into it (1998 thru 2001, maybe), so it's great to see how much it has grown. I feel like I've been ignoring an old friend.


Why Can't I Comment?...

I've been so head down, on several projects professional and personal, that I only just noticed a few weeks worth of error messages in Cutter's Crossing's email box. A very odd error about missing a captcha-hash-variable kinda thing (don't have one handy). So, I get my next door co-worker to pull up my blog and ask him to post a comment, any comment. Low and behold, in place of the captcha there was a broken image icon. That wonderful clear box with the red X going through it, that we all know and love. Simply reinitializing BlogCFC took care of the issue, but I realize I've missed out on valuable feedback.

If you're reading this, and you tried to comment earlier, please try again, and I'm sorry for the trouble. I'll try to keep a more vigilant eye.

In the meantime, I'm looking for some really outstanding (public) examples of a drag-and-drop page content editor interface. Some experimenting with some of the Ext (2.1) sample code says I should be able to do it, but I'm looking to see some clear cut, and tested, solutions. BTW, if you haven't looked at the extended examples that they put out with the 2.1 update, then you should. There's some very nice stuff in there, particularly dealing with layouts.

A Small Bug In AIR?

Well, maybe. One of my co-workers, Andy Matthews, has been working on a small app, integrating BlazeDS with ColdFusion to push messages to an HTML/AJAX based AIR application. He and I spent several days configuring the server integration and piecing out the ins-and-outs of how the messaging works (big thanks to Andy Powell on this too). Andy (Matthews), coming from a design background, created this beautiful chromeless HTML interface, with a little JQuery magic thrown in to work with the bridge. That's where this possible bug reared it's ugly head.

The question is whether the bug is in AIR, or within the Flex/AJAX Bridge itself. Basically, if you've defined your transparency setting to true, within your App.xml file, then the load() method of the bridge will not call the function reference.

Andy has submitted the bug to Adobe. He also dropped Christian Cantrell and Ben Forta (hey, it's who he knows...) the following email about the issue:


I believe that I've discovered a bug in AIR and I'm not sure who else to send this to.

I've been working on an HTML/JS based AIR application for my company using BlazeDS. I'd finally gotten everything working in a test environment when I went to port the working code into my already working transparent, custom chrome AIR app. Then it stopped working.

After debugging, I found the reason, or at least part of it. It appears that an AIR app which uses the FDMSBridge.swf provided by Adobe WILL NOT work when the app has transparency.

In my sample app ----------------- 1) I opened my sample code (without transparency), and compiled it. 2) I pushed a message to the gateway and the message was successfully received in the app. 3) I then changed the transparency setting in the App.xml file from false to true and recompiled the app. 4) I pushed another message to the gateway and received nothing.

In the final app --------------------------------------------- 1) Transparency was already set to true, so I compiled the app 2) I pushed a message to the gateway, and received nothing. 3) I then changed transparency to false, recompiled the app 4) Pushed a message and successfully received it.

Further, when the app first loads, it correctly displays the alert window when transparency is set to false, but not when it's set to true. ------------------------ Here's a small code sample:

view plain print about
1FDMSLibrary.load("FDMSBridge.swf", initBlazeDSCode);
3function initBlazeDSCode() {
4 alert('why me');
5 var cs = new ChannelSet();
6 cs.addChannel(new AMFChannel("cf-polling-amf","http://domainname.com/flex2gateway/cfamfpolling"));
7 consumer = new Consumer();
8 consumer.setDestination("ColdFusionGateway");
9 consumer.addEventListener("message", messageHandler);
10 consumer.setChannelSet(cs);
11 consumer.subscribe();
14function messageHandler(e) {
15 alert('got a message! I GOT A MESSAGE!');

64-bit ColdFusion...On Windows

Yes, it has finally arrived. The ColdFusion 8.0.1 update was released this morning, which is huge news by itself. But, even more importantly, this also introduces a 64-bit version of ColdFusion for Windows, Mac and Linux in both the Enterprise and Developer editions of the server. This is huge, as 64-bit support was previously only available on Solaris. Now almost anyone can take advantage of the numerous advances in hardware technology that have occurred over the past few years, and finally be able to address the RAM capacity of these high powered systems.

Aside from the many advantages and updates that 8.0.1 brings to the platform, Adobe has also release updates to the Report Builder and the Developer Tools.

Code For Scalability

So, a guy by the name of Kyle Neath recently posted a disturbing observation from SXSW. His "most interesting bit" was the idea that Scaling is for nerds. Basically, while listening to some side chatter from Jakob Heuser, a speaker at the conference, he (Kyle) came away with the idea "...don't worry about scaling -- scaling is for nerds. By the time you hit pain points, you can bring in someone who really knows what they're doing. Most importantly, by the time you hit pain points, you should be profitable enough to not worry about bringing in someone who knows what they're doing." Now, something is a little out of context, as Jakob's topic, "Scalability Boot Camp," is on horizontal scalability, according to a recent post to his blog.

My first thought is "I hope this guy Kyle never writes anything in ColdFusion." It's not that we couldn't use some developers, my phone is ringing constantly with recruiters looking for good talent. No, I just think that ColdFusion developers need to have a better mindset than this guy. Part of being a good developer is thinking about your application's scalability, performance, and extensability. To blatantly ignore any of these during your development is to invite future disaster, creating a lot of additional work somewhere along the way. Even if your application might start off with only 10 users on initial product launch, you should attempt to design it as if it will be used by thousands, or more, at a time. This also helps to avoid utilizing the Big Ball of Mud design pattern, because eventually it won't stick to the wall anymore.

The scary thing is, this guy has been around a while. He's been working on the web for some time, he has a seemingly well trafficed site, and some N00b out there will read what he's said and take it to heart. To write an application, knowing that someone else will probably have to rewrite it down the line because you were to lazy to do it right the first time, is wrong. Not knowing any better is one thing, we all learn and grow every day. Doing it with full knowledge, on the other hand, is just irresponsible.

I hope I've read it wrong, and I hope you, dear reader, know better.

Previous Entries / More Entries