Tuesday, May 13, 2008    
Home My Books Blog ColdFusion About Me Back    

Calendar
<< May 2008 >>
S M T W T F S
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
             

Search

Categories
 • Adobe (61) [RSS]
 • AdobeMAX06 (45) [RSS]
 • AdobeMAX07 (59) [RSS]
 • AdobeMAX08 (6) [RSS]
 • AIR (95) [RSS]
 • Appearances (103) [RSS]
 • Books (65) [RSS]
 • CFEclipse (14) [RSS]
 • ColdFusion (1078) [RSS]
 • Flash (89) [RSS]
 • Flex (317) [RSS]
 • Jobs (81) [RSS]
 • JRun (12) [RSS]
 • Labs (26) [RSS]
 • LiveCycle (11) [RSS]
 • MAX (141) [RSS]
 • Regular Expressions (12) [RSS]
 • SQL (36) [RSS]
 • Stuff (492) [RSS]
 • Tips (CF Studio) (80) [RSS]
 • Tips (CF) (795) [RSS]
 • Tips (Dreamweaver) (91) [RSS]
 • Tips (Flex Builder) (2) [RSS]
 • Using CF (131) [RSS]
 • Wireless (96) [RSS]

Other BLOGs
 • Ray Camden
 • Tim Buntel
 • Sean Corfield
 • John Dowdell
 • Steven Erat
 • Brandon Purcell
 • Charlie Arehart
 • Full As A Goog

RSS Feeds
 • Feed
 • Subscribe

Join my mailing list and find out about new books and other topics of interest.

Thoughts, ideas, tips, musings, and pontifications (not necessarily in that order) by Ben Forta ...
NOTE: This is my personal blog, and the opinions and statements voiced here are my own.

May 12, 2008

Flex Skin Design Extensions For CS3

When Flex 3 was launched a few months back, we also launched a series of extensions that can be used from within CS3 products to create Flex skins. These extensions (for Flash, Fireworks, Illustrator, and Photoshop) allow designers to skin controls which can then be imported into a Flex 3 project. We've been demoing these extensions for a while, but in the past few weeks several users have e-mailed asking where to find them, so I am posting the link here.

May 9, 2008

Amazon.com Loves My SQL In 10 Minutes Book

My Sams Teach Yourself SQL in 10 Minutes has been a top seller on Amazon.com for a long time, consistently in the top few hundred computer books and in the top couple of thousand across all books. But I was just informed that is #3 in the Databases category on Amazon.com, and #1 in Database Management Systems, Relational Databases, and MySQL categories. The MySQL version of the book, and the Kindle edition (I didn't even know there was a Kindle edition!) are also in the top 100 database books.

May 8, 2008

ColdFusion ISP List Update And Maintenance

I've been doing some maintenance and code cleanup on my ColdFusion ISP List, and noticed that some entries have not been updated in years. If you know of any companies that are no longer in business, or who no longer offer ColdFusion hosting, or anything else I should be aware of, please let me know. Thanks.


Flex Renderers Can't Rely On creationComplete

Yesterday I wasted an hour or so debugging a Flex itemRenderer that I was using to display an image instead of a value in a DataGrid column. The renderer had to simply pick one of six images based on the column value, and so it contained a single <mx:Image> tag and a function that set the Image source dynamically. And then I called that function on the renderer's creationComplete event.

Simple enough. Except that the wrong images were sometimes being displayed, the column had the right data, but the code used to select the image seemed to sometimes pick the wrong image. And what it picked seem to change each time I scrolled the DataGrid up and down!

I actually ran into a very similar issue with a TileList renderer a few weeks ago, but then I had no time to figure out the cause, and so I hacked a workaround. But this time, having been bitten by the same issue twice, I had to find out what was going on.

And what I discovered (by using traces and alerts) is that the creationComplete event does not get fired as I had expected. Rather, it seemed to fire only occasionally, and not once per DataGrid row, and so my image selection function was not being executed as expected.

Once I had figured out the problem I searched the docs for any info on renderers and creationComplete, and found this page. And sure enough, "Flex might reuse an instance of the item renderer or item editor, a reused instance of an item renderer or item editor does not redispatch the creationComplete event". Well, that explained it.

The right way to do what I wanted is to trap the dataChange event instead of creationComplete, as "Flex dispatches the dataChange event every time the data property changes".

And so I am posting this for my own future reference, just to make sure I don't run into it a third time.

May 7, 2008

Check Out ColdBricks, A ColdFusion Based Open Source CMS

ColdBricks is a ColdFusion based CMS and site generator, and it's free and open-source. There's a very impressive live demo online, too. This one via fellow evangelist Serge Jespers.


Preserving ColdFusion Structure Member Case In Flex

ColdFusion is case-insensitive, and Flex MXML and ActionScript are very case-sensitive. For consistency's sake, when ColdFusion variables are sent from ColdFusion to the Flash Player via Flash Remoting, names are converted to uppercase (that's the default behavior, and it can be changed if needed). So, a structure member named FirstName will be named FIRSTNAME when it arrives on the Flash Player (and referring to it as FirstName in MXML or ActionScript won't work).

But, you actually can force case to be maintained in structures, depending on how structure members are defined. Look at these two examples. The first won't preserve case:

<cfset user=StructNew()>
<cfset user.FirstName="Ben">
<cfset user.LastName="Forta">

In this example, if the structure were returned to the Flash Player, the members would be named FIRSTNAME and LASTNAME.

Here's another example, one that will indeed preserve case:

<cfset user=StructNew()>
<cfset user["FirstName"]="Ben">
<cfset user["LastName"]="Forta">

This example accomplishes the exact same result as the previous example, in that it creates a structure and defines two members. But in this example, structure member names will be preserved, and they would indeed be named FirstName and LastName when they arrive in the Flash Player.

May 6, 2008

TIOBE Responds

Paul Jansen is TIOBE's Management Director, and he responded to my post yesterday about the ColdFusion being taken off the TIOBE Programming Index. Here is his message:

Hi Ben,

Thanks for your reply on our TIOBE index. I have added an extra question called "Who is Richard Bremner?" to the FAQ of the TIOBE index (see the end of the page). I hope that this answers your question.

Regards,

Paul

Paul, thank you for responding. I still believe that you made a mistake, both in removing ColdFusion from the index, and trusting the input of a single individual and not making the effort to check the facts for yourself. However, I do appreciate you responding to the reactions and feedback of the ColdFusion community.

May 5, 2008

Goodbye MXNA, Hello Feeds

Adobe Feeds is up and running, replacing MXNA, and running on newer faster servers running ColdFusion 8.0.1. But more importantly, some significant code changes were made to get rid of lots of the problem code - code which was written for tens of feeds as opposed to close to two thousand. There are still more optimizations to come, but for now ... remember the new URL, update your RSS feeds, and ... enjoy!


TIOBE, From Hype To Fiction

I've never taken the TIOBE Programming Community Index overly seriously. It's not really a gauge of anything overly meaningful. As TIOBE itself explains:

The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, and YouTube are used to calculate the ratings.

In other words, the index is more of a hypeometer than anything else, and the results posted each month are more of an item of curiosity than anything substantive.

And this seems to be validated by the following statements which appeared in TIOBE's May Newsflash:

Richard Bremner pointed out that ColdFusion is not a programming language. It is a framework comparable to JSP and ASP. As a consequence, ColdFusion has been removed from the TIOBE list. All its history has been deleted, which means that the history of the index has changed a bit as well.

I have no idea of who Richard Bremner is, or who made him the authority on the subject, but ... he's either mistaken, ignorant, or some combination thereof. Let's analyze this brilliance:

The Wikipedia definition of programming language is: an artificial language that can be used to control the behavior of a machine, particularly a computer. Programming languages are defined by syntactic and semantic rules which describe their structure and meaning respectively. Many programming languages have some form of written specification of their syntax and semantics; some are defined only by an official implementation. ColdFusion is indeed used to control the behavior of a machine, it does have syntactic and semantic rules, and it does have a written form.

So, as per Wikipedia, ColdFusion is most definitely a language. But is ColdFusion a framework? Again, let's use Wikipedia which defines software framework as: a code library that is designed to help software development. The idea is that all of the tedious, low-level details of creating an application are already in a reusable package. For a developer, this means you can spend your time worrying about specific problems related to your application, and not the actual building of the code behind it. For example, a developer can quickly and easily access a database using a framework, rather than having to write all of the code required to accomplish this simple task. Well, ColdFusion does indeed include a massive library of pre-written reusable code, and it does indeed attempt to prevent having to mess with tedious low-level details allowing developers to worry about what's important for their application.

So, is ColdFusion a framework? I'd have to say not really. For starters, while ColdFusion may include a software framework, that is not a part of the core CFML (ColdFusion Markup Language). Yes, it is possible to use the provided functionality to simplify talking to databases, but that is not required. The libraries and packages included with ColdFusion are much like the standard libraries that come with all languages, from C to Java and more - they are pre-written libraries that are meant to help developers so that not everyone has to reinvent the wheel, but they are not part of the language itself.

Here's another way to look at it. Imagine you had the ability to write code in plain text files and save them to disk. Then you could run a compiler which would process those files and generate Java bytecode which could be executed inside the Java runtime. Now consider the code you wrote, code that had to adhere to a defined syntax and structure, and which indeed used provided libraries where appropriate, and could then be executed to perform some action. Would you say that you used a language? I'd think so. And that language is called Java. Or, that language may be called CFML, which, just like Java, compiles to Java bytecode for execution. So, to be consistent, TIOBE must include CFML as a language just like Java, or it should remove Java from its index too, just like it did ColdFusion.

The bottom line is that CFML is a language, but ColdFusion is the combination of CFML language plus runtime libraries (what may be called the ColdFusion framework). In other words, if TIOBE truly wanted to improve the quality of their index, they could have simply used "CFML" (or ColdFusion Markup Language) instead of "ColdFusion" as the language name. But writing ColdFusion off as a language altogether demonstrates a remarkable lack of understanding as to what the product and technology actually is.

May 3, 2008

ColdFusion Positions In NY, Ontario, And CT

Three ColdFusion positions this week, including one in Canada:
  • New York City Human Resources Administration (Brooklyn, NY) is looking for a ColdFusion developer. Requirements include at least 8 years of ColdFusion experience, as well as strong skills with IIS, SQL Server, and OOP. Candidates will be tested on their ColdFusion skills, and ColdFusion Certification is preferred. Details posted online (including contact information for recruiter Derrick Hemphill at CMA).
  • Bark Communications (London, Ontario, Canada) is looking for a ColdFusion developer. Requirements include 4+ years of ColdFusion experience (or equivalent experience in ASP.NET, JSP, PHP), as well as 5+ years DBMS and HTML/CSS/JavaScript experience. Familiarly with Ajax and Flash preferred. Details posted online.
  • Unnamed client (Stamford, CT) is looking for a ColdFusion developer. Requirements include 3+ years of development experience using ColdFusion MX or later, as well as strong SQL Server skills and full project lifecycle experience. Apply online (or contact recruiter Sean Hawes at Workstream Inc / 6FigureJobs.com).

May 1, 2008

Adobe Announces Open Screen Project

We just announced the Open Screen Project which will be working to enable a consistent runtime environment, starting with the Flash Player, and in the future AIR, to remove barriers for developers and designers as they publish content and applications across desktops and consumer devices, including phones, mobile internet devices, and set top boxes, and more. The Open Screen Project is also supported by ARM, Chunghwa Telecom, Cisco, Intel, LG Electronics Inc., Marvell, Motorola, Nokia, NTT DoCoMo, Qualcomm, Samsung Electronics Co., Sony Ericsson, Toshiba and Verizon Wireless, and leading content providers, including BBC, MTV Networks, and NBC Universal.

April 30, 2008

Enrique Duvós' New Blog

Enrique Duvós, who heads up Adobe Platform Evangelism in Europe (and who's been at Allaire/Macromedia/Adobe for about as long as I have), has a new blog at http://www.duvos.com/.

April 29, 2008

Resurrecting MXNA, And What Comes Next

Mike Chambers has posted an entry entitled Update on MXNA (or what the %@#! is going on!) about, well, I think it's pretty self-explanatory.

April 28, 2008

Check Out YSlow

Ted Patrick turned me on to YSlow, a Yahoo! Firefox add-on that integrates with Firebug to analyze web page loads and make performance recommendations. I've been using it for a few days now, and this one is very cool, check it out!


Mark Mandel Announces Transfer 1.0

3 years after starting the Transfer project, Mark Mandel has announced the release of Transfer 1.0. Congrats to Mark and all those involved on this momentous accomplishment!

And if you've not bumped into Transfer yet ...

Transfer is a ColdFusion Object Relational Mapping Library. Transfer ORM's main focus is to automate the repetitive tasks of creating the SQL and custom CFCs that are often required when developing a ColdFusion application. Through a central configuration file Transfer knows how to generate objects, and how to manage them and their relationships back to the database. (From the Transfer homepage).

April 25, 2008

Four ColdFusion Positions In CA

Four positions this week, and all in California:
  • VMWare (Plato Alto, CA) is looking for a ColdFusion developer. Requirements include 5+ years of full-time ColdFusion development with at least 3 years experience with CFMX or later (it is strongly preferred that most recent position relied heavily on your ColdFusion skills), strong SQL skills, and applied MVC experience. Experience with Flash Forms, Flash Remoting or Flex is a plus. Contact Trish Austin.
  • Disney (Southern CA) is looking for a ColdFusion developer. Requirements include at least 4 years of ColdFusion experience, and strong JavaScript skills. Contact recruiter Cynthia Major at Kforce Professional Staffing.
  • Intelligent Beauty (Manhattan Beach, CA) is looking for a senior ColdFusion developer. Requirements include 5+ years of ColdFusion experience, familiarity with CFMX (6.1,7 and/or 8) and CFCs, experience with at least one major CF framework (Fusebox 4/5 preferred, or Model-Glue or Mach II), and strong SQL Server skills. Contact David Fink.
  • NicheClick Media (Irvine, CA) is looking for a ColdFusion developer. Requirements include ColdFusion certification, SQL Server experience, and the use of Fusebox, Model-Glue or ColdBox frameworks. Details posted online.


Tim Buntel Wants You To Weigh In On The Next Flex Builder

Tim Buntel (yep, even though he moved to the Flex team we still like him) is looking for feedback to drive the feature set of the next major update to Flex Builder. He posted details on his blog (which, of course, is still powered by ColdFusion).


InfoWorld Reviews Flex Builder 3

InfoWorld has posted a detailed review of Flex Builder 3.

April 24, 2008

Important Improvements To Adobe Developer Center

Yesterday we quietly rolled out two important enhancements to the Adobe Developer Center.

The first change is community powered search (you'll see a new search box on the upper right side of the page), which basically means that searches now includes content from a wider array of sources, including community sources like relevant blogs. The second change is that logged in users can now post comments on articles, these comments are posted live immediately, but are also moderated (and will be scrubbed as needed).

While these new features are tested and tweaked they'll only be available in the Flex Developer Center. But we'll add these to additional ADC sections in the future.


Response To A Question From A Returning ColdFusion Developer

Yesterday I received an interesting question from an individual who used ColdFusion extensively in the CF3-CF5 era, but has no experience with ColdFusion MX or later. He is now getting back into ColdFusion development, and wanted to know what it is he needs to know about ColdFusion today. It's an intriguing question, and I decided to blog my response because A) others might be interested in the same thing, and B) others may have different answers, and I'd like to see them myself. So, comment away, and here is my response ...

Hi,

You've asked an important question. ColdFusion went through a significant metamorphosis going from CF5 to CFMX, and while you can still write code exactly as you used to, I strongly believe that you should not be doing so. Despite being able to run the same old CFML, ColdFusion (as of CFMX) is a radically different product from what it was previously, and being able to fully take advantage of it does require learning some new skills. So, here is where I'd like you to concentrate (in no particular order):

  • ColdFusion MX and later (all the way to ColdFusion 8.x today) is all Java internally. While there is actually no need to know Java to be able to successfully use ColdFusion, understanding the ColdFusion Java relationship is very useful. Just knowing what ColdFusion's Java underpinnings make possible ensures that you'll know what your options are in the future, whatever that future may be.
  • ColdFusion Components are the most important change to the CFML language since, well, since we created CFML. While it is entirely possible to build reusable, organized, structured, manageable, and scalable code without CFCs, I'd not advise doing so. ColdFusion Components are clean, simple, and sophisticated, and form the basis of just about any structured ColdFusion development. (They also are they key to working with Web Services, Flash and Flex integration, using gateways, Ajax integration, and more). While CFML is not an object oriented language, ColdFusion Components provide CFML developers with some of the core benefits of objects, without much of the complexity typically associated with OOP development. Simply stated, ColdFusion Components encourage (and even reward) better development practices. And not using CFCs nowadays raises a major red flag for me.
  • Understand frameworks, methodologies, and more. And no, I am not going to get into a Mach-II vs. Fusebox vs. Model-Glue debate, nor am I going to enumerate all of the invaluable community projects and initiatives in this space. The fact of the matter is that I don't care what framework or methodology or data abstraction layer or standards or best practices you use. I just care that you use something. If one of the established projects works for you, great, use it. If not, then roll your own. You may truly need the discipline encouraged by MVC implementations, or you may just need a document that clearly lays out your rules for variable naming and code organization and more, or you may need something in between, or some combination of options. There is no one size fits all, and what works for one project won't necessarily be right for your next project. What you use is far less important then understanding why structure and organization is necessary in the first place. The just-start-writing-code-and-then-figure-it-out-as-you-go mentality of the 90's is thankfully long gone. And nowadays developers understand that the planning and structure that was the norm pre the instant-gratification .com era is still as important and relevant as ever. That's a good thing indeed.
  • Way back in the late 90's I wrote a column entitled "When Not To Use ColdFusion" that argued that the best ColdFusion apps are not pure ColdFusion apps. Rather, they know when to take advantage of other systems and options, be in SQL stored procedures, Java code, and more. And nowadays this is more true than ever. ColdFusion provides an amazing array of integration options, from Java object invocation to web services support to JMS connectivity to all sorts of gateways to new .NET integration and more. ColdFusion is great at lots of things, but is not ever going to be the best at everything. As an example, just about every DBMS can sort, process, group, summarize, and manipulate data far more efficiently than ColdFusion ever will. In addition, lots of what you may need in your apps may already exist elsewhere, and you should be able to leverage the best-of-breed whenever appropriate. This kind of goes back to my first point, it pays to understand what options are available, so that you'll be ready to use them when needed. The best ColdFusion developers I know are skilled in more than just ColdFusion. They may indeed create and deploy projects that are all ColdFusion, and that is often completely appropriate. But they also know when and how to pull all sorts of pieces together to craft the best possible solution to any problem.

The bottom line is that ColdFusion is richer, more powerful, and far more mature than it was back in the 90's. You can do exactly what you did before, and you'll probably be successful. But, that would be kind of like buying the latest top of the line gaming system and using it to play Pong. Ok, maybe not that extreme, but you get the idea.

Welcome back, there has never been a better time to be a ColdFusion developer!

--- Ben

April 23, 2008

ColdFusion On Wheels .7 Beta Released

ColdFusion On Wheels is the open source ColdFusion community response to Ruby on Rails, and the beta of version 0.7 was released today.


Host A Flex Camp

I've been blogging Flex Camp announcements for a while, and have spoken at many too (the next one I plan on attending is May 15th in Toronto). Flex Camps are fun, informative, educational, and great networking tools, too.

If you're interested in hosting your own Flex Camp, visit this Flex Camp page at flex.org and download the Host Your Own Flex Camp Guide. You'll find all the details you need, as well as information on how Adobe may be able to help fund your event.

Oh, and then don't forget to invite me! ;-)

April 22, 2008

James Ward On Top 10 Flex Development Mistakes

James Ward has written an article for InfoQ entitled Top 10 Mistakes when building Flex Applications about ... well, that should be blatantly clear, shouldn't it?

April 21, 2008

Two New LiveCycle Related Blogs

This one via Greg Wilson. LiveCycle team member Gary Gilchrist and longtime LiveCycle partner Avoka are both blogging.

April 17, 2008

flexcf.com Launched

flexcf.com is a new site dedicated to the development of ColdFusion powered Flex applications. Seven tutorials have been posted already, and more are on the way.

More Entries

  © Copyright 1997-2008 Ben Forta, All Rights Reserved