An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

Entries for month: February 2009

Adobe promotes AIR via

February 28, 2009 ·

I just received the latest newsletter and was pleased to see the following promotion from Adobe:
This mailing has been brought to you by: Adobe(R) AIR(TM)
Create and Deploy Rich Internet Apps outside the browser with Adobe(R) AIR(TM) software. With Adobe AIR, Ajax developers can use existing skills and code to build responsive, highly engaging applications that combine the power of local resources and data with the reach of the web. Download the Adobe AIR SDK and Ajax docs to start building applications today.
(followed by a jump link - via DoubleClick - to the AIR SDK download page) Nice to see Adobe reaching out to the open source community to promote development for the AIR platform!

Tags: adobe · oss · air

The value of unit testing?

February 27, 2009 ·

Sammy Larbi has a great blog post responding to the recent unit testing controversy sparked by Joel Spolsky and Jeff Atwood. If you're skeptical about unit testing, Joel and Jeff's piece would probably ring true for you but Sammy shares some good insights as to why they might have the wrong end of the stick. Whichever side of the fence you're on regarding TDD, you need to read his blog post!

Tags: coldfusion · tdd

Custom Getters and Flex Remoting "gotcha"

February 27, 2009 ·

I ran into an interesting bug in the final stages of preparing the latest release of the Broadchoice Workspace application. I had added a custom getter to an ActionScript object to calculate a complex property, along these lines:
public function get complexProperty() : SomeType
   return someComplicatedExpression
This allows you to say myObj.complexProperty without needing parentheses for a function call (and with a matching custom setter, you can assign to the pseudo-property as well). It's a nice feature of ActionScript that can really make your code much more readable. The particular getter I added was only valid when certain data in the object was non-null. In all of the mainline use cases inside the application, this was fine. The complexProperty was only ever accessed after testing the condition on the object:
if ( myObject.someCondition )
   doStuffWith( myObject.complexProperty )
Yes, someCondition was a custom getter as well. The bug I ran into was that sometimes remote calls involving this object silently failed. I didn't get a fault back. It was almost like the call just didn't happen. Puzzled, I fired up the Flex Debugger (which is absolutely awesome!) and traced through the code. No visible exceptions, no strange paths being executed in the code. More puzzled, I fired up JBoss in the Java Debugger under Eclipse and put a breakpoint inside the server method that was called. Strangely, the code ran without hitting the breakpoint! That showed that the call really was not happening for some reason. Back in the Flex Debugger, I set a breakpoint just before the remote call and took a very close look at the object in the Variables panel when I hit the breakpoint. It showed the custom getter as a property on the object (as expected) but the value in the debugger showed an exception was thrown retrieving the property. Then it hit me: Flex Remoting tries to serialize the object by calling the getters and it was failing due to the exception - and silently swallowing the exception without telling me, and without executing the remote call! I updated the getter to return a default value if the condition (myObject.someCondition) was false and, sure enough, the object serialized just fine and the remote call was successfully executed! Moral of the story: if you add custom getters to ActionScript objects, make sure they cannot throw an exception when the object is in a state where you need to send it to the server using Flex Remoting!

Tags: flex

Behavior-Driven Development with cfSpec at cf.Objective() 2009

February 26, 2009 ·

Nic Tunney just notified me that my BDD talk has been picked up for cf.Objective() 2009! Check the conference schedule for more details - a couple of new sessions by Mark Drew have also been added. Here's the abstract for the BDD talk:
The natural way to develop software is to start with requirements - the expected behavior - of the system. We work our way down the line through design to implementation and somewhere in there we do some testing. Unit testing focuses on implementation, even if you write the tests first. Behavior-Driven Development is intended to let you write the expected behavior - the requirements - in a testable format so that you can develop software top-down, in a natural manner. cfSpec is a great new framework that supports BDD for ColdFusion. Find out how it can help you develop testable, high-quality software in a natural way.
After cf.Objective(), I'll be happy to give this talk to CFUGs via Connect (Salt Lake CFUG - this means you!)

Tags: coldfusion · tdd · cfobjective

Scotch on the Road 2009 - Venues and Pricing confirmed

February 23, 2009 ·

Kev has posted confirmation of the dates, venues and pricing for the three-legged rolling conference that will be Scotch on the Rocks Road 2009. As promised, pricing has been kept extremely affordable - under fifty quid for any one event with discounts for attending more than one (and discounts for groups). See you there!

Tags: scotch09 · coldfusion

Another reason to attend Hal Helms' training class!

February 19, 2009 ·

Event-Driven Programming! You already knew I was a fan of this approach - that's why I wrote Edmund, after all - now Hal is going to cover this style of programming. From his blog post on event-driven programming:
One of the things we'll be working with in the class next week is event driven programming. ... I find this approach has benefits and drawbacks. The drawbacks are inherent in the approach: it's decentralized. ... The benefits, though, are considerable. Adding functionality into a site is much, much simpler. Maintenance is easier. Testing is easier. ...

Tags: edmund · coldfusion

BACFUG - Using ANT - Recording

February 18, 2009 ·

Tonight's BACFUG presentation by Peter Farrell has been posted to Charlie Arehart's User Group TV site. You can view the recording directly. All BACFUG meeting recordings have now been added to the BACFUG site on Adobe Groups under Resources > Reference Library.

Tags: bacfug · coldfusion

CFUnited Valentines Day ThinkGeek Raffle

February 12, 2009 ·

This is a very cool and inventive promotion idea from Liz @ Stellr:
If you register [for CFUNITED] by Feb 14th, you will be entered to win $150 gift certificate! This is our way of saying we love our customers. Read more on the CFUNITED blog.
This year CFUNITED is at a wonderful venue with a very diverse set of topics so register early to get the best price - and the chance to win!

Tags: coldfusion · cfunited09

Scotch on the Road 2009

February 11, 2009 ·

In addition to my cloud computing talk, I also submitted a talk on Behavior-Driven Development using cfSpec to Scotch on the Road 2009. I don't know yet which talk(s) I'll be giving at which location(s) for that conference but I'll blog more details once the schedule is updated. I found out today they've decided to go with just the cloud computing talk (but possibly at all three locations). I still plan to develop a BDD talk but it may just end up being given to user groups at this point.

Tags: coldfusion · scotch09

Edmund at SacCFUG

February 10, 2009 ·

I meant to mention this days ago: Pat Santora is presenting my Edmund framework at the Sacramento CFUG tonight. Short notice but if you're in the area, go along and hear Pat talk about event-driven programming in ColdFusion. Pat is a contributor to the Edmund project and has created a new presentation focused on CFML examples using Edmund. Thank you Pat!

Tags: edmund · coldfusion