October 6, 2020
Framework Training – Part 1 – Learning How to develop using the ColdBox Framework
Comments
(9)
October 6, 2020
Framework Training – Part 1 – Learning How to develop using the ColdBox Framework
Wizard 39 posts
Followers: 21 people
(9)

This is intended to be a three part series on my experience with ColdBox training from Ortus Solutions.

  • The first part of this series will be my history and thoughts on frameworks in general.
  • The second part will be my experience in attending Ortus Solutions “ColdBox, Zero to Hero” training as instructed by Gavin Pickin.
  • The third part of the series will be written after the training itself as a follow up to changes in my impressions of ColdBox and frameworks in general.

My thoughts on Frameworks

I think it helps to understand where I’m coming from when I speak about development frameworks. Conceptually, I appreciate the idea of a framework; create a common set of standards and ways to build an application that make development easier and allow other developers working on it who understand the same framework to pick it up quickly.  That makes sense.  I recognize that a framework comes with a set of rules which, when followed, can streamline development further than ColdFusion already does.

In practice though, I have traditionally found a framework to be cumbersome.  Forcing a user to develop an application in a certain way takes away some of the liberties that a developer may need to have available to them in order to make things work.  There are sometimes layers and layers of obfuscation in the code and finding where the magic happens can seem like a chore.  I’ve spent literally hours in discovery on a project simply trying to figure out how it’s working based on the abstraction that the framework imposes.  On top of that, most of the applications I used to build in the early days were more along the lines of “adding functionality to a website” rather than developing an application.  You don’t need a full-blown framework to build an action page for a form that <cfmail>’s the form to the business.

That being said, I have borrowed concepts from various frameworks throughout the years and, when building an application myself, tend to use my homegrown development methodologies instead of a framework.  I know full well there are pros and cons to this approach.  In an effort to grow, I recently signed up for Ortus Solutions “ColdBox, Zero to Hero” training.  Clearly my homegrown framework is fine if I’m the only developer working on a project, but more and more often, I’m not the only developer.  And I don’t want another developer to have to scratch their head wondering why I built things the way I built them.  I’m going to give frameworks a college try and see if my impressions on them change.

Back in the Day…

I’ve been developing ColdFusion based applications since 1999 and I’ve come across applications built in almost every single ColdFusion framework since then.  In the early 2000’s, the first widely popular framework for ColdFusion Development I used was Fusebox.  Fusebox (1) was a nice, simple framework and had some interesting concepts built into it, like appending the form and URL variables into the request scope so that variables passed to a page could be found regardless of whether they were posted or as part of the query string.  Great idea at the time… and one of the concepts I copied into my own homegrown methodology of building applications.  Later versions of Fusebox became more and more complicated and cumbersome.

Then came some others, like Mach II and Model/Glue.  These seemed overblown in comparison and very, very complex.  I used to describe them as “sandblasting a soup cracker” when it comes to (over) building applications.  The earlier versions of Coldbox came along, as well as CF Wheels and Framework One (FW/1) which all took similar, but unique approaches to applying a framework to an application.  They all had strengths and weaknesses and, in my estimation, none stood head and shoulders above the others.  Frameworks still seemed to be cumbersome ways to add convention to application development.  Sometimes a little process is necessary depending on the size of the application, but more often than not, it seemed like overkill.

What’s Out There Now

Recently, I’ve come across three primary frameworks that are still active.  By active, I mean that there are applications currently being developed using these frameworks.  In order of popularity these are ColdBox, FW/1, and CF Wheels.  (And frankly, CF Wheels applications are coming further and further apart.)  I’m choosing ColdBox as my framework of choice to really take a run at framework based development.

I’ve gone to CF Summit in Las Vegas since it’s inception and I’ve attended several of Luis Majano’s presentations on ColdBox and other aspects of development.

I love and hate Luis.  He’s brilliant.  And he makes me feel stupid.  He explains things so well.  And he loses me every single time.  He’s like a greyhound.  Sure, you can run and you might keep pace with him for a few seconds, but when that dog wants to run, he’s going to leave you with a vapor trail.  In fact here’s my lifecycle of every seminar I’ve attended that has been presented by Luis Majano:

  • In the beginning I’m following along.  I understand and have experience with the things he’s talking about.
  • Now he’s jumping ahead a little… he’s talking about some things I’m not very familiar with, so I’m trying to catch up and process what he’s saying.
  • Okay… now he’s very far out ahead of me, and assuming that what he’s talking about are things that everyone knows inside and out.
  • I’m lost.  I’m still trying to process something he said 10 minutes ago and I have no clue how he got from that point to where he is now.
  • I give up.  I’m just going to listen to him speak instead of trying to absorb what he’s saying.

Every.

Single.

Time.

And when I say this, I mean absolutely no offense to Luis!  He is a good man and a brilliant developer.  I think that when a person gets that close to the underpinnings of how a framework operates that it becomes difficult to talk to a layman without overpowering them with your technical prowess.

Now fortunately for me, this course is being presented by Gavin Pickin, so I feel like I have hope not to be blown away with the speed that the information is going to be presented.  On top of that, this course takes place over two days, so the level of detail I am expecting is much greater than what a one-hour presentation at a conference could ever provide.  I’m going to be very disappointed if I spent nine hundred bucks on training and I’m the slowest one in the class.  Maybe I’m just stupid.  We’ll see.

So there’s your preamble.  I’ve documented how I feel about frameworks in order to see how things go and if my perceptions change.

Wish me luck… I’m going to go from ColdBox Zero to Hero!

9 Comments
2020-10-14 13:12:09
2020-10-14 13:12:09

Great post David!  My first framework was also Fusebox and I made it all the way to the very last version (5.5) where “allowImplicitFusebox” was introduced and we were finally able to drop the big XML files that controlled everything.  That was the “convention over configuration” change that was so desperately needed.  It was a shame it arrived too late and the project was soon overtaken with newer and cooler frameworks alternatives.

Today, we use CFWheels for all new developments and we also support clients with existing frameworks like FW/1 or ColdBox apps.  At this point, I feel I’ve seen just about all the CF MVC frameworks (although I confess to never have used Mach II or Model/Glue!) and more than my fair share of in-house attempts.  I find community supported MVC frameworks just make work easier. On the business side, bringing in new people is so much faster because everything it just easier to find.

I’m also on the CFWheels core team and while we certainly don’t publish changes as often as Ortus does, our community is quite strong and the framework is very stable.  You don’t hear about us a lot because CFWheels is most often found on the back-end powering APIs.  We’ve had our own ORM forever as well as a built-in test suite and our 2.0 release focused on integrating ColdRoute (which was our most downloaded REST plugin), database migrations and creating a slew of dev tools that power up every time you start the app in development mode.  It’s super easy to learn as we’ve stuck with the original Ruby on Rails inspiration which always favored convention over configuration.

So don’t count out a project just because the community doesn’t post often!

Like
(1)
2020-10-12 16:26:41
2020-10-12 16:26:41

For those who have not noticed it, David did post his part 2 a couple of days later. (I just found both today, myself.) And I see he did in fact link to it at the top of this post, but in case like me you may miss that, perhaps you will notice this comment after reading the post.

Like
2020-10-12 16:02:16
2020-10-12 16:02:16

Thanks, David. I’m sure you’re representing a significant portion of the CF community, at least those who have not yet adopted a framework, with respect to your goal here. It will be VERY interesting to see how your opinion evolves as you progress. Good on you for “opening the kimono” to show that process.

As for your  “love and hate” comment, maybe you could soften that, though? Who could hate Luis, honestly? 🙂 Maybe you meant “love and lament”, or “love and leave”, or “love and lose” (which while not as pithy, suits what you go on to say). 🙂 You’re not really angry in getting lost, just bemused, right?

OK, maybe you move to “frustrated” in having sat through an hour-long talk to get lost. I can relate to that. And yep, it will matter all the more when money and 2 days of training effort are on the line. (I looked around on the Ortus site for a few minutes for a satisfaction guarantee for training, or a right to withdraw before completion, but I did not find one. Perhaps someone will speak up to clarify if there is one.)

Anyway, again, looking forward to hearing more about your experience, with the class and with the possible transition to really using CB in your work. Of course, whenever developers change anything significant (like switching editors or using version control or testing or containers), there’s just a high amount of friction in getting started–like the effort of a rocket lifting off. The joy is when you can get into orbit, assuming the mission is not aborted before that.

Like
(1)
(6)
>
Charlie Arehart
's comment
2020-10-12 16:10:14
2020-10-12 16:10:14
>
Charlie Arehart
's comment

“Hate” of course is a powerful word, and I did try to soften it by saying “I mean absolutely no offense to Luis!  He is a good man and a brilliant developer.”  But yes, I get angry; mostly at myself, for not being able to keep up.  When I’m at a conference or in a class, my goal is to open my mind and learn as much as I can.  When I realize I’m in a mental drag race against a Ferrari and I’m in a VW Beetle, I get super-frustrated at the idea that either:

  1. I’m not smart enough to keep up.
  2. The content is not designed to allow me to keep up.

I have a lot of confidence in my skills, experience and abilities, so it’s difficult not to believe I was set up for failure.

To be clear; the training was worth the cost.  The frustration lies when I’m attending conventions and two days of content are forced into an hour-long presentation.

Like
>
David Byers
's comment
2020-10-12 16:21:46
2020-10-12 16:21:46
>
David Byers
's comment

“Your blog post, your rules”, as some say. I hear you that some content isn’t suited to an hour–or that the prereq’s should be made more clear so one knows what they’re getting into. All that can be challenging to do well, and any of us speakers could fall down on them at a point.

Like
>
Charlie Arehart
's comment
2020-10-12 16:32:53
2020-10-12 16:32:53
>
Charlie Arehart
's comment

Don’t get me started on your presentations!  LOL. (I’m kidding, I’m kidding!)

Like
>
David Byers
's comment
2020-10-12 17:53:46
2020-10-12 17:53:46
>
David Byers
's comment

Well, I realize you may well really be “kidding”, just having fun, but if you really did mean it at all, I am always open to feedback.

Sadly, we presenters often get very little feedback. Or what we hear may only be from those that are happy, while people with criticism are reluctant to share it. I always suspect that when all I get is good feedback in a talk. I just KNOW I had to rub somebody the wrong way or lose them (the same way you’re describing here)! And same for blog posts, mostly. But of course, this is getting off-topic, with respect to your learning CB.

Looking forward to your part 3, which I realize may be weeks or months away.

Like
>
Charlie Arehart
's comment
2020-10-12 18:02:25
2020-10-12 18:02:25
>
Charlie Arehart
's comment

Sure.  Since I’m on a rampage, let’s do this.    I’ll send it to you via email so I don’t get a reputation of being hyper-critical of ColdFusion presentations.

Like
>
David Byers
's comment
2020-10-12 19:34:16
2020-10-12 19:34:16
>
David Byers
's comment

Just to close the loop, David did get back to me, and I’ve replied. I appreciated his feedback (that I have tended to be rushed in the last 15 mins in the last 3 sessions he’s seen, for having so much to say and not pacing it well). I accept that and apologize to everyone, and will try to do better.

Like
Add Comment