August 14, 2006
Adobe ColdFusion Engineering is Hiring

The ColdFusion Server engineering team in Newton, MA is hiring. Recognizing that employees are at the core of our success, Adobe recruits and retains highly qualified and motivated individuals, creates an environment where they can innovate and achieve their best, and rewards them for their performance by giving them an opportunity to share in the company’s success.

POSITION SUMMARY: 

We’re looking for a razor sharp coder who is driven to make a serious contribution to the implementation of one of the most innovative, broadly used and respected Internet Application products currently under development in the world. You will be responsible for development of key Adobe ColdFusion technologies used by literally hundreds of thousands of developers around the world to build rich, high-performance web and Internet applications.  In this role you will work on design and implementation of ColdFusion product features. Demonstrated multi-threaded server development expertise, outstanding software engineering skills and the ability to design and develop independently as well as in tight collaboration with other engineers are required.  Over and above what a “regular” commercial server software engineer is capable of, because of ColdFusion’s unique customer base and mantra to “make hard stuff easy”, you possess the natural ability (the “art”) to produce beautifully simple, elegant but fully enterprise-class capable, scalable and extensible solutions.  You must be able to successfully deliver on aggressive timelines and work in an environment where agility is valued, change is embraced and passionate engineering discussions over how to best serve the customer are encouraged. 

ESSENTIAL DUTIES AND RESPONSIBILITIES:

Design, document and develop robust, scalable system architectures. Work with other developers in the team to develop features within a common architecture.

KNOWLEDGE AND SKILLS:

To perform the job successfully, an individual should demonstrate the following competencies:

  • Excellent written and verbal communication skills and be able to produce effective, concise specifications and documentation as part of the design and development process.
  • Strong software development skills including data model design and the creation of well-engineered code. Strong object oriented design and coding skills are a must.
  • Capable of contributing in a fast paced, integrated product team environment.
  • Extremely proactive about building the best software possible.
  • Knowledge of Java and J2EE is required.
  • Knowledge of Web Service standards (SOAP, WSDL) is a major plus.
  • Knowledge of ColdFusion and CFML and familiarity with the ColdFusion developer community preferred.
  • Knowledge of Ajax frameworks, Flash, Flex and other Rich Internet Application development technologies are a plus.
  • Bachelor's degree in Software Engineering, Electrical Engineering, or related engineering discipline.
  • 4+ years of recent experience working on data-intensive coding tasks.
  • Experience building web applications and working with application servers and databases
  • Solid appreciation of software engineering principles such as software lifecycles, version control and configuration management - while remaining flexible and agile.

Adobe believes personal fulfillment and company success go hand in hand, sustaining one another. In fact, our dynamic, rewarding working environment is well known – including seven consecutive years on FORTUNE magazine’s "100 Best Companies to Work For" and other, similar accolades. By hiring the very best and brightest, Adobe continues to be a simply better place to work – creating a dynamic environment today and providing incentives for future achievement.

If you (or somone you know) fit the bill, feel free to shoot a resume to me directly: dcooper@adobe.com.

Damon

August 6, 2006
CF/Flex 2 Flash Remoting and CF/Flex 2 FDS Apps Available

The ColdFusion extensions for FlexBuilder 2 include the ability to generate complete, best practice, working CRUD applications with ColdFusion as the backend, and generates all the Flex 2 client tier, middle tier and backend code required, and even creates the FlexBuilder project for you. It's a pretty sweet piece of work, and serves to not only get you productive in minutes building apps you can use without any knowledge of ActionScript, MXML (or CFML for that matter), but also serves as a great aid to leraning the various technologies involved.

The CF/Flex 2 Application Wizard, or "Super Wizard" as we call it here, is based on a template application that was written and reviewed for best practices. The application that's generated by the Wizard uses Flex 2, the Flash Remoting Update in CF 7.0.2 and ColdFusion Components (CFC's) as the backend.

It would have been nice to have been able to have inlcuded the ability of the Super Wizard to generate a Flex 2 + CF and Flex Data Services (FDS) application as well with Flex Builder 2, but unfortunately, we just ran out of time.

However, we did get as far as a working copy of the application that was (will?) be used as the "template" app for the CF/FDS portion of the Super Wizard.

I OK'd Mike Nimer's posting of both template applications (CF/FR and CF/FDS) so you can check them out and at least see an example of what coding with CF to FDS vs Flash Remoting is like, and try out a CRUD FDS CF app for yourself to see the "push" and update conflict resolution in actiion (try running two app instances of the CF/FDS app and try updating the same record, for example, and see the conflict resolution in action).

Available Here

Enjoy!

Damon

August 5, 2006
ColdFusion 7.0.2 Product Security Audit Report Available

In the spirit of openness, we've published the final ColdFusion 7.0.2 Product Security Audit Report given to us by the 3rd party security firm, IRM, used to examine ColdFusion 7.0.2 for potential vulnerabilities, here:

ColdFusion 7.0.2 IRM Security Audit Whitepaper

We'll try to make a practice of publishing the full final reports from our external product vulnerability audits for future releases from now on as well.

Damon

August 1, 2006
What's Your Ultimate ColdFusion IDE?

I have a few quick questions for ColdFusion Developers out there:

1) Which IDE(s) are you currently using for ColdFusion development? (IE Dreamweaver, CF Studio, FlexBuilder/Eclipse/CFEclipse, Notepad, other, etc)

2) What IDE's have you used in the past (and why did you switch)?,

and

3) Which IDE would you LIKE to be using if you could wave a "magic wand" and make ANY changes you wanted to your IDE of choice? What are those changes?

[NOTE: Before responding, be aware you'll be subscribed to further comments on this list.]

Damon

July 26, 2006
Future ColdFusion Features: How Do They Do That?

Blogs have been lighting up this past week with lots of great discussion around what folks would like to see (or not!) in future versions of ColdFusion.

Just a quick note to let everyone know on the affirmative: we're listening, reading pretty much every single post down to the last comments made by readers of those blogs, and let me just reassure folks that everything (yes, absolutely everything) gets considered.

The CF Team is focused on Scorpio development currently and in terms of picking the right "major" features of a release we're following a process known internally as the "Synchronous Development Process".

SDP helps us really nail down the defining features of the release to make sure they're the most relevant and useful for our customers. The process is fairly rigid, has been used by many recent product releases at Macromedia/Adobe, forces us to ask some hard questions of ourselves and customers, and it's the same process we followed when identifying the major features we had to do for the ColdFusion "Blackstone" (CF7) release.

An entire book could be written on the SDP process, but it's robust, iterative, it takes the "Core" SyncDev CF team on the road in "waves" talking to carefully selected groups of customers which represent the various parts of our customer base. It also has some great (and very sophisticated) tools and approaches and follows a formal, prescribed process to refine the feature list to the one that should make it into the product.

We also mix in favorite features and enhancements requested by customers from all the various forums, our own "CF flavored" home-cooked ideas, as well as tight integration with and use of other company technologies that make sense as well.

Of course, there are also features that we add in that are hatched by CF engineers themselves that are just too cool to leave out :) (You wouldn't believe the now fundamental features of CF that came down this route!)

Anyway, we're well under way building the future of CF, and while we do have a bunch of features already done, we still have a bunch of TBD features and other work to do as well, but please do know that we take input from everywhere we can find it and all ideas are considered.

We kicked off this release last year with about 15 solid weeks worth of all-hands-on-deck research that came up with a set of recommendations that serve as inputs to the SyncDev and development processes. Suffice it to say, a lot of planning, listening and innovation goes into the defining of a major ColdFusion release, but we never forget our roots and what we're about:

Making Hard Stuff Easy.

Keep the ideas and feedback coming!

Damon

July 21, 2006
CFTHREAD and CFJOIN Proof Of Concept Tags

Our development engineers are called “Scientists” at Adobe which is cool because it means that we understand the importance of experimentation.  Like all good scientists, we hypothesize and test – some things make it into the product, others don’t – but we’re always innovating.  Here’s an example that Rupesh Kumar (CF Computer Scientist / Software Engineer) did on his own time after talking with a number of our customers about asynchronous processing in CF….not a lot of bells and whistles, mind you, but still a great Proof Of Concept of the CFTHREAD and CFJOIN tags.  I’ve also included a couple simple example templates to demonstrate the tags.

The first example copies a file 50 times files + sleep 200ms each time, and the second example launches 50 threads with CFTHREAD to do the same work and join back up at the end of the page with CFJOIN.  

This POC works with CF 7.0.2 (Standard or Enterprise).  While you can do multi-threading and asynchronous CFML with these POC tags, they don’t provide any of the fine-grained threading control you have with ColdFusion Event Gateways and the Asynchronous Gateway, for example.  So you don’t get thread pooling, control over how many worker threads can be active or pooled, metering on Gateway messages In/Out, or any of the other advanced capabilities of the Event Gateway architecture on CF7, but they do the basics: run stuff asynchronously in separate threads and allow for the use of local (thread-local) variables, allow access to shared scopes, etc.

A note on the simple example: you’ll want to modify both templates to copy a file (I use a “C:\baseline.txt” file) that exists on YOUR system to a directory that exists on YOUR system (I used “C:\____WORKFOLDER”).  I’d recommend turning on debugging so you can see the execution times yourself as well (much more dramatic that way).

Also note that spawned threads shouldn’t count towards Simultaneous Threads slots of the CF Server, so you shouldn’t need to adjust that setting to accommodate your extra threading.

Running the serialized example with debugging enabled yields this execution time block:

Execution Time

Total Time

Avg Time

Count

Template

10072 ms

10072 ms

1

C:\Inetpub\wwwroot\threadsynch_serial.cfm

0 ms

 

STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN

10072 ms

 

TOTAL EXECUTION TIME

red = over 250 ms average execution time

And running the CFTHREAD example with debugging enabled yields this execution time block:

Execution Time

Total Time

Avg Time

Count

Template

235 ms

235 ms

1

C:\Inetpub\wwwroot\threadsynch_cfthread.cfm

0 ms

 

STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN

235 ms

 

TOTAL EXECUTION TIME

red = over 250 ms average execution time

To be crystal clear, this little POC is not a CF product feature at this time.  This is just a simple and unsupported engineering Proof Of Concept.  I’d personally welcome your feedback and comments and I’d love to hear how folks might be able to use such functionality, but the POC’s are unsupported.  This is also no guarantee that the tag syntax will not change (perhaps drastically) in the future, and we have  no plans to update the POC as future major versions of CF come out, etc, etc.  CFTHREAD and CFJOIN tags may or may not make it into a future release, but that partly depends on feedback from customers.

One known issue/observation in playing with this personally: there appears to be a bug where if you don’t rejoin (using CFJOIN) all the threads you've spawned by the end of the page or you get a “500 Null” error (at least with my example, if you comment out the CFJOIN loop).  However, calling CFTHREAD (once) and skipping the CFJOIN appears to work fine.  Just so you’re aware.  You still get amazing parallelism as demonstrated above, even if your page waits for all threads to complete. Maybe if there’s interest we could fix that one thing, but for now, do play with these POC tags and let me know if they’re useful to you.

DOWNLOAD CFTHREAD POC & SAMPLES  (74k)

Damon


Using FDS + Flash Remoting In The Same Flex 2/CF App

You no longer need to try to merge or jam Flex jars and web app into a CF web app instance with Flex 2 and CF 7.0.2. With Flex 1.5, you wanted to do this in some cases, but this is no longer required now with Flex 2.

I suspect there's two reasons folks have been trying to do this: 1) either because of their Flex 1.5 + CF history (and they just assumed they needed to do the same with Flex 2), or 2) because they wanted to use FDS and Flash Remoting calls in the same Flex 2 app with CF as the back end. Ok, there is a rare third case where it might make sense, but the TechNote will be updated with that info to make that case very clear and make sure folks know that merging is definitely a highly specialized case, and NOT the norm that most people have to worry about.

Whatever the reason, I've observed some folks still trying to do this and running into difficulties in some cases.

The good news is that you can absolutely use Flex 2 FDS AND Flash Remoting in the same Flex 2 app SWF with CF 7.0.2 as the backend with "custom channels", but you do need to use setRemoteCredentials() independently on each (credentials don't automatically pass through Flash Remoting into FDS with in this case with custom channels, but this shouldn't be a big deal, just something to be aware of when coding your app).

There is a TechNote on the Adobe site that talks about merging Flex 2 FDS into the CF web application J2EE instance, but we're revising it shortly to make sure people realize they should have no reason to do this now with Flex 2 and to talk more about using custom channels in Flex 2 apps.

Thanks to Mike Nimer and Pete Farland for this.

Mike's blogged some details here: http://www.mikenimer.com/index.cfm/2006/7/19/Flex-Data-Server-and-CF-Flash-Remoting-together

Damon

July 18, 2006
Adobe XML/PDF Access Java Library Available

As Mike Potter blogs HERE, Adobe has made available the XPAAJ Java library for free download and use.

You no longer need to be in the Adobe Enterprise Developer Program to get access to the library, which is great.

"XPAAJ" roughly stands for "XML/PDF Access API for Java Applications", and Ben Forta's got some very cool CF custom tags he'll be posting up soon that make use of some of the functionality in this library, so download it and check it out.

Note that this is not "the" Adobe PDF Library that commercial software vendors and others can license from Adobe, but does allow for very useful PDF and PDF Form operations from a Java environment (including from ColdFusion of course, since ColdFusion is written in Java and you can use any Java API's in your CFML pages).

Some of the operattions XPAAJ can perform on PDF's include the ability to do:

- PDF Text extraction
- XML form data import/export
- XMP metadata export
- PDF Annotation import/export
- Conversions between PDF and XDP
- PDF File attachment import/export/delete

The SDK also contains Java code samples that demonstrate these operations, but watch Ben's Blog for more info on the ColdFusion custom tags he put together that use the Adobe XPAAJ library...cool stuff!

As Mike Potter also points out, there are a few key things to be aware of in the license:

1) You can use the software if a) you own a copy of Adobe Enterprise software (defined as commercially available versions of Adobe software branded as LiveCycle, ColdFusion or Flex), and you may only use it for your own internal business purpose OR b) You can use the software to develop programs to extract data from PDF files delivered to you from a licensed copy of LiveCycle Forms or Reader Extensions.

2) There are restrictions on the library WRT re-distribution, selling/reselling, etc.

(Be sure to read the license prior to downloading for full details.)

Download the XPAAJ Library Here

Enjoy!

Damon

July 17, 2006
New CF7 ReportBuilder Available

Get it here: http://www.adobe.com/support/coldfusion/downloads.html


Fixes a bunch of ColdFusion Report Builder issues (thanks for reporting these, Kay and others!)

Enjoy.

Damon


Not Too Fluffy...