CFWheels Eclipse Dictionary Updated

A while back I created a dictionary file for Eclipse based editors that would provide code insight and code completion for the CFWheels methods. This works in both ColdFusion Builder and CFEclipse. Well, I finally got around to updating it for the CFWheels 1.1 release.
So if your using Eclipse and CFWheels, you can grab the update on GitHub.

ColdFusion Builder Contest Update

With the ride coming up this weekend, Im having to adjust my schedule somewhat. I will not be around at all on Friday to do the drawing so Im going to move the deadline and drawing up to today. If you are interested in a chance to win a copy of ColdFusion Builder, you have until 2pm EST to enter. I will be doing the drawing shortly after 2pm EST and announcing the winner here and on Twitter.
You can donate to the ride here, and remember, you get one entry in the contest drawing for each $5.00 that you donate.
A few updates on the progress of fundraising for the ride. So far, I have raised $558 dollars for the National MS Society. I havent reached my goal but $1000 might have been pretty ambitious for my first year. I received an email update from the North Florida MS chapter that is holding the ride yesterday and so far we have over 2300 riders and have raised over $1M dollars for MS from this one ride! Thats amazing!
The weather doesnt look like its going to hold out this weekend so I may end up riding 150 miles in the rain, but no matter. My goal is to finish it no matter what!
If you are interested in seeing the routes we will be riding this weekend. Here are links to day 1 and day 2.
Day 1
Day 2
Thanks for all of you help and support!

ColdFusion Builder Contest Winner

Let me start by saying how thankful I am to be a part of this community. I want to thank everyone who sponsored my ride for the National MS Society as well as all of you who blogged about the contest and sent out re-tweets, etc. Thanks so much again to Adam Lehman and Adobe for donating the copy of ColdFusion Builder for me to give away to help in my fundraising efforts! I raised a total of $558 for the MS Society which for my first time riding in this event I think is awesome!
So after the random drawing, the winner is:
Jeff Borisch!!
Congratulations Jeff! I will be contacting you via email with the information on your ColdFusion Builder license.
Thanks again to everyone for your support!
The ride is this weekend and I will be posting updates to Twitter and Facebook about every 10 miles using my CycleComputer software so feel free to follow along if you dont have anything better to do.

Win A Copy Of CFBuilder

After nearly 12 years of coding in ColdFusion, I have watched my weight climb as I spend more and more time behind a desk. Gone are the days when I could spend hours in the gym working to increase my 1 rep max when I used to powerlift. Yeah, I gave that up years ago. So in an effort to get some exercise I took up bike riding. After spending several hundred dollars on a decent mountain bike, I quickly realized that if you weigh more than 200 pounds, those seats are just not meant for you. Not even with padded shorts! Ouch!
So I went looking for a new option. I came across a recumbent trike that looked really comfortable. So I tracked down a dealer and took the hour and a half drive to go test drive one. It was like peddling a reclining lawn chair. Super comfortable! Needless to say, I bought 2 of them so my wife could ride along with me.
We wanted to set a goal for ourselves but not just some verbal goal that we could easily get out of. We needed to be committed to something so we had accountability. So we found out about the National Multiple Sclerosis Societies MS150 fundraisers. These are bike rides held all over the country that normally span 2 days and about 150 miles. There are options for 1 day events as well for more beginning riders but no-way was I going to take the easy way out! Im going for the whole deal. This gave us something to be accountable for. When you sign up you agree to raise a minimum of $200 via sponsors or you pay the $200 yourself. This was great, we were helping to raise money for a great cause and we had a goal to achieve.
Our riding is going good, we are doing 30+ miles a day on the weekends already and feeling pretty good afterwards so Im confident we will be ready come October 2nd when the ride takes place. I have lost nearly 30 lbs already as well which is a great side bonus.
Now, here is my problem. When we signed up, we had a friendly competition going about who could raise the most money for the ride. She works in the emergency room of a local hospital and the doctors there are all going crazy signing up on her sponsorship sheet. She is kicking my tail!!
I need some help in fundraising so I decided to give a copy of ColdFusion Builder away to a random person who donates $5 or more to my ride. I set a goal of $1000 in fundraising which is completely reachable considering there are individuals now who already have over $5000 raised and we still have 8 weeks to go!

I will enter all the names of those who sponsor me for $5.00 or more into a db table and throw together a quick ColdFusion template that will randomly select one of them. That person will receive a copy of ColdFusion Builder which includes Flash Builder 4 Standard.
*** UPDATE ***
After talking someone about this and getting a little more insight, Im changing the rules just a bit. For every $5.00 that you donate, your name will get entered into the database. So if you donated $20.00, your name would be entered into the database 4 times, essentially giving you 4 chances to win.
Donations must me received before October 2nd when the ride takes place in order to win.
You can donate online via the MS Society’s site and my personal fundraising page here. You must use this link to donate online so I get credit for the donation.
Im linking a few sites below if you are interested in reading a bit more about the National MS Society or the “Cycle to the Shore” event.
National MS Society, North Florida Chapter
BikeMS Cycle To The Shore Event
Feel free to comment with any questions.

ColdFusion Wallpaper – Revolution

I was doing an image search on Google last night when I came across an image of the old ColdFusion logo from the Allaire days. I started feeling a bit nostalgic and the creative inspiration took over. I have been wanting to spend some time playing around with and investigating Illustrator and Photoshop CS4 so this gave me a good excuse. After a few hours of tinkering, I came up with a new wallpaper and was pretty happy with it so I figured someone else might be interested in using it.
I have created several widescreen versions and an iPhone version as well. Hope you like it.

iPhone Version


Using Partials In CFWheels To Keep DRY

One of the things I like about CFWheels is that its based on sensible conventions. If you follow these conventions, they can really save you a ton of time writing boiler-plate code as well as configuration. Working synergistically with these conventions are a lot of helper methods that will also reduce the amount of code you have to write as well as keeping your application DRY (Dont Repeat Yourself).
I am working on some new features for SplashCMS and ran into a situation that helped clean up quite a bit of code in some of my views and I thought it warranted a little example to show how nice this feature really is.
I have several places where I want to display a list of snippets in this application. Normally you would just write this code in each of the views that display the listing:

Snippets.cfc (controller)





Not really a big deal I know. Pretty simple code to display a small list in a table. But consider this, if you do this 2 or 3 times for each different type of list you have, that could really start to get unruly in a hurry. So to help us keep our views as DRY as possible, we can leverage a feature in CFWheels called partials.
Partials can best be described as CFINCLUDE on steroids. They work exactly like a CFINCLUDE in their simplest form but, are pretty cool in the fact that they can be as simple or complex in functionality as you need. In order to keep things as simple as possible for this post we will simply look at how using a Wheels Partial over a CFINCLUDE is beneficial for our situation and will delve further into some of their more powerful features in another post.
So, in order to keep from repeating ourselves and having as little code as possible in our app, lets look at how we can simplify this. Since we know we are outputting a list of snippets thats returned in our query, we can strip out the code thats used in each view and place it into a partial named the same as our query. By doing this, we are going to take advantage of one of the features of partials that allows us to automatically handle data being passed into it.
First lets look at the code that makes this happen and then I will explain it further.






Notice in the view file (index.cfm) how we are calling the partial and instead of passing a file name, we are passing the actual query into the includePartial() method. By doing this, we are telling Wheels that we want it to find our partial named _snippet and loop over it once for each record in the query. Pretty nice, right? We are letting Wheels handle looping over the query and including our display code for us. This is much more portable now. Any place we want to display this list, we can simply call the partial and we have only one file with display code to manage the list. This helps to DRY up our code.
One thing to note. You will notice that Im passing a query named “snippets” plural. However the file Wheels will look for is “_snippet.cfm” singular. Partials are always named starting with an underscore “_” and when Wheels evaluates the query passed into it, it knows we are dealing with a Snippet model and our models are always singular, so the convention is to use singular names for the partials as well. Just think of it like this, the partial is always dealing with only one record at a time, thus its singular.
I hope this helps explain this really cool feature of partials a bit. In my next post we will expand on this example by demonstrating how CFWheels helps you to use grouping in this same partial.

Pre-Conference Training at cf.Objective() 2010

If you are planning to attend cf.Objective() this year, you really should consider checking out some of the pre-conference training sessions. There are one and two day sessions listed and the trainers are all top-notch! Here is a list of the sessions that have been announced.
Building Secure CFML Applications (April 21) – Jason Dean and Pete Freitag
Coldbox:100 Training (April 21) – Luis Majano
Developing Applications with ColdFusion 9 Object Relational Mapping (ORM) (April 20-21) – Bob Silverberg and Mark Mandel
Getting Started with Flex and AIR Development with the Flex SDK (April 21) – John Mason
Mach-II and OOP from the Ground Up (April 20-21) – Kurt Weirsma, Peter Farrell and Matt Woodward
Rapid Development with Model-Glue 3 (April 20-21) – Dan Wilson and Ezra Parker

Accepted into the Adobe Community Professionals

I found out last night that I have been accepted into the newly renamed Adobe Community Professionals program. I am truly humbled to have made the list especially given some of the names on this years list!  The program used to be known as the Adobe Community Experts but was renamed this year due to some naming conflicts internal to Adobe.
So along with my work on several open-source ColdFusion applications, maintaining and adding new features to, and being active on the CFWheels mailing list, I better get back to blogging regularly as well. I have been so busy with things in both work and personal life that I havent really had the time or motivation to keep blogging over the the last several months. So Im looking at finishing several posts that I started last year as well as continuing forward in 2010.
After 11 years of developing ColdFusion applications, I think this year is going to be one of the best ever!

Fixing Railo and Resin on Snow Leopard

After upgrading to Snow Leopard, I found that my Railo install was not working anymore. I followed Luis Majano’s instructions for getting it setup on Leopard to begin with and the only way it would work for me was to switch the built-in Apache binary to the 32-but mode and then compile the mod_caucho apache module.
Well after the upgrade, that no longer worked. I couldnt get apache to start with the 64-bit architecture removed from the httpd binary so I had to find another way. After a bit of investigating, I found that the configure script checks my Java install for 64-bit compatibility and during that check it was returning that it wasnt 64-bit Java. Hmmm now wasnt Snow Leopard supposed to be all about 64-bit? So I checked my java binary for 64-bit support using the following from the terminal:

file /usr/bin/java

That returned:

/usr/bin/java: Mach-O universal binary with 3 architectures
/usr/bin/java (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/java (for architecture i386): Mach-O executable i386
/usr/bin/java (for architecture ppc): Mach-0 executable ppc

It was showing 64-bit support, so what was the issue? So back into the configure script I went. It turns out that it was checking a symlink which points to the current JVM install.


In my case, the symlink “Current” was pointing to a folder in the same directory named simply “A”. I have no idea where that came from since I never mess with the built-in Java on my mac. There was however several other directories and symlinks in the same folder that pointed to the “1.6.0” directory. So I simply deleted the “Current” symlink and recreated it to point to the 1.6.0 directory.

[russ@Prime:/System/Library/Frameworks/JavaVM.framework/Versions]$ sudo ln -s 1.6.0 Current

That created a symlink pointing to the newest JVM on my system. Then back in my Railo install directory which happened to be /Applications/railo, I ran the configure script again.

./configure --with-apxs=/usr/sbin/apxs --enable-64bit

After checking the output of the configure script, I found this line:

-n checking if Java is 64-bit... yes

Success! Then I simply ran make then make install to install the newly compiled 64-bit mod_caucho module and restarted apache.
Now Railo is up and running again on Snow Leopard!


Although there are many downsides to being unemployed, there are a few upsides to it as well. One of which is that you have a TON of time to play with code and learn new things. After almost 3 months between projects now, I started getting the fever to launch something. So I was playing around with CFWheels at that time and decided to throw something together.
The result is Its not nearly feature complete, but I wanted to get something out there and start playing around. Its basically a site that allows CFML developers to create profiles, recommend other developers, etc. The idea is not mine, Most of the functionality is heavily “borrowed” from the Rails site I just thought it would be a cool project and wanted to see how much i could get done with Wheels.
Currently I have around 45 man hours in the site, that includes bug-fixing the last couple days. Its running on the latest version of Railo and was written with version 0.9.3 of CFWheels
If you are so inclined, create profile and share. If you happen to run into any issues, or if you can think of a feature that you would like added, please let me know. Afterall, I dont have much else to do right now. 😉