ColdFusion 9 Point Release

I've just updated the core framework for CF9 and uploaded a new zip. There's been minimal testing on CF9 yet. I fixed a couple of obvious problems (functions with names that match new native function names) and I ran the code analyzer in the CFIDE. Oh and I fixed the issue with the undocumented behavior change with OnRequestEnd I mentioned in the last blog. Of course, if you have any problems let me know and/or submit them to the bugbase.


Seeking a New Home for the onTap framework website

Hi guys.

A while ago, Brian Meloche turned me on to the folks at (now because they were helping out in the community with some free accounts for hosting open-source projects and they agreed to set me up a free account for the onTap framework. I then put the DataFaucet site on that same account... apparently something happened (I'm not real sure what) and the account was closed a few months ago. I suspect it was a clerical issue, because I never got a notification about it being closed (although I did get a bill that I was told by their support staff to ignore).

This is by no means a complaint about - I was actually very happy with them in general and would definitely recommend them in the future.

This does however change things for me a bit and I'd like to see if I can find a place to home those open-source project sites where I'd have a more one-on-one kind of relationship with whoever is hosting them. So if any of you have some extra space where I could set up these sites (and the AutLabs project site -- creating jobs for people with Autism and Asperger Syndrome), I'd be mighty grateful. :D

All three of them are low-traffic sites, so they shouldn't have much impact on your server.

Here are the RIAForge Projects for them:

And at some point I may also want to get domains and create official project sites for CacheBox and FreeAgent, but probably not right away.

Thanks! :D

Oooops!! Collaboration Chat II Recording

We've got some good news and some bad news.

The good news is that even on 24-hrs notice, we can easily get a dozen folks in one of these chat sessions to talk about improving collaboration within the CF community. Sean Corfield turned out, Henry Ho(?), KymK, Jason Dean, Oguz Demirkap, Dennis Clark, AJ Mercer and a few others. And there was a very enthusiastic discussion of collaboration and open-source.

The bad news is that we had some technical difficulties on this chat. Apparently just as I switched the Connect presentation to sharing mode to demo the early beta version of FreeAgent, it popped off the talk button. So although there's video of some screens of me showing the sample app and the code, for about 10 minutes, there's no audio to go with it, so that may not be very helpful. If anyone mentioned it while I was sharing I didn't see, because I still only have one monitor currently. And then I talked to everyone for an hour and nobody could hear me and I just never noticed that the talk button had popped off. Oooops! So because of that I think the conversation derailed starting about the time I started demoing the FreeAgent beta and although it was a very lively discussion, we didn't cover some of the specific topics I wanted to cover and some questions folks have about FreeAgent didn't get answered.

So on the balance of it all, I'll be holding another collaboration chat soon and keeping a closer eye on that talk button, so that I can correct the problems we ran into this time. :) It probably will be some time next week.

If you're interested in seeing the transcript of the discussion however, with commentary about how collaboration and open-source in the CF community differs from the PHP and Rails community, etc. (which actually is some interesting discussion), here's the recording of this just held session:

Thanks to everyone for coming and sharing your views. I actually did enjoy the discussion despite the technical problems, and I'm really glad to see everyone's enthusiasm for the subject of collaboration. :)

Mango Blog Plugin 1.0 beta Released

Okay! There's finally a working plugin for Mango Blog. :)

It did take a bit longer to get this done than I'd hoped, but I'm glad to have a first release available.

It's on the webservice for plugins, so if you've already downloaded a copy of the onTap framework, just go to your Plugin Manager, select the "more" tab and type "mango" into the search form. From there press the install button and it will walk you through the rest of the installation. This version uses the Members onTap user/security plugin to manage users, roles and permissions, instead of the Mango Blog user system. So if you haven't already installed Members onTap, it will walk you through that first (including the DataFaucet installation it needs).


CacheBox Presentation Recording

We had a great time with today's presentation of the new CacheBox framework!

We had an even dozen show up and a pleasant surprise at the end. There's a poll at the end of these presentations so the people who attended can anonymously rate the presentation. It asks "was this information useful?" and the options range from 1-star (it was a waste of time) to 5-stars (yes, very much). In this case 50%, an even half of the guys who came gave me 5 stars. So I feel really good about the presentation. :) There is certainly still room for improvement in my presentation skills, but I think this is great progress.

I've also used some of the feedback from this presentation and updated the intro to the documentation for the CacheBox project to clarify the benefits of using it.

Here's the presentation recording for anyone who missed it:

CacheBox Presentation

The latest version of the onTap framework includes integration of the new CacheBox project, the hot-swappable caching framework for ColdFusion. That's a great thing for DataFaucet because it means the framework cache is now much more configurable and you've got a handy management application that lets you look right into it, which wasn't there before.

Honestly the framework is still incomplete, but it is in a working state. We could use input into the management application, features (did we cover everything?), and in particular I'm really hoping to get some folks to provide some additional insight to help me finish writing the intelligence portion -- the methods that will allow CacheBox to auto-configure the cache based on usage patterns.

I hope you will all come join us for the discussion tomorrow at 6pm EST at the Online ColdFusion Meetup group.

Transfer ORM Plugin and ColdBox Importer Released

Building on the previous article where I announced the release of a Fusebox importer, I've now released a similar ColdBox importer that allows you to run ColdBox applications within the context of an onTap framework application as well as a Transfer ORM plugin that downloads, configures and installs Mark Mandel's ORM framework.

I think this is really starting to show how the onTap framework accomplishes one of my long-term goals of encouraging greater collaboration within the community.

In one way ColdBox turned out to be slightly less helpful than Fusebox in creating this integration, because there's no programmatic way for me to set the "AppMapping" setting in the Application.cfc, which means that the installer can't actually do everything for you, you have to set the AppMapping setting yourself in the ColdBox config xml. Bummer. Maybe a future version of ColdBox will allow that.

In another way, ColdBox turned out to be slightly more helpful in creating integration. In both cases the primary method of integration is by a combination of executing the events from the Application.cfc (onApplicationStart, onSessionStart, etc.) and by calling the framework methods that launch and execute an individual request for each page of the application and then scraping the result content for the content elements we want in our onTap framework application. Although this is a less than ideal solution, it is far superior to simply scraping an http request for several reasons, including the fact that all the application and session variables are shared within our new onTap framework application, it's more efficient than an additional http request, and the onTap framework structure allows us to seamlessly modify the CSS or JavaScript without touching the original Fusebox or ColdBox application. The little bit of extra goodness that ColdBox offers in this respect is that the framework gives me a handy RunEvent() method that can be used for further integration.

So for example if I installed a forum written in ColdBox and I wanted to sync-up the user database from the forum with my own user management in the onTap framework (check out the Members onTap plugin) I can look in my user management directories in my own application and I can slip in a handy little call to the ColdBox RunEvent() method any time I create a new user or update a user, to keep the two systems in-sync for a single-sign-on application.

On a similar note, I've also just published a new Transfer ORM Plugin. I found a handy little Transfer Config project on RIAForge from Rolando Lopez, which uses the new CFDBINFO tag in CF8 to introspect your database and generate the required XML config file for the Transfer ORM.

What's really neat about this is that now you can get Transfer all set up and running in your onTap framework application with zero coding (and very little downloading). You just head over to your handy plugin manager, search for new plugins on the webservice, select the Transfer plugin and press the install button. After you've accepted the license agreement, the plugin will optionally download the latest version of Transfer and install it for you. Then it presents you with a small form with some options for how you'd like to generate your transfer config file and viola! You're ready to get transfer objects in your onTap application. :)

Kudos to Rolando for helping to make this possible, and of course to Mark Mandel for giving us Transfer.

Fusebox Importer Plugin

Last year I posted an entry about a CMS plugin for the onTap framework (and I'm still surprised at how much traffic it got). Unfortunately that particular project hasn't become a reality yet, but after having just finished up a revision of the onTap framework and the DataFaucet ORM that both now include integration with the new CacheBox cache-management framework, I decided to start working on plugins again.

Something that came up in that talk about a CMS plugin was how the Sava CMS has managed to create integration with a variety of other ColdFusion frameworks, including Fusebox, ColdBox and Mach-II. I think that shows marked resourcefulness and is a direction I'd like to see the ColdFusion community move more toward. And it's something I've thought about off and on over the past year, but I've not gotten around to doing anything practical about it until now.

Amazingly it's only taken me two days to put together a first release of a Fusebox Importer plugin. Tony Garcia mentioned before that integration between apps in the PHP world actually has a name, they call it "bridging". And that's a fairly good description of what I'm doing here. You install the Importer plugin and from that point, you can then manage fusebox applications that are imported into your onTap framework application through the importer, which acts as a kind of bridge between the Fusebox framework and the onTap framework.

I was hoping that I might be able to find a full-fledged application to test this with, but unfortunately didn't actually find that. I thought maybe there would be a blog or a forum or something available that was written in FB5, but couldn't find one. I did of course find examples of both of those things, but only in older versions of Fusebox (4.1 or 3). So I ended up testing this with a copy of the CatClub sample application that Sean provided when he was lead on the Fusebox project.

I did have to make a few small, yet important modifications to the framework core to get this bridge to work. So if you're interested in trying it out, you'll have to download the latest framework core release (which I just uploaded a few minutes ago). Then use the search form in the plugin manager to find and download the Fusebox Importer.

I'll probably have a look at ColdBox and Mach-II soon for the same thing. If they're similarly easy to integrate, I'll be a very happy man indeed. :)

New Google Analytics Plugin

Thanks to Grant Copley for inspiring this update. He published a Google Analytics plugin for the ColdFusion on Wheels framework and announced it on the Wheels google group. I noticed as I was looking at his description of the plugin that as plugins go, it doesn't do a whole lot. It just outputs the javascript for Google Analytics. And it got me thinking actually that it was a perfect candidate for the onTap framework, precisely because it does so little.

The reason I say this is a perfect candidate is because until now there hadn't been a complete, simplified example of a plugin installer. There have been plugins certainly. There's the DataFaucet plugin and the Members onTap plugin and now there's a CacheBox plugin, but all of those plugins are whole frameworks in their own right. That's been a problem because although the plugin system is documented, there wasn't a complete example of a plugin that you could use as a point of reference for what a plugin should look like. You had to guess about whether or not you were reading the documentation correctly. And looking at the DataFaucet plugin or the Members onTap plugin might not have been terribly helpful, because both of those are larger systems with relatively sophisticated installers, so it would have been easy to get lost in the code and have difficulty separating the installer from the application as you're looking at it. So by creating a plugin from something that arguably doesn't actually need a plugin, I've been able to provide a complete, simplified example that shows you just how to write an installer and nothing much else. ;)

Rather than publishing it separately, I've included it in the Plugin Manager project, which is now part of the core framework download. I also made a few very minor changes to the Plugin Manager itself - I don't think you'll notice any functional differences. But if you just want to see the plugin example, I'm attaching the zip archive of the Google Analytics plugin to this blog as well. Look for the download link in the stats below this entry.

onTap Framework 3.3b Released with CacheBox

I was finally able to get some samples for other applications in the CacheBox 0.9.6 release. In addition to the untested Mach-II sample, there's also a sample using Steve Bryant's DataMgr data access layer, ColdBox and a relatively simple stand-alone blog that's based on the SimpleBlog ColdBox sample application. The ColdBox sample and the stand-alone blog sample have both been tested, unlike the Mach-II and DataMgr samples.

And once I had those done I set to the task of updating the onTap framework, which was actually fairly time consuming. The extra time with the onTap framework didn't have anything to do with complexity in the CacheBox integration, but rather because I took the opportunity to change some related features in the onTap framework while I was there. I eliminated the CFC aliases and process aliases, which both had their own caching, in part because nobody was using them (except me), but also because they were designed to resolve issues that have since been otherwise resolved by the addition of per-application mappings in Application.cfc and by my addition of the IoC Manager. Both of those changes took a bit of digging through the code (it says 3.5MB when I unzip it), to find references to them and then I had to figure out alternative methods of implementing a few things. And since we're using IoC for cache now, I eliminated the cache library from the lazy-loading libraries. This affected the Members onTap plugin, which also had some of its own caching that got a CacheBox upgrade, so I had to create a new version of the plugin as well.

I also realize now that there wasn't any mention of caching in the Quick Start guide, so I'll probably go back and add an article for that soon. My next task (which shouldn't take as long) will be to integrate CacheBox into the DataFaucet ORM.

So if you've got the Members onTap plugin installed currently, you'll want to go to the plugin manager and uninstall it. Then download the latest onTap framework version. And then go back to the plugin manager, select the more tab, search for new plugins and download the new Members onTap plugin version. And if you want CacheBox, there's a plugin that will install the CacheBox service as well. :)

onTap Framework Presentation Recording

I have to admit that I find giving presentations to be kind of a crucible for me. In addition to the typical stage-fright, I also have some generalized social anxiety that comes with having Asperger Syndrome. So I really am pushing myself when I give presentations, and the Online ColdFusion Users Group (OCFUG) is a bit daunting too, because the presentations are rated on the site and most of them have ratings between 4 and 5 stars. So it's a real casual, low-pressure thing for me (not). ;)

I do however hope that my presentation skills are improving with practice. Whenever I give a presentation I try to use it not only as a marketing opportunity but also as an opportunity to improve my presentation skills. So I think about what I presented and how the presentation went and I try and look for things I can change for the next presentation to help me ramble less and give you guys more to take home.

Last Thursday I gave an onTap framework presentation for OCFUG and it seemed to go fairly well. You can check out the recording of the presentation if you missed it here. This was an intro presentation designed for you guys who might be new to the onTap framework. So if you're already using the framework, you're not likely to learn anything new, however, I think there were some good takeaways for me in the presentation. The last presentation I gave for OCFUG on comparing frameworks received only 3 stars, so it was a little below the average for that group, although the site doesn't tell you how many people voted. One of the people who did leave a comment mentioned my tendency to ramble a bit, so when I did this presentation I decided to pre-record the audio for a few of the slides, about 10 minutes of the presentation to make sure there would be plenty of time leftover for demonstration and questions. It seems to have worked pretty well, although it's harder to guage here than in person because there's not as much direct feedback. This presentation received an extra half-star, so I feel like I'm making progress. And I got this email from someone who attended to help me work on future presentations:

isaac, first let me start by saying that i didn't get much out of your presentation, primarily i think because i'm overloaded on frameworks, not because of anything about how you presented. that said, I am pretty good at critiquing, hopefully in a positive way.

i think that the recorded 10 minutes worked okay. could you script and practice more to get the same results live though?

That's good news. It worked. :) And yes I'll work on rehearsing more. Not sure if it will help, but I'm working at it. It's a much bigger investment of time for me to memorize the lines, but maybe I should.

installation is something that i often have difficulty with, so on one hand I really appreciated that you went thru it in so much detail. on the other hand, i'm not really interested in installing something that i don't know anything about. i think if you recorded the installation piece and made it available separately for someone to d/l and use later, it would be very valuable. for an overview preso tho, i'd have rather seen you go right to the framework and how it works. that would have given you more time on the framework and for questions.

More good news. Lets me know that there certainly are people interested in the hands-free installation. Maybe I can get into more detail on the framework features with another presentation.

i thought the two chat windows, one for questions and one for 'chatter' was an excellent idea. i think it would work well for all the speakers. the chatter window sorta gives the class the ability to whisper quietly in the back w/o interrupting the speaker. sometimes someone in the audience can answer something while the speaker continues on. i know i lose my place easily and would be really distracted by all that. (i need to send this comment on to charlie too.)

Right, that was done primarily for me, to help me make sure I covered all the questions. It was something that Charlie and I had seen in other Connect presentations, though changing the name of the 2nd chat pod to "questions" seemed to be eluding us.

So I'm thinking about giving a couple of follow-up presentations at this point to give more in-depth information about the framework's features. Some of the topics I'm considering are:

  • Form Tools - easier, bigger, better, faster and more secure than xml forms with CFForm
  • AJAX - widgets like tabsets and trees as well as partial-page rendering
  • How to Write a Plugin - explains how to package up an application for automatic installation into the framework as seen in this presentation
  • Customization - how to future-proof your plugin tweaks

Looking back over my previous presentations for the DataFaucet ORM tool I realized that both of those presentations had been given 4.5 stars (1 2), which is a pleasant surprise. I think I'd forgotten that. So I'm hoping that these more in-depth presentations may also be similarly received. Are there any other subjects you'd like to see me present on?

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.5.006. | Protected by Akismet | Blog with WordPress