I started the spec on July 17th and "finished" it on July 20th. The spec was titled "New Lightweight Framework". Here's what it said:
Goal: Create an extremely lightweight convention over configuration framework.That's it.Considerations:
Caveats:
- Leverage Application.cfc and lifecycle
- Automatically call controller, model, view if appropriate
- Autowire from bean factory?
- Application.cfc extends org.corfield.X
- Programmatically set everything, no XML
- variables.framework struct to specify everything
- variables.framework.action is URL / form variable for the, er, action, defaults to 'action'
- variables.framework.home is home action, defaults to main.default
- fold URL / form into request.context
- ?action=section.item maps to controllers/section.cfc:item() then models/section.cfc:item() then views/section/item.cfm
- implicit layouts based on actions
- Should controller / model be instantiated every request or cached?
- How should cache be refreshed?
I wrote the first version of FW/1 on July 19th. You can see the original 381 line framework.cfc on RIAForge.
If you click 'Return to SVN History', you'll see the entire history of framework.cfc - with the majority of changes since early November being Ryan Cogswell's awesome contributions. One of the reasons I love version control (and why I was so pleased to see Ray add source / history browsing to RIAForge!).
So there you go: an insight into my design process!
There were about 80 people there - great to see so many folks interested in FW/1!
The next FW/1 preso will be at BACFUG on February 17th.
In addition to lots of great usability improvements, I'm very pleased to see that they've switched the Mura admin from Fusebox to FW/1:
NEW Admin Framework - We're switching to Sean Corfield’s FW/1 (away from FuseBox) to improve performanceYou can read more about Mura 5.2 on their blog!
This year's cf.Objective() is offering SIX pre-conference classes! You can choose from Building Secure CFML Applications, ColdBox: 100 Training, Developing Applications with ColdFusion 9 ORM, Getting Started with Flex / AIR Development, Mach-II / OOP from the Ground Up, Rapid Development with Model-Glue 3! Wow!
Some of these are one-day courses (Wednesday April 21st) and some are two-day courses (Tuesday April 20th and Wednesday April 21st).
If you're not familiar with the format, a Birds of a Feather session is intended to be interactive and a chance for like-minded people to discuss particular topics. Each session is lead by a conference attendee and there's often a short, informal presentation at the beginning to frame the discussions and then it opens up for everyone to share ideas and experiences as well as ask questions and learn more about the topic.
So far we've had (in no particular order):
- Bob Silverberg - Pecha Kucha: this is an interesting session format (not exactly a BOF) where each presenter gets about seven minutes to present with a slideshow of 20 images, each shown for 20 seconds. The presentations can be about anything (but we'd like them to be of interest to the sort of folks who attend cf.Objective()!). It's an interesting and creative format. Read more about What Is Pecha Kucha? and also Bob's original blog post about a Pecha Kucha at cf.Objective() where several people have shown interest in presenting.
- Matt Woodward - Open BlueDragon: this would cover topics such as writing plugins for OpenBD and any other related topics that folks want.
- Jason Dean - Security: last year's security BOF was well-attended so Jason wants to do another one this year.
- Sean Shroeder - Extending Mura: Mura is becoming increasing popular as a rich, powerful CMS these days and whilst he's doing a session on building websites with Mura (on Saturday afternoon), he wants to talk with folks about extending Mura, writing plugins, using frameworks with Mura and so on. I've built a few sites with Mura and leveraged the rich event model as well as incorporating Model-Glue and Fusebox apps so I think this would be a great chance for folks to learn what's possible and share their experiences!
- Wil Genovese - Home Brewed ColdFusion Monitoring: Wil presented this on the CF Meetup back in December (and it was well-received) so this would be a chance for other folks to share their tips, trick and tools and make a nice, rounded educational session about monitoring your servers.
- Peter Bell / Sean Corfield - Being Agile: there is increasing interest in so-called "agile" methodologies within the CF community (although many of the concepts have been around for a long time) and Peter is giving two talks on Thursday about various agile-related techniques so this BOF would allow for more feedback and questions and hearing from others about the pros and cons in their experience. Read the Twelve Principles of Agile Software and the Manifesto for Agile Software Development to get a sense of how "agile" is intended to be different (and better, according to Peter and Sean!).
- Guitar Hero - or perhaps some equally raucous social competition? The leader of such a BOF would be responsible for organizing the gaming equipment but, given the suggestion, we figured it might be fun to turn one of the BOF slots over to something more fun and less technical... thoughts?
Bob's Pecha Kucha will definitely happen. It's a new, interesting idea for the CF community so that leaves seven slots to fill. Suggest new topics in comment here and vote on any of the topics suggested (either in the post or in comments). I'll post an updated list once we have some feedback.
So I want to reassure everyone that I have an agreement with DevWebPro that they can republish any of my blog posts that they find interesting - they only publish a fraction of what I write. Here's my author archive with selected blog post re-prints. As you'll notice (I hope) the "comments" link at the bottom of each post on their site links directly to my blog so any comments are always on my blog, not their site (yes, I know they have their own comments tab too).
They choose which blog entries to syndicate, they choose the categories, they choose the title, I get links back to my site on every entry.
ColdFusion has always been about simplicity and "getting stuff done". I created Framework One (FW/1) in that same spirit: with just one file and some simple conventions, you won't even notice you're using it! If the learning curve, code bloat and XML have put you off other frameworks, find out why developers are saying "FW/1 is perfect" and how you can use it to just focus on your code, be productive and stop worrying about "the framework".
I wanted a way to look at the structure of the ant file before I did open-heart surgery on it. Google led me to ant2dot and GraphViz (with a very nice version for Mac OS X and the iPhone).
It's a very neat way to quickly get a handle on the dependencies in your ant file and it's certainly helped me figure out how to reorganize things.
My only complaint would be that it doesn't understand the ant-contrib foreach task which has a target attribute and therefore creates a dependency so such children appear as orphans.
I figured I'd blog this in case anyone else finds it useful!
Now that Adobe's talks are finalized, we'll be picking two more community submissions from our list and adding those. If you submitted a talk and wondered why you haven't received either an acceptance letter or a rejection, now you know. We hope to let everyone know within the next week!
We're also ready to accept BOF suggestions - I'll make a separate blog post about that in the next few days.
Help tell the CFUnited team about the "state of the union" in the CF world and a random submission will win a $999-value ticket to attend the conference at the wonderful Lansdowne resort at the end of July!
Read their blog post for more details and the link to the survey.
Another incentive for completing the survey is seeing the results! As I write this, about 60 people have completed the survey and the results so far already make interesting reading...
ColdBox provides a number of ways to handle different types of errors. I'll cover the following options:
- onMissingAction
- onInvalidEvent
- ExceptionHandler
- onException
- MissingTemplateHandler



