Converting one company to CFML using an OSS CFML engine (via Dan's Drivelings)

There have been some lively discussions on Twitter today centered around the adoption of open source CFML engines in various types of businesses. I can’t speak to any kind of trends anywhere, but I wanted to share my experience with a project I was involved in last year that used Railo as the CMFL engine.

My brother, Andrew, is the head of the IT department for a firm that sells books and other supplies to school libraries all over the country. When he took over the position, he inherited a web site built on Java using the Struts framework. The original site had been in place for quite some time and the ownership decided it was time to refresh the site. The main issue (besides the outdated design) with the site was that it was so difficult to update. I’m not a Java developer by any stretch of the imagination, but from what I understand, even the simplest update required the site to be recompiled. The actual implementation of the site was fairly brittle as well, so new features were generally not even considered for fear of breaking something that was currently working.

Andrew had previously done some ColdFusion work with me on some of my other projects. He approached his management about contracting with me to help them replace their java web site with one built on CFML. During the initial requirements gathering and planning phases, the decision was made to use Railo as the CFML engine for the site. This was shortly after Railo went open source which appealed to them as they have several systems within the company that are open source. Cost was not a major concern (Railo being free vs the cost of a standard license of Adobe ColdFusion) but it was a consideration as this project did have a fixed budget. When we started the project, Adobe ColdFusion MX7 was the most current release. In several categories at the time, Railo’s performance was quite a bit better than Adobe ColdFusion’s. This has obviously changed in the interim, but that’s the way it was then. Anyway, all those factors and probably a few more I wasn’t privy to led to the decision to use Railo as the CFML engine for the site.

Our experience developing with Railo was very positive. We built the site using Mach-II, Transfer, ColdSpring using a PostgreSQL database backend. We had one little issue with Mach-II when we plugged in the Mach-II Dashboard module into our main config. Peter Farrell and I traced it down and found that it was due to a difference in how Railo parsed XML vs how Adobe ColdFusion did. I worked with the folks at Railo and they got the problem sorted out in one of the next releases.

The site went live the first of August, 2009. Between January 1 and August 1 of 2010, the site experienced a 562% increase in revenue generated when compared to the same time period of 2009 (the YTD time frame leading up to the new site going live). They’ve also seen a dramatic increase in the amount of traffic to the site since the new version went live (although I don’t have exact percentages at my fingertips to share). Just as importantly, in the months sice the new site went live, they have been able to add dozens of new features to the site–both publicly-available features as well as features for administrators and sales people that just would have been too difficult to try to weave into the previous java struts based application.

Finally, while this “success story” has Railo as one of its key components, the bigger issue in my mind is the fact that a formerly java-centric shop has converted to using CFML successfully to run their business and provide a better experience for their customers and employees.

Disclaimer: I’m not on either side of the Railo/OpenBD/Adobe CF argument. I’ve not had a client since that project that’s given me the option to use Railo so all of my work since then has been in Adobe CF but I certainly wouldn’t dismiss Railo straight away if there were an option to use it on a future project. The intent behind this blog post is simply to provide one real-world example of Railo being an entry point into CFML development, not to take either side of the Twitter discussions that have been going on today.

Sounds like an open source success story from all levels. We're glad that Mach-II helped in ways it can. Way to go Dan!

Help us! Submit Topics on Mach-II for cf.Objective() 2011

Conference season is approaching and Team Mach-II needs your help if you want to see Mach-II presented at cf.Objective() 2011.  This year cf.Objective() is asking for input from the community on what you all would like to see at the next event.  So get engaged and submit or vote on a Mach-II topic now.

There is only one Mach-II topic (as of time this blog post), but feel free to add more.  It doesn't have to be directly on using Mach-II.  Maybe you have an application you built and want to show off the architecture in which Mach-II is part of your stack.

Engage - cf.Objective() 2011

Voting or submitting topic suggestions is easy as pie; all you need is a Facebook or Twitter login.  No messy forms to fill out!

When you are done, feel free to list your topic suggestion here. The cf.Objective() version of Engage does not show the submitter or votes.  We'd like to know.  Take the time to vote or sumit a topic now before it's too late!

Introducing New Team Mach-II Member: Brian Klaas

Team Mach-II proudly welcomes Brian Klaas to the team.  For those of your around for while, you've probably seen Brian play devil's advocate a few times with the team over the years on the Mach-II Google Group.  We're happy to see Brian on the team as each new member brings us new perspectives and talents to the table.  On a personal note, Brian works at the Johns Hopkins University (my alma mater).  I did not get the chance to meet Brian while I was at school, however I am proud that one of the wings of the university is actively using Mach-II.  You have quite a proud alumnus here.

Here is a brief interview with Brian as we hope it helps you get to know him a little better.  Welcome to the team Brian! We're lucky to have you!



Tell us a little about who you are and what makes you tick...

I'm in charge of eLearning technologies at the Johns Hopkins Bloomberg School of Public Health. I lead a group of 6 excellent employees who design, build, and deploy custom applications for online learning and training here at the School. We serve a global audience of about 7,000 people and the School was recently ranked as having the #1 online program in Public Health.

While my primary role is that of architect and strategy lead, I also write a whole lot of CF code when I'm not collaborating with our customers about upgrades to existing applications and the development of new applications. I love that I get to mix customer research, UI experimentation, and code development in my day-to-day job. I also do quite a bit of face-to-face training with faculty and staff here at the School, and teach an "Introduction to Online Learning" course (offered only online, of course) that's taken by about 2,500 people every year.

I'm a terribly lazy if super-detail-oriented person when it comes to writing code. I like everything to look just so while letting a framework do a lot of the complex, heavy work for me. That's part of the reason why I really like Mach-II.

What was the first thing you ever did with a computer that made you proud of your accomplishment?

I built a small Pac Man-style game in BASIC for my Atari 400 that eventually got published in a small, now-defunct magazine. I don't have a copy of the magazine nor the code any more, but at the time I thought it was pretty cool that I was a published computer programmer at age 14. (So, yes, I just totally dated myself.)

What got you started using Mach-II?

When CF added support for CFCs in version 6, I had reached a point in my career where I felt like I knew a whole lot about developing using CF and procedural development styles. I had written some Java applets and a couple Java-based socket servers in the years prior to that, and wanted to make the leap, full time, to object-based Web application development. While I knew that CF MX wasn't purely object-oriented, it was object-based and that was reason enough for me to get started. Around that same time, Sean Corfield wrote pretty extensively about this new framework for building Web applications with CF called Mach-II. I figured that if that smarty thought Mach-II was good enough for both him and Macromedia, it was worth my time.

My first Mach-II application wound up being this huge training application with over 2000 lines in the main Mach-II XML configuration file. So much for learning via a small test application! I cringe every time I look at how that app is architected, but it was an indelible learning experience. Now I won't develop a CF Web application without Mach-II.

Mach-II has matured a lot since its inception. What are your favorite Mach-II features as of today?

Modules top my list. My team recently released a project with 22 modules, and the flexibility that the Mach-II module architecture brings to the table allowed us to develop these modules in tandem, mock out what we needed until implementation, then swap out implementations simply and easily. Module inheritance when dealing with things like ColdSpring-managed beans is simple and elegant, and configuration inheritance and module-level changes are a snap.

I'm also a big fan of the call-method command introduced in Mach-II 1.8. I wrote a blog post declaring my love for the call-method command.

Everybody brings unique ideas and skills to the table. What one thing you feel you bring to Team Mach-II?

I have a hard time keeping my mouth shut, so I feel that I bring a need to talk about the framework, document the framework, and help the super-smart folks actually writing the code come up with requirements that really meet the needs of the developers (current and potential) who use Mach-II.

It's an impossibility to spend 100% in front of a keyboard. What do you do for fun?

Half my fun comes from being in front of the keyboard, just not doing work. I've played World of Warcraft for five years now, and have been the leader of a great little guild for two of those years. I've learned a lot about design from the geniuses at Blizzard, and the game is hella fun to play.

During the spring and summer, when I can actually be outside and not suffer frostbite, I spend quite a bit of time in the garden. My partner has transformed our bland backyard in to something of a paradise, with a couple of ponds, multiple waterfalls, and tons of beautiful foliage. It's a lot of work to maintain, but the dirt feels great in my hands.

If you were not a programmer, what would you want to do with your life?

I'd go back to directing theater. I ran a theater company here in Baltimore for 11 years, and while it was a transformative experience, when it all ended, I was very happy to get my life back. I do miss the process, though, and the people. The creative process in theater is incredible, with so many people contributing to this dynamic thing called the performance, and I do miss taking that journey on a regular basis. I've always said that if I were to win the lottery, I'd start another theater company after I got back from my summer in Provence.

Introducing New Team Mach-II Member: Jorge Loyo

It's exciting times at the Mach-II Project.  Just after our 7th birthday, we are proud to announce that Jorge Loyo has joined Team Mach-II.  Welcome aboard Jorge! Below is Jorge's bio:

Jorge_loyo

Jorge Loyo - Developer & Resident Mexican (everyone needs one)

Jorge Loyo was raised in the small town of Tuxtepec, Oaxaca, Mexico until the age of 14 when he left Mexico (legally, in case you were wondering) leaving family and friends behind to study at Valley Forge Military Academy & College in Wayne, PA. It was there that he completed his High school and Associate degree in business. He then ran away from the cold and moved to Florida where he attained his Bachelor degree in International Business, Finance and Management Information Systems from Florida International University as well as a Master of Science in MIS from the same institution.

Jorge worked for the University for several years developing various internal systems, some of which in his last year (2005) where written using Mach-II. Since 2006 Jorge has been working with an online retailer helping redesign and rewrite all their databases and online applications.  Also, he has been continuously assisting a Hispanic publishing group with their web infrastructure. Finally, in 2007 Jorge started his own Financial education business trying to help families become properly protected, debt-free and financially independent.



We always like to have a quick interview with new team members so the Mach-II community can get to know them and I've been surprised a few times.  The team even now has a resident skydiver! Here is our interview:

Tell us a little about who you are and what makes you tick...

Well, I like all types of music and really enjoy meeting new people. I love a good wine and spending time with family and friends, the more the better...
What I do not like and try to stay as far away as possible from is negative people that all they do is find something to bitch and complaint about. People that believe some circumstance other than their own actions is not allowing them to succeed at something. People who believe that others are just lucky.

What was the first thing you ever did with a computer that made you proud of your accomplishment?

My first event computer programming class (VB6) I created a small timesheet program to calculate the hours I was working at that time for the computer lab at the university... I felt soooo proud of what I did :-). I showed that little program to some guy who turned out to be looking for a developer and hired me as a programmer for the university...Nice.

What got you started using Mach-II?

At the university there was a team of 4 developer with no prior experience, including myself, in programming so EVERYBODY was developing whichever way they thought was best... Maintaining the systems over the years became a nightmare and I wanted to put a stop to the madness by implementing ANYTHING to help us... I did a little research with another co-worker and found MachII. I haven't looked back since.

Mach-II has matured a lot since its inception. What are your favorite Mach-II features as of today?

Wow, tough one since I like and rely on many features, but time savers/code minimizers have been call-method, view-loaders, subroutines, auto-injection and message-susbscribers. However, currently I am in love with the custom tags let's keep them coming, they are AWESOME. Also, I cannot wait to use the EndPoints.

Everybody brings unique ideas and skills to the table. What one thing you feel you bring to Team Mach-II?

I don't know if there is one unique skill or idea in particular because as all other teammates must do all the time, I like to think of what else could MachII do, what else could make my life easier... I like to think of all possible features that could be included.

One thing I can say, once something is in my head I will not sleep until I have it done. I will ask for help if I need it and won't pretend I can take on the world alone. I don't like to let teammates down and I will do everything possible to contribute to the framework.

It's an impossibility to spend 100% in front of a keyboard. What do you do for fun?

Believe it or not, I am either at my job, at home, training new teammates for my business or meeting with clients.
I am a licensed skydiver and love martial arts, but I haven't practiced in some time, I've resorted to simply running, swimming and boxing whenever I can squeeze in a few minutes in my day.
 
If you were not a programmer, what would you want to do with your life?

If I wasn't a programmer and didn't have my business, which I love. I would be a professional skydiver... I would compete in team jumps and travel to world to do base jumps from everywhere I could.

Mach-II BoF at CFUnited - Thursday July 29 - 6:30-7:30 in Conant

Just a quick reminder that there is Birds of a Feather session for Mach-II at CFUnited this year.  This BoF is hosting by our very own Kurt Wiersma.

When: Thursday, July 29th from 6:30 - 7:30

Where: CFUnited - Conant

Whether or not you are a user of Mach II consider attending this discussion about Mach II and building object orientated applications. We will chat about the news on the latest features in 1.8 and 1.9 releases, how to get started learning the framework and OO programming, and where Mach II is headed in the future. We will also share tips, tricks and resources for using Mach II to build powerful CF applications. We would love to hear how you have used the framework to build cool applications. We value the community's feedback about Mach II and look forward to seeing you there.

We've recently committed some great features into Mach-II Integrity (1.9) such as metadata based REST support where you code in CFML not XML!  Thanks to Doug Smith and the guys at Dave Ramsey for working with us to create a killer new feature for Mach-II.  If you looking to do REST based services in the future, this BoF is not to miss!

My favourite application framework in the ColdFusion world: Mach-II (via Nukleos)

Mach-II is my favourite application framework in the ColdFusion world, and yesterday Mach-II version 1.8 was released. At work I have been developing my own additions to a much older version of Mach-II, to facilitate the development of our own intranet apps. I guess I’ll have a lot of catching up to do with all the new stuff that has been added in versions 1.6 and 1.8. Aaah, if only the days were longer (but then we would be working longer too, of course ;-)…

Thanks for the kind words from Wouter about Mach-II being his "favourite" framework in CFML. Team Mach-II was excited to learn that Mach-II is being used at Dexia for development of intranet applications. Dexia is a large financial institution (6 billion euros in revenue) based in Belgium.

Yearly Retrospective with Ways to Get Involved! Be a Community Steward.

The past year has been a busy year for the project.  We thought it might be important to highlight a few big milestones for us:

  • Team Mach-II has added three new members (Adrian, Brian and Mike)
  • We released Mach-II Simplicity (1.8) and started work on Mach-II Integrity (1.9) all while keeping Mach-II 1.8.1 (maintenance release) in the wings getting ready to go.
  • We migrated to a new account at Codesion with custom domains for Trac and SVN.  This means all of our URLs changed so check that out.
  • We moved our blog here to Posterous so more of the team can post and in the future we will be accepting posts from the community via moderation (future post to come).
  • Fellow team member Brian FitzGerald started an awesome MachStart screencasts series available on Vimeo.

We wanted to get more of the Mach-II community involved and there are ways you can help the project.

  • If you are a serious Mach-II user and you want to help steer future enhancements and features, then you need to join the Mach-II Framework Development Google Group. This is a different list from our normal Mach-II Users Google Group.  The framework development list is low traffic so don't worry about receiving a ton of messages.  It's a great way to see some of the stuff we talk about "behind the scenes."
  • Be a guest contributor to the Mach-II Blog.  This is one of the reasons why we decided to move to Posterous for our blog because it offers guest posting via moderation.  We have not set up our guidelines for contributing, but we'll do that soon and blog on how you can be the next new MachStar on this blog.  Start thinking about what interests you with Mach-II.  This can be quickstarts, tips, tricks or even full tutorials.  No contribution to the blog is too small.  If you have questions, feel free to ping us at (team {at} mach-ii.com) with query and we'll respond ASAP.
  • Test out our nightly builds for the framework and the dashboard.  They are not so nightly but they are updated when new features are put into the framework.  You can see the latest nightlies at http://www.mach-ii.com/nightly/

That's our short list of ideas for you to become a good community steward of the project.  Like Smokey Bear says "Only YOU can foster Mach-II development!" or if you don't help -- who will?

Nice Mach-II Kudos from Team DaveRamsey.com

We have been a Mach-II shop for several years, but we recently rebuilt our primary web site, daveramsey.com, into a 50 module Mach-II 1.8 application. We’ve found Mach-II to be an extremely powerful Model-View-Controller framework that enables us to support our growing number of users. It provides a foundation we can build on that has helped us to roll out new features quickly, without compromising a strong MVC design. (I also had the honor of meeting team Mach-II at BFusion, and found Peter, Kurt, and Matt to be an outstanding group of committed, brilliant developers. We reviewed their work on Mach-II 1.8 while we were developing our new website, and found their code to be among the best ColdFusion code around. They set the bar for outstanding quality and community support.)

Can't thank the fine folks at DaveRamsey.com enough for the kind words about Mach-II. We really enjoy working with those guys and they give us amazing feedback and suggestions, so it truly is a collaborative relationship. Working with our amazing users is the #1 thing that makes Mach-II better!