An Architect's View

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

An Architect's View

Entries Tagged as coldfusion

cf.Objective() 2013 - What I Learned

May 19, 2013 · 3 Comments

It's Sunday afternoon after the best cf.Objective() ever and I'm looking over my notes to offer some thoughts on the last three days.

[Read more →]

3 CommentsTags: cfobjective · coldfusion · javascript · mongodb

Humongous MongoDB - cf.Objective() 2013 - Slides and Code online

May 18, 2013 · No Comments

The slides and code for my third presentation at cf.Objective() 2013 are now online:

No CommentsTags: coldfusion · mongodb

ORM, NoSQL and Vietnam - cf.Objective() 2013 - Slides and Code online

May 16, 2013 · No Comments

The slides and code for my second presentation at cf.Objective() 2013 are now online:

Updated with the correct PDF link - sorry about that!

No CommentsTags: coldfusion · mongodb · orm

Learn You a What for Great Good - cf.Objective() 2013 - Slides and Code online

May 16, 2013 · No Comments

The slides and code for my first presentation at cf.Objective() 2013 are now online - Polyglot Lessons to Improve Your CFML:

The other presentations will be posted after I've given them and the code will appear in that Github repository.

No CommentsTags: clojure · coldfusion · groovy · javascript · programming · scala

New Relic and CFML

May 14, 2013 · 2 Comments

A while back I blogged about how we instrumented our Clojure code to show up in New Relic traces and we also did some stuff in CFML to get better data out of New Relic. Just now Joe Swenson asked on Twitter how to get CFML page names to show up in New Relic so I figured I'd blog a quick note about that.

You should already be starting up your servlet container with the -javaagent: option if you're using New Relic for monitoring your web app (and indeed New Relic has documentation about adding the Java agent to ColdFusion). That means you'll have the New Relic JAR on your classpath and so you can instantiate the New Relic agent API class in your CFML code. We do this at application startup:

application.NewRelic = createObject( "java", "com.newrelic.api.agent.NewRelic" );

Then at the start of each request, we do something like this:

if ( structKeyExists( application, "NewRelic" ) ) {
application.NewRelic.setTransactionName( "CFML", CGI.SCRIPT_NAME );
}

The first argument is a 'category' name and is currently ignored by the New Relic API (and you can pass null if you want). The second argument is how you want this web transaction reported in the New Relic traces. We actually just use a fake path to represent groups of requests since we have a lot of internal instrumentation (in Clojure) and that gives us better data about where time is being spent in the code.

2 CommentsTags: coldfusion

My cf.Objective() 2013 Presentations

May 12, 2013 · 1 Comment

Other than noting back in January that all three(!) of my talk proposals were accepted, I haven't blogged about them since, so the only information about them is on the cf.Objective() web site. The session overviews give a fair sense of what you should get out of each presentation and roughly what they'll cover.

[Read more →]

1 CommentTags: cfobjective · clojure · coldfusion · groovy · javascript · mongodb · scala

Where can I download old versions of FW/1?

May 07, 2013 · 1 Comment

I've been asked this several times recently so I figured it was worth a blog post. First of, why would anyone want older versions of the framework? Well, if they're running on Adobe ColdFusion 9.0.0 or earlier, they can't use the 2.x release stream: they're stuck on 1.x. Also, if they're currently using an old version and don't want a major upgrade, they might want a minor upgrade for a bug fix.

Okay, so why haven't I blogged about this before? Truth be told, I thought it was "obvious" how to find specific legacy releases on any Github project. Apparently, it is not obvious for everyone so it is worth blogging about. Every properly managed project on Github tags every official release so that all past releases can be found on the 'tags' page. You can see FW/1's 'tags' page where you can find every release since 1.0. Unfortunately, my choice of naming for tags has not always been consistent and I forgot the 'v' prefix for a while around the release of 2.0. Oops. Unfortunately the typical naming convention for prereleases tends to sort them above their gold release versions - see Clojure's core.logic library's tags for a more striking example. At least Github provides an easy mechanism for provided tagged archive releases.

It's probably worth pointing out that downloading FW/1 directly from the FW/1 RIAForge project page will give you the latest stable release which is currently 2.1.1. That's because it downloads a ZIP file of the "master" branch from the Github site. All development is performed on the "develop" branch. The only time the RIAForge site will slip you something different is when a new release is in the Release Candidate stage and I update the RIAForge page to download a ZIP file of the "develop" branch - and I update the page to clearly state that! - and this is to increase adoption of the new release and help flush out any remaining bugs that haven't been caught during the alpha and beta testing phases.

1 CommentTags: coldfusion · fw1 · oss

My cf.Objective() Schedule 2013

May 03, 2013 · 1 Comment

I saw that Nolan Erck had blogged his cf.Objective() schedule so I thought I'd do the same. The decisions are not generally as hard for me as for Nolan: when I'm not speaking or attending a general session, I'm going to be focused on JavaScript since that's where I'm weak and that's where I'll learn the most. Mostly focused on JavaScript, that is.

[Read more →]

1 CommentTags: cfobjective · coldfusion

New FW/1 - Framework One - Organization on Github

April 06, 2013 · No Comments

To make it easier to manage collaboration on FW/1-related projects in future, several projects have now moved under a new FW/1 - Framework One - organization on Github. Your forks and watches should have been updated but if you have local clones of the old repos under my personal Github account, you'll want to update those. Here's the full list of Framework One projects:

If you were a collaborator on one of these projects before, you will no longer have commit access (because you were a collaborator directly on my repo). If you'd like to become a collaborating team member on one of these projects as part of the new organization, contact me directly to discuss that. I'd certainly like to see some of the regular contributors in the past become official "Team Framework One" members in the new organization!

Thank you to all the contributors who've helped get these projects to where they are now!

No CommentsTags: cfmljure · clojure · coldfusion · di1 · fw1

DI/1 0.4.7 available for testing

April 06, 2013 · No Comments

The seventh minor update in four months, this brings a number of bug fixes and enhancements to DI/1 - Inject One since the 0.4.0 release at the beginning of December, 2012:

  • Fix optional constructor argument handling (with help from Marcin Szczepanski)
  • Fix edge case bug in property / setter / accessor logic
  • Setter metadata is cached, improving transient bean handling performance (Grant Shepert)
  • Robustness fixes for file path handling and parent bean factory handling
  • Add getVersion() API
  • Addition of transientPattern configuration option (Matt Levine)

In addition, DI/1 has moved to the FW/1 - Framework One organization on Github. The old repo still exists under my account (and is an up-to-date fork), but you should watch / fork / contribute to the new repo going forward.

No CommentsTags: coldfusion · di1 · oss