Photo from Chile

Extending Mura CMS with Plug-Ins

I've been using Mura CMS on and off for the past few months, trying to integrate a bunch of functionality from an existing site into a Mura installation. At first it was a fairly daunting task, as although Mura is an excellent tool which is easily extendible, it is also quite complicated and there is not a heck of a lot of documentation available for back end development. I was lucky enough to get some help from Matt Levine, the architect and lead developer, who helped me get an understanding of the plug-in architecture, after which I was able to integrate much of my existing functionality into Mura.

Blue River has made a start at producing some back end development documentation, and I decided to attempt to help the cause by documenting what I've learned about developing plug-ins for Mura. To that end I'm starting a series about extending Mura with plug-ins. This first entry will be an introduction to plug-ins. I plan to follow it up with articles containing much more detail. As I'm about to head off for three week's vacation in beautiful British Columbia, those additional articles will not appear until some time in July.

[More]

An Object Oriented Approach to Validations - Recording Available

I'm happy to announce that the presentation that I delivered to the Online ColdFusion Meetup last night, entitled An Object Oriented Approach to Validations, was recorded and is therefore available to anyone who is interested and wasn't able to attend in person.

Towards the end of the presentation I listed some resources that exist for ValidateThis!, which is the framework that I created using the approach that I described. Those are:

This presentation was very much about why I created VT and how I designed it. It didn't really address questions of how one uses the framework or how to integrate it into an existing application. I have blogged about that extensively in the past, but I also plan on putting together a new presentation addressing those issues, which I hope to present to the meetup group in the future.

I'd like to thank everyone for attending and for all of the wonderful feedback, and I'd also like to thank Charlie Arehart for allowing me to speak and for continuing to operate this amazing resource.

Presenting An Object Oriented Approach to Validations to the Online ColdFusion Meetup

Just a quick note to announce that I'm going to be presenting my session from cf.Objective() to the Online ColdFusion Meetup this Thursday, June 18th, at 6:00pm EDT.

Details can be found at the Meetup site. You can attend the presentation via Connect on Thursday. The session will be recorded and made available.

Here is the abstract for the presentation:

Performing validations on user input is something that all of us, as application developers, must do. When moving from a procedural to an object oriented approach many developers have difficulty determining how and where to perform validations. In this session you will be introduced to an object oriented approach to validations. This approach enables you to add validation "smarts" into your business objects, while keeping that logic fully encapsulated outside of the objects, meaning that any changes to your validation rules and/or logic will have zero impact on the rest of your model. We'll look at the individual objects that comprise this approach, and understand how they work together to automatically perform server-side and generate client-side validations using metadata from a simple xml file. You will leave the session with a better understanding of how to design using objects, as well as a tool that will greatly simplify the task of adding validations to your object oriented application.

This session is aimed at intermediate to advanced developers who are familiar with object oriented concepts and are interested in learning about how to incorporate validations into their objects, as well as object oriented design in general.

Hope to see some of you there.

ValidateThis! 0.75 - Now Supports Internationalization (i18n)

A developer named Mischa Sameli asked a question about supporting internationalization (i18n) in ValidateThis!, my validation framework for ColdFusion objects, on the ValidateThis Google Group a few weeks ago. His questions got me thinking about how I might do that, and those thoughts turned into design ideas, which turned into code. So I'm happy to announce that the latest version of VT, just released to RIAForge, has full support for i18n. I have created a new i18n demo which shows off this new feature in all of its glory. If you visit that demo page you'll see that you can switch languages between English and French.

So, what does i18n support in VT mean? In a nutshell, it means that all validation failure messages, both on the client side and on the server side, can now appear in multiple languages within a single application. A developer still only has to specify the metadata for each validation rule once (which is the primary objective of the framework), with the translations being performed by a translation layer.

[More]

Building An Object Oriented Model - Recording and Sample Code Available

I'm happy to announce that the presentation that I delivered to the Online ColdFusion Meetup last Thursday night, entitled Building an Object Oriented Model, was recorded and is therefore available to anyone who is interested and wasn't able to attend in person. Don't be put off by the fact that the recording is 90 minutes long - the presentation is only 60 minutes, and is followed by a 30 minute Q and A session.

A few people asked about the sample code that I presented. It can be downloaded directly from this post.

Also note that I have written a number of posts on these topics, so anyone looking for more information can check out the OO Design category of this blog.

I'd like to thank everyone for attending and for all of the wonderful feedback, and I'd also like to thank Charlie Arehart for allowing me to speak and for continuing to operate this amazing resource.

Finally, I will be presenting my other cf.Objective() presentation, An Object Oriented Approach to Validations at an Online ColdFusion Meetup session in the near future, date and time TBA.

We're in the Market for a Car - OT

Sorry for the OT post, but I was hoping to solicit some feedback from the community.

My wife and I have decided to buy a car. Since we returned from our nearly two years abroad in 2003 we have not owned a car. We've survived six Toronto winters, and getting things done with first one, then two, children without owning a car. We managed that by:

  • Living in mid-town Toronto, thus being able to walk to many places (grocery store, book store, hardware store, library, etc.).
  • Making extensive use of public transit. Our house is a five minute walk from a subway station.
  • Getting access to a car when we need it through our membership in AutoShare, a car sharing program.
  • Renting cars for longer trips (e.g. vacations).

We've noticed, however, that we've been getting AutoShare cars more and more frequently, as much as three times per week. We believe that even at that rate using AutoShare is much less expensive than owning a car, but it's also less convenient. Particularly when one has to install and uninstall two car seats on each occasion. So we're taking the plunge and buying a car!

The first step, of course, was to define the requirements for our new car:

  1. It must fit comfortably on our parking pad, which means that the car must be around 4700mm (15.5 ft) or less in length.
  2. It should have a reasonable amount of cargo space, as we enjoy camping and road trips with the kids.
  3. It should have reasonably low fuel consumption.
  4. It should be nice enough to justify buying a car after all of these years ;-)

With those requirements in mind, we started looking at specs online, and have compiled the following list of candidates:

  • Acura RDX
  • Audi A4 2.0T Avant
  • Volvo V50 T5 AWD
  • Saab 9-3 SportCombi
  • Lexus RX 400h
  • Mercedes R350

The Lexus and the Mercedes might be a bit too long to fit on our parking pad (it's kind of hard to judge without actually attempting to park them), and they are also more money than we think we're prepared to spend, but we're leaving them on our "long list" for now. I should also mention that we're not considering buying a brand new car - we'll be looking for a late-model (e.g., 2007 - 2008) car.

I haven't paid attention to the world of cars for a very long time, but I'm guessing that some people reading this might have. So, if you have an opinion on any of the above cars, let me hear it!

Presenting Building An Object Oriented Model to the Online ColdFusion Meetup

Update: A recording of this presentation, as delivered to the Online ColdFusion Meetup is available via this blog post.

Just a quick note to announce that I'm going to be presenting my session from cf.Objective() to the Online ColdFusion Meetup this Thursday, May 28th, at 6:00pm EDT.

Details can be found at the Meetup site. You can attend the presentation via Connect on Thursday. The session will be recorded and made available.

Here is the abstract for the presentation:

When making the move from a procedural to an object oriented approach one often comes across a pattern that involves using services and gateways to act as a middle man between a controller and your actual business objects. This session will present an approach to implementing a common set of services and gateways. Through the use of abstract classes you will see how to eliminate duplicate code and how to encapsulate logic to increase the cohesiveness of your entire model. We will start with the basics, describing what services and gateways are, and then look at building a model from the ground up. You'll leave the session with an understanding of the components that go into building a model, as well as some of the object oriented principles that will help guide you in your design efforts.

This session is aimed at beginning to intermediate developers who have some experience with and knowledge of basic OO concepts and are interested in learning about some of the design considerations that go into building an OO model.

Hope to see some of you there.

More Entries