An Architect's View

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

An Architect's View


This is a fairly complete list of all the projects I've released as open source as well as the example code that goes with several of my presentations. In addition to what's listed here, you can take a look at my seancorfield Github repo and the Framework One (FW/1) Github repo. I also work on some Clojure stuff.

  • BDD with cfSpec Sample Code
    This is the sample code for my Behavior-Driven Development with cfSpec presentation.
  • Closures for CFMX
    This is a small project on RIAForge that provides a way to write closures in CFML. You have to write the closures as code-in-a-string and the library writes that to a file and includes the code. Closures are more than just anonymous functions - they also have the concept of 'free' and 'bound' variables. Bound variables are tied to the definition context (i.e., variables in scope where the closure is created) and free variables bind to whatever is in scope where the closure is executed. This was more of an experiment than a production-quality project and it would be nice to see real closures as part of CFML at some point in the future!
  • CF8 AJAX Sample Code
    Back when CF8 was in prerelease, I was given permission to preview the Ajax functionality at a couple of conferences and user groups. This is sample code for that presentation (some of which draws heavily on code from Mark Drew I believe?). Since I was a JavaScript n00b, I was pretty impressed by the built-in Ajax functionality and I used it pretty heavily on a few sites I built. Over time, I started to use jQuery more and more and haven't used the built-in stuff for quite a while. That said, the built-in stuff is a great way to get started with Ajax and dynamic UI elements!
  • Concurrency for CFMX
    Another experiment, this time providing a wrapper for the underlying thread-based tags that is modeled after the Java concurrency library. It provides an easy-to-use way of executing code in separate threads where you can actually return values from the background execution.
  • DI/1 - Dependency Injection Framework
    DI/1 is a reaction to bloated, complicated DI / IoC frameworks and is intended to bring back the simplicity that is CFML!
  • Duck Typing Sample Code
    A controversial presentation, originally given at CFUnited some years back, where I stepped in for Hal Helms at the last minute. Mostly these are fairly contrived examples and I think the subject of "duck typing" aka typeless programming has been done to death by now.
  • Edmund - Event-Driven Model Framework
    Edmund is a micro-framework I created to allow CFML to be written in the same event-driven style that Flex developers are used to. Many of the syntactic constructs are deliberately the same as in Flex. Edmund also contains a simple workflow engine that allows you to easily configure complex processes to be automatically triggered via events.
  • Extending the language of Fusebox Sample Code
    This presentation focused on the "lexicon" feature of Fusebox 5 which allows you to write your own XML verbs on top of the built-in grammar. If you likely writing XML circuits for Fusebox but wish the available verbs were more powerful, this is for you. Personally, I've grown a bit tired of XML, which is why I created FW/1...
  • FW/1 - MVC Framework
    FW/1 was released in the summer of 2009. It hit its 1.0 milestone in January 2010 and is already becoming very popular with CFers who either don't like frameworks at all or don't like the complexity of existing MVC frameworks. It's meant to be invisible. In 2010, various FW/1 users - including myself - have been presenting the framework at conferences worldwide. Go on, download it and try it out for yourself!
  • FW/1 for Clojure - MVC Framework
    FW/1 for Clojure was released in fall 2011.
  • Frameworks Sample Code
    A simple task manager written in a variety of styles using different frameworks as a way to compare different frameworks. The accompanying presentation has evolved over the years but the task manager has not been kept up to date with the latest versions of the frameworks. It should still provide a useful comparison for folks just starting to look at Fusebox, Mach-II or Model-Glue. Maybe this year I'll update the examples to the latest versions and add ColdBox and FW/1 versions. Maybe.
  • Fusebox Workshop Sample Code
    I can't even remember where I gave the presentation that this goes with. If I get a chance to crack open the ZIP file, I'll write a more useful comment about it.
  • IRCBot Event Gateway
    I love event gateways! I wrote both the JMS event gateway that shipped with CFMX 7 and the much more sophisticated ActiveMQ (generic JMS) event gateway that shipped with CF8. I wrote a number of other event gateways too. This is the one that people seem to have gotten excited about tho'... visit DAL.NET IRC #coldfusion and you'll find an incarnation of it on channel providing humor and useful information.
  • Persistence Sample Code
    Years ago I "toured" user groups with two talks: Objects & Persistence; Managing CFCs with Factories. This is the sample code from the former.
  • Remote File Manager (PDF)
    A little utility I wrote for a site on GoDaddy that had very limited file manipulation due to the sandbox restrictions. A curiosity.
  • REST Adapter
    I've often complained that doing REST with CFML is harder than it needs to be. I wrote this at Adobe to provide a simple REST-based API to some CFCs instead of exposing a SOAP API. It allows you to call any remote method on any CFC via a simple XML post and it serializes the result back to a semi-standard XML packet (that looks a lot like the (Cold)Spring value structures).
  • Scripting for ColdFusion 8 (Supports PHP and Ruby)
    Yet another experiment. It allows you to run (some) PHP and Ruby code directly inside a CFML page. Barney Boisvert's CFGROOVY project is much more sophisticated so I'm leaving this up purely as a curious piece of history.

No Comments

0 responses so far ↓

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment

Leave this field empty