Perspective on ColdFusion's Big Question (TM)

Just wanted to share a reply I made on GetSatisfaction to provide a historical perspective to the question "What really is the future of ColdFusion?". Before you ask what the future holds, its good to look back to see where ColdFusion has been since its inception in 1995.



CFMX 7 (released Feb 2005) was the release where product adoption saw the first major boost since the "MX" overhaul. Since CFMX 6 (released June 2002, in a down economy) was a re-architecture in Java/J2EE from the earlier CF5 (released May 2001) written in C++, there were few new features introduced and there was an associated learning curve now that the product had a Java foundation.

Problems in the re-architecture surfaced, slowing new adoption of CFMX6, leading to the point release 6.1 (released July 2003) which for the most part corrected all the issues and restored the waning product reputation.

ColdFusion MX 7 was a feature rich release, which attracted many new developers, most of whom had begun to grok CFCs and Java integration. The post 9/11 economy had generally recovered as well, adding to an increase in technology spending.

With most product release cycles, there's a decline in sales or tail at the end, and ColdFusion 8 (released August 2007) saw another major boost in adoption over the tail as it too was a feature rich release that provided solutions to many contemporary problems in Web Dev.

Frankly, IMO, nearly all negative connotations (i.e. "Legacy Software") about the ColdFusion Web Application Server are due to anachronistic experiences with earlier versions of the product in the mid/late 90's. Those opinions seem to be expressed from developers that are less familiar with the revisions and enhancements found in recent ColdFusion versions. (Case in point)

[Added note: The easy learning curve, weak typing, and case-insensitivity in the product are among some factors that may have been conducive to poor programming practices... i.e. give them enough rope to hang themselves, so to speak. Does anyone remember memory corruption from not locking shared scope variables? That whole conundrum went away with CFMX]

Personally, I think ColdFusion is a fantastic product and I love using it. It has an extensive, contemporary tag library on a stable Java base and Web application development time can be short and sweet due to its perpetual focus on RAD.

ColdFusion 9 is well known to be underway and will further address solutions to where technology is going. Furthermore, risk due to proprietary software is mitigated by the release of third party CFML engines which can provide a core of language features if not the full, rich diversity of language found in Adobe's product.


To throw in a plug for myself, I'm currently seeking full time, permanent employment in the greater Boston area. See: Adobe Expert Seeking ColdFusion / Flex Dev or QA

View Steven Erat's profile on LinkedIn

Problems with configuring CF801 on Mac for System Startup

Two problems with configuring ColdFusion 8.01 on Mac OS X for startup on system boot when using the the utility {cf_root}/bin/cf-init.sh. The first issue is that cf-init.sh cannot be used again to configure CF for startup on boot after the cf-init.sh script is used to unconfigure the service. The second issue is that for Multiserver configuration the script cf-init.sh cannot be used to unconfigure CF as a startup service and the items under /Library/StartupItems/ColdFusion8Multi must be removed manually. The ColdFusion Engineering team is actively seeking to correct these issues, but I'm posting for your convenience in case you run into this beforehand.

Issue 1 logged as ColdFusion bug 73548
On Mac, running cf-init.sh to install system startup script cannot be done a second time after running cf-init.sh uninstall.

The cf-init.sh function install_mac() permanently moves the file {cf_root}/bin/cf-standalone-startup to /Library/StartupItems/ under the new name ColdFusion8 as shown here:

view plain print about
1mv -f $CF_DIR/bin/cf-standalone-startup /Library/StartupItems/ColdFusion8/ColdFusion8


Then the uninstall_mac() function in cf-init.sh permanently removes that file ColdFusion8 as shown here:

view plain print about
1rm -rf /Library/StartupItems/ColdFusion8


There are no longer any copies of {cf_root}/bin/cf-standalone-startup under any name on the system, so another attempt to configure ColdFusion to start on System Boot cannot be performed.

More details:



[More]

CDIA Web Development: A mix of LAMP and RIA that lacks focus

The B.U. Center for Digital Imaging Arts has just added another core curriculum to their stable of information technology certificates by introducing the Web Development Certificate. As you may know, they completely won me over with their Digital Photography program, and one of my coworkers at Adobe has been raving about their Audio Production curriculum as well. As such, I have high expectations that they will deliver great instructors for the chosen curriculum.

Their Web Development certificate program, founded on more than 20 courses, emphasizes the use of PHP and MySQL as core technologies, including a Rich Media Web Development subtopic focusing on the use of Flash and ActionScript. Along the way there's a sprinkling of Javascript, XML related technologies, and AJAX, and the course is capped off with some Content Management and Web 2.0 social network topics.

[More]

Using the CFC Proxy in a ColdFusion Cluster

The CFC Proxy API was introduced as a supported feature in CFMX 7.01. It allows you to call ColdFusion Components (CFCs) from Java classes such as a standalone servlet running in the same JVM. In order for this to work, the Java class must be loaded by the ColdFusion classloader rather than a higher level classloader in the J2EE container. To load a Java class with the ColdFusion classloader, the class's jar file must be specified in ColdFusion's web.xml under the cf.class.path parameter. To avoid managing multiple copies of a custom jar file between ColdFusion instances clustered on JRun, you can put a single copy of the custom jar file under a central location outside the JRun root directory. Then modify the web.xml for each CF instance to point to that jar file in the cf.class.path entry. Surprisingly, there is no documentation on using CFCProxy on livedocs.adobe.com, but instead you can find this reference on Ben Forta's website. The reference describes the API and provides a brief example implementation. A few details are left out such as how to compile the custom Java class, so I'll provide a quick walk through of how I set all this up...

[More]

Photography Web Utilities and My Recent Work

The holiday season has come and gone with little blogging on my part, but there's a few photography utilities for the web that I've wanted to mention. Its been a busy season with a couple weeks in Barcelona and a regular evening schedule at the Center for Digital Imaging Arts at BU. It won't get less busy for me, so now's the time to share...

Lightroom SDK: Flickr Export Plugin
Lightroom Flickr Export PluginThe SDK (Software Developer's Kit) for Lightroom provides software developers a way to build custom plugins for Adobe Photoshop Lightroom. An example plugin to Export photos directly from Lightroom to Flickr comes with the SDK, so download the Lightroom SDK to get it. Even if you don't care about the SDK and aren't a software geek, download it anyway just to get the plugin to make your Flickr workflow even easier.




SlideShowPro for Lightroom
Speaking of Lightroom (yes, it is my favorite piece of image software right now!), for just $25 you can buy an excellent plugin for Lightroom to export stylish and sophisticated Flash-based Web Galleries for your website. Its very easy to use and provides an intuitive panel of gallery styling options. Previously, to use SlideShowPro you had to understand the Flash Authoring tool in order to get started, but with Lightroom its now incredibly simple to use. Here's where you can check out a Web Gallery example of the SlideShowPro plugin for Lightroom




FlickrEdit: Backup Your Flickr Library
And speaking of Flickr, I've recently read some recommendations for FlickrEdit, free utility that permits you to backup all your images on Flickr to your local desktop, among other things. I haven't used it yet, but it seems like a very useful safety net to have around.




Photographic Storytelling with Soundslides Plus
Moving back to the topic of Web Image Galleries, I've just stumbled across a remarkable Flash-based tool from Soundslides geared towards photojournalists that enables you to easily synchronize digital audio recordings with a collection of photographs. Check out this newspaper article Through the Artists' Eyes to view two wonderful examples.




HDR and Tone Mapping with PhotoMatix
Although Photoshop CS2 and CS3 have a built-in automation tool for generating HDR images from multiple exposures, I've been giving Photomatix a test drive because it has been touted to have better fine-tuned control over the Tone Mapping process. In fact, I find that when using Photomatix I have had more success with HDR, just take a look below for some recent examples. There's lots of detailed knobs and sliders during the Tone Mapping process in Photomatix, and to save time later when I produce a satisfying result Photomatix allows me to save my settings. Later, when working on a new image I can try on some of my previous settings to quickly see if any produce a pleasing effect.





The Tower of Our Sea La Proxima Dirty Business


There we have it... I hope you find some of these useful as I have. Now, since I've got your attention, here's some of my recent work both from the studio at CDIA and from my recent trips to Barcelona and San Francisco. Enjoy!

[More]

Leopard Day 0: A Day in the Life a Mac Fanatic

www.flickr.com


7:00 AM
Wake up early (yes, 7AM is early for me) to prepare to go to the Apple Store opening at 9AM


7:10 AM
Check the Apple website and find that the countdown still reads 11 hours. By 10/26 they didn't mean morning of 10/26. Back to bed.


4:45 PM
Leave work to head over the Apple Store at the Natick Collection Mall


5:30 PM
Join the line camped outside the locked doors of the Apple Store. A kid in front of me walks the line, returns to his father to report that they are #38 in line.


5:35 PM
The frumpy old guy next to me starts chatting with about Macs. Says that he's a web developer that works at home and uses Dreamweaver and Flash on PCs and wants to trash them for Macs instead.

[More]

CDIA Introduction to Lighting Theory, Its a wrap!

This week we wrapped up another great photography course at CDIA, Introduction to Lighting Theory DP114.

This module will explore and demonstrate the use of light so that students of light will be able to recognize the physical properties of light: direction and quality; hard vs. soft; and that they be able to modify light to suit the needs of their photography. Students will also learn how to identify and work with varying color temperatures.


Of most practical value to me was learning how to use a light meter to measure incident light (the actual light hitting a subject), whereas the camera's TTL metering measures reflected light (the brightness of light reflected off a subject). We also learned how to use light glass and metal and work with their reflective properties using diffusion screens, reflector discs, or gobos, and either natural ambient lighting or photoflood (constant) lighting indoors. Before moving on to indoor settings with artificial lighting, we initially honed our skills with portrait shooting outdoors using ambient lighting combined with the tools mentioned earlier. My favorite part of the course was learning how to do Black Line and White Line Photography with glass, also known as Bright Field and Dark Field.

The strength of the class was the actual instruction of lighting theory, lessons which I found highly valuable. The weakness was we were expected to peform all our shooting in groups of 3 or 4 during short bursts of time in class when we'd have to set up tables and lighting and later break them down, and I felt unable to achieve a satisfactory level of quality in my photography because I felt rushed.

Halfway through the course I realized I needed to set up a home studio where I could spend longer periods of time and have the freedom to play around and test various lighting scenarios. To that end, I spent a day running errands to Home Depot for clamps and extension cords, to JoAnn Fabrics for inexpensive black cloth to line the walls and velvet to shoot small objects on, to Staples for black and white foam boards, and finally to Hunts Photo and Video in Melrose to purchase a Smith-Victor 4 Light Photoflood Kit. Total cost for the whole basement studio was close to $600, not including the ping pong table already in the basement.

Next week we refine our lighting skills and learn to use strobe lighting or flash in course DP111 Introduction to the Studio.

www.flickr.com

An Experiment with Improved File Upload Handling in CF 8

ColdFusion 8 Application Server offers an important improvement regarding memory utilization during the uploading of large files via the CFFILE tag. This entry will offer an experimental observation to demonstrate the improvement in CF 8, but first I'll expand upon each of the related settings and provide some usage scenarios.

Request Throttle Settings
The ColdFusion 7.01 Administrator introduced new file upload settings to better control file uploads. The broadest setting is called Request Throttle Memory, with a default of 200MB, where its purpose is to regulate the cumulative impact of all concurrent large file uploads on the ColdFusion server. The adjacent setting for Request Throttle Threshold, default of 4MB, is the minimum size of file uploads for which the throttle should regulate, anything below the threshold is ignored by the throttle. Further up on the Settings page is also the new field Maximum Size of Post Data, with a default of 100MB.

[More]

Linux Magazine on using Flex with PHP

In the August 2007 edition of Linux Magazine, the editor contributes an article about the usefulness of integrating PHP with the free Flex SDK to achieve a Rich Internet Application (RIA) in a Web 2.0 world.

Flex and PHP
by Martin Streicher
Linux Magazine (full article available online with free registration)


The author begins by a short comparison of the RIA technologies of AJAX vs. Flex, and goes on to suggest that while AJAX is touted as an alternative to Flex UI's, AJAX suffers from a lack of rich media integration such as video, music, or animations and carries the risk of varying JavaScript behavior across different browser implementations.

The article does a great job describing architectural differences between classic web applications and RIAs. In a multi-tiered Rich Internet Application the application server technology such as PHP, or better yet ColdFusion, acts as the controller to implement business logic and interacts with deeper service layers that interface with the database. However, on the client side, Flex runs in the browser to perform data input validation, displays data visually via drill-down charts and graphs or via paginated data grids, and provides real time updates to changes in data (via Live Cycle Data Services a.k.a. Flex Data Services).

Furthermore, Flex provides a smart looking user interface and seamless user experience akin to typical desktop software while lacking the notoriously painful white screens of death during page refreshes that are commonplace in the Web 1.0 world. In effect, more work is done in the browser as a means of distributed computing, leaving the application server to focus on business logic and freeing it from having to generate the UI again and again across requests.

[More]

Easy-to-Read Java Memory Management Article

Most Sun articles on Java memory management are dense and hard to read. This month's Better Software magazine on StickyMinds.com offers a 5 page article at a more intermediate level that makes digesting this topic a lot easier. The article, Your Mom Doesn't Work Here - Cleaning up with Java Memory Management, by Alan Berg, provides a clear description of how to look for memory leaks in Java applications and the performance impact for various GC algorithms. It also provides an introduction to the JMeter stress testing tool (with additional information in the print magazine not available online)

Previous Entries / More Entries