MVC + IoC + ORM = Amazing learning experience and a lot of fun

The next few posts in my security series will be delayed. I have been busy with some other projects, as you are about to read. I hope to have them out by the end of this week, or early next week.

So my journey into the world of Object-Oriented Programming has begun, and I am really excited about it. It is definitely a different way of thinking about programming. So far there are things that I like, things that I really like, and things that will take getting used to. There has not been a single thing that has made me say that I dislike OO (so far).

This all started at cf.Objective() when I took the pre-conference Mach-II training led by Matt, Peter and Kurt. It was an outstanding training that really did a great job of introducing us to OO concepts and to the Mach-II framework. I would recommend the training to anyone.

Well, of course, after the training, I did not have a chance to get heavily into what we had learned because I was supporting some old legacy apps. Then I had two opportunities to start new apps, one personal and one for work. The one for work I started building with ColdBox, and the personal project I started building with Mach-II. It did not take long to realize that this was a mistake. Trying to learn to frameworks at the same time was too much.

So after discussing it with my co-worker, we decided to start with ColdBox in our framework evaluation. The primary reason we started with ColdBox was because of the documentation. The docs for ColdBox are AMAZING. So I printed out about 150 pages from the ColdBox web site and started reading. I am not the type to just jump right in, so I read as much as I could on it, I looked at the sample apps, I compared them with the Mach-II sample apps, and then finally, about 2 weeks ago, I felt ready to begin building an Application with ColdBox.

I thought that to really appreciate what frameworks do, I needed to work without them first. So I started my application without a framework at all. I simply started creating my model. Hand-coding getters and setters got old pretty quickly, so I started using the code-gen tools in the ColdFusion Extensions for Eclipse, that helped a little, but the code-gen was not great. The when it came time to start interfacing with my model, I realized how difficult it was to do without an MVC framework. I struggled for a couple of days and then decided to convert the app to ColdBox.

The conversion to ColdBox went pretty well, I was able to get the very basics of the application up and running within a couple of hours (it was my first time, so quick smirking). Then I started to add to my model and I had one section that required object composition, and, of course, I was having difficulties managing the dependencies. Enter ColdSpring.

I was originally going to try to code the whole app without ColdSpring so that I could feel "the pain" of working without it. Well, I didn't need to finish the app to feel "the pain" nor to appreciate what ColdSpring does. So I worked that into my application as well. The docs from the ColdBox site really helped with that process.

Then the new version of Eclipse was released late last week. As I said, I had been using the ColdFusion Extensions for Eclipse to code gen my model. Well, I downloaded the new Eclipse, and, of course, the extensions didn't work. So crap! Now what? I did not want to go back to hand coding all of that. So I decided it was time to look at Transfer. Using the Transfer site, the sample Transfer Apps that come with ColdBox and some other interweb resources, I was able to get Transfer integrated into my app relatively painlessly. I had a few stumbling blocks with Transer, but I was able to work through them with help from the mailing list, the Tranfer docs, Russ Johnson's blog, and the ColdBox API docs.

Now this weekend I have been working on my application and having a great time with it. It's been coming along nicely, yet slowly, as I learn and rework things. It has really been an awesome learning experience. I am amazed by the frameworks and the OO methodologies.

My hat is off to all of the framework developers (Not just those that I have mentioned). What you do is AMAZING. And the fact that you make these things freely available to the rest of us is also amazing. I don't think there is any going back to Procedural coding for me.

Comments
Chris's Gravatar I am just getting into Coldbox and I really like it. One thing I would like to see are some sample application tutorials. I learn much better when I see this is how you do it. However, I do have to say the docs for Coldbox are incredible. I do need to look at transfer also. Slowly getting into Coldspring. So many great tools, so little time! :)
# Posted By Chris | 6/30/08 6:19 AM
Ben Nadel's Gravatar @Jason,

Yeah, after cf.Objective() and CFUNITED, I have been inspired to really get a move on in the OOP world. I am working on the design for an OOP demo project. I am gonna try and roll without any frameworks to, as you say, really get a feel for what is going on in OOP.
# Posted By Ben Nadel | 6/30/08 7:06 AM
Jason Dean's Gravatar @Chris - ColdBox is amazing. I am REALLY enjoying using it. The sample applications that are included are good, but I know what you are saying. Actually seeing an app built from start to finish, even if it is a simple one, would be a great tutorial!

@Ben - Good luck on the project. Like I said, going it without a framework was tough. But it was worth it to at least try. I hear many of the "big names" (that are into framework) say how much better development is than without frameworks. And I really felt like that was something I needed to experience, even if only a little.

If either of you need any advice (n00b to n00b) feel free to message me. I am sure we will be facing some of the same hurdles.

Thanks for the comments!
# Posted By Jason Dean | 6/30/08 7:30 AM
Luis Majano's Gravatar Great stuff Jason!!
I am glad it is working out for you. And you are right about more samples. So hopefully we will have more in depth applications in the release so we can all learn from samples. CodexWiki will be released soon and it is built on coldbox+coldspring+transfer, so that should also bring insight into some high level oo design. Any suggestions, please let me know.
# Posted By Luis Majano | 6/30/08 5:39 PM
Jason Dean's Gravatar @Luis, thanks for the comment. I am REALLY enjoying ColdBox. I will be very interested to see how CodexWiki is built, although I suspect I will get lost in it very quickly.

I will look forward to other samples as well. I know it is hard to build sample apps that are somewhere in between basic and advanced, but I think that is what we really need. I know I was looking for something that demonstrated using object composition, but without all of the extras, like resource bundle and other high level stuff. Also, I was looking for an App that used a service layer int he model.

Thanks for all you do Luis!
# Posted By Jason Dean | 7/1/08 7:38 AM
MAQ.'s Gravatar ColdBox rules, I salute Luis and his team for such an excellent job for the community. No comparison of CB docs, tools and utilities
# Posted By MAQ. | 8/19/08 5:59 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.9.1. Contact Blog Owner