An Architect's View

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

An Architect's View

Presentations

This is a fairly complete list of presentations that I've given over the years. The downloads are all PDF and contain just the slides. See the 'software' page on my blog for sample code that goes with some of these presentations.

  • BDD with cfSpec (PDF)
    Behavior-Driven Development with cfSpec. I'm a strong advocate of Test-Driven Development but I find it works best when building low-level components and when you've already got a strong sense of how those components should respond to input. For higher-level development, I find the vocabulary and approach of Behavior-Driven Development more approachable since it lets you write a description of high-level expected behavior in an English-like domain specific language (DSL). It looks like simple XML with some CFML code embedded but it's actually a set of custom tags so the whole specification is executable.
  • Branches (Subversion) (PDF)
    This presentation goes beyond the basics of SVN to look at how you can manage deployments across tiers (development, staging, production) with SVN branches, as well as looking at strategies for managing parallel development.
  • CF8 AJAX (PDF)
    I gave this presentation a couple of times while CF8 was in prerelease.
  • Design Patterns (PDF)
    Originally created for Adobe MAX some years back, this talk has been given to several user groups since. It tries to deconstruct the techno-babble and mysticism around design patterns by looking at the core concepts: common problems with common solutions and the trade offs involved.
  • Duck Typing (PDF)
    Hal Helms was due to give this presentation at CFUnited several years ago but was unable to attend. I stepped in at the last minute and used his presentation as an inspiration to create my own view of duck typing aka typeless programming. It gained some notoriety because on one slide I mentioned the performance benefits of duck typing and a lot of people promptly forgot the rest of the slides. Sigh.
  • Event-Driven Programming in ColdFusion (PDF)
    This is the version of the Edmund presentation I gave at Adobe MAX, focusing on the similarities with Flex's event model to allow a common coding style between Flex and CFML.
  • Extending the language of Fusebox (PDF)
    Fusebox 5 introduced the ability to write your own verbs for the XML language of the Fusebox circuits. I seem to recall the "Model-Glue in Fusebox" example got the most interest...
  • Factories (PDF)
    This and the persistence talk below were the two talks that I "toured" user groups with while my wife was training to be a cat show judge. Both talks were given at CFUnited, along with the duck typing talk above. This talk tries to show the complexity of dependencies that you can run into as you rely more and more on objects to package your code and how you can reduce that complexity by using patterns known as Dependency Injection or Inversion of Control (and why ColdSpring makes complete sense!).
  • FW/1 - The Invisible Framework (PDF)
    This talk introduces my lightweight MVC framework. It covers the principles, the conventions and refers to the examples that ship with FW/1 as demos. This version is from Scotch on the Rocks 2011.
  • Frameworks (PDF)
    A ColdBox / Mach-II / Model-Glue comparison preso. Originally given to BACFUG in April 2009, this version is very slightly updated to reflect the availability of Mach-II 1.8 and the improved documentation for Model-Glue - as well as my feelings about ColdBox, having used it heavily for nine months.
  • Fusebox Workshop (PDF)
    Written while Fusebox 5.5 was in development, this presentation covers the evolution of Fusebox up to version 5 and then previews the no-XML approach offered by version 5.5.
  • Functional Programming: What is it and why should I care? (PDF)
    An introduction to functional programming, showing techniques that you can use to make your CFML easier to test, safer with concurrency and more reusable - using examples from Clojure as well as CFML. Created for cf.Objective() 2011.
  • Getting Dynamic with ColdFusion (PDF)
    Probably the most bewildering talk I've ever given - based on the audience's reaction at Scotch on the Rocks. It was intended to show the unique benefits of dynamic programming that is possible with CFML (but not possible with Java) as part of a push to get CFers to stop looking at Java for inspiration. I still like the presentation and I hope to give an updated version to user groups in the future. But I'll admit it's a bit left-field!
  • Multi-Tenant, Multi-Lingual Architecture (PDF)
    A two hour deep dive created for cf.Objective() 2011 that looks at infrastructure and software issues behind creating a single codebase that supports multiple sites.
  • Open Source Landscape (PDF)
    Commissioned for CFinNC in 2009, this talk has been seen at cf.Objective() 2010, CFUnited 2010 and was updated for OpenCF Summit 2011. It's a broad overview of the benefits of open source, why you might give away your code, how you can contribute to open source projects, a look at the evolution of open source within the CF community and my (hopeful) vision for the future.
  • Open Source Language Evolution (PDF)
    Commissioned for OpenCF Summit 2011, this talk looks at the processes behind two "rising stars" in the JVM languages world and then reviews the processes behind Open BlueDragon and Railo, to show how CFML is able to evolve in the same way as other open source language projects.
  • Persistence (PDF)
    Intended to be an introductory talk to CFCs and how to move from pure queries to objects that are persisted to a database. I probably ought to create an updated version of this that also covers the new ORM integration in CF9 (and coming soon to Railo).
  • Real World SOA
    A practical discussion of the pros and cons of trying to create software following a Service Oriented Architecture approach. The examples are drawn from the last project I was on at Adobe and gave birth to the REST adapter you'll find on my 'software' page.