An Architect's View

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

An Architect's View

Entries for month: May 2011

MongoSF 2011

May 24, 2011 ·

I spent today at the MongoDB conference in San Francisco. World Singles is evaluating a number of noSQL data stores for some upcoming enhancements to our platform so we've already been playing around with Cassandra and Neo4J. The MongoSF 2011 conference was a good opportunity to take a good look at MongoDB as well as talking to other people who are using it.

[

Tags: mongodb · clojure

A day of Clojure macros

May 23, 2011 ·

About a year ago I had the good fortune to attend Amit Rathore's ProClojure boot camp which greatly accelerated my Clojure learning experience. This last weekend I attended another day of Amit's training: a day of Clojure macros.

The day started out very gently (and at a more reasonable hour!) with a brief introduction to basic macros - unless, declare, infix - and then things got interesting with some advanced macros (modifying functions), anaphoric macros (capturing variables), macros defining macros and, finally, an entire object model in about 40 lines of Clojure!

I pushed my code examples and notes up to github - feel free to take a look.

Tags: clojure

FW/1 Updates (fairly important!)

May 23, 2011 ·

Work continues on FW/1 2.0 with the addition of a setLayout() method, addressing issue #47, and an important change to the project home on RIAForge: the Download link now delivers Bleeding Edge builds rather than the stable 1.x builds. If you are on earlier CFML engines, this will affect you because the 2.0 build stream requires Adobe ColdFusion 9.0.1, Railo 3.2.2 or later and has not yet been tested on Open BlueDragon - in the 2.0 build stream, the CFCs are all-script and will not run on earlier CFML engines.

If you want the 1.2 stable build - or more recent bug fixes on the 1.x stream - you need to go to the github site, select the master branch (which is the default) and download the build you want from there.

I've made this change to accelerate adoption of 2.0 and get more thorough testing feedback from the community.

Documentation for the recently added custom routes feature will appear shortly. My work on FW/1 has been somewhat disrupted of late by a hoard of other things (including preparation for cf.Objective() and my day job!) but now that we're using FW/1 at work, progress will pick up.

I've also added a roadmap page to the wiki so check that out!

Tags: coldfusion · fw1

Clojure and log4j

May 20, 2011 ·

As my readers will no doubt know by now, I have a large CFML application and I'm migrating low-level parts of it to Clojure to that I can reuse those pieces from both CFML and Clojure (and Scala). I recently migrated all of the environment control logic, which automatically configures the application based on which server the code is running on top of, to Clojure so that my CFML, Clojure and Scala code could all leverage the same environment control logic. I'll probably blog about that at some point. I've also created a Clojure replacement for the CFML ORM we've been using (Reactor). Today, however, I want to talk about logging.

[

Tags: coldbox · coldfusion · clojure

Another cf.Objective() is over - wow!

May 18, 2011 ·

This year's cf.Objective() was the biggest, most successful ever: more attendees, more speakers, more tracks, more content, more sponsors, lightning talks, BOFs, ad hoc sessions - more, more, more! Yet it still managed to maintain the great ratio of attendees to speakers that gives people a small conference feel with great networking opportunities.

[

Tags: oss · clojure · fw1 · coldfusion · saas · cfobjective

cf.Objective() 2011 presentations posted

May 14, 2011 ·

Now that I've given both of my presentations at this year's cf.Objective() - which was an awesome conference, BTW! - I have posted them both to the "Presentations" page on my blog.

Functional Programming: What is it and why should I care? - my one hour introductory talk from Saturday morning, showing Clojure and some functional style CFML.

Multi-Tenant, Multi-Lingual Architecture for Software as a Service - my two hour deep dive from Friday afternoon.

Tags: coldfusion · clojure · saas · cfobjective 0.0.1

May 08, 2011 ·

The library formerly known as clojure.contrib.sql has had its first non-snapshot release.

Features added (above and beyond clojure.contrib.sql):

  • returns generated keys for single record inserts
  • supports naming strategies to allow you to override the conversion of keywords to/from SQL entity names
  • exposes resultset-seq that respects naming strategies
  • exposes print-* functions to print SQL exceptions (and no longer prints to *err* on an exception)

You can read more about naming strategies in the documentation.

If you start using this library with Clojure 1.3.0 and find bugs or think of enhancements, please enter them in the JIRA bug tracker.

To use 0.0.1 from Maven or Leiningen, see the home page on github.

Tags: oss · clojure

D2WC - Something Different

May 07, 2011 ·

Next week is cf.Objective() 2011 and it's pretty typical of conferences that I've spoken at over the years: heavily focused on developers (and heavily focused on CFML). In July, however, I'm doing something very different and I'm really looking forward to it: D2WC - Designer Developer Workflow Conference!

Accordingly, instead of a technical presentation - often on an advanced subject - I'm going to attempt a truly introductory talk that focuses on how to move from design to a fully functional dynamic web site. I'll be drawing on presentations from AJ Mercer - at last year's cf.Objective(ANZ) - and Daria Norris - at next week's cf.Objective(). I want to thank them for their support of FW/1 and I want to thank Dee Sadler for giving me the opportunity to do something different by letting me speak in Kansas City in mid-July!

Tags: coldfusion · oss · d2wc · fw1