CFUNITED Flickr Pool

With CFUNITED just around the corner, I thought I'd go ahead and create a CFUNITED Flickr Pool for anyone attending this year's conference to post pictures and discuss the event. In case you haven't used Flickr, it's the most amazing (and addictive) photo sharing site ever created. If you don't have an account, you can create one for free, as there's no obligation.

So, feel free to join the pool and post as many pictures from CFUNITED as you like. The more, the better. I'm looking forward to seeing each and every one of you there!

BlogCFC Updated

Ray works fast. So fast in fact that he just released a new version of blogCFC with the changes I suggested for search engine optimization.

What prompted this whole thing was the surprise I received when I googled "ColdFusion" recently. No content from anyone running blogCFC turned up in the first ten pages of results. In fact, I'm not even where the first result turns up. This lead me to start googling specific entry titles from people's blogs. Many of those didn't show up either. I then tried getting listings of all content indexed for particular blogs. Again, it looked like only some content was being indexed, and what was was being indexed from calendar entry pages or the main pages of blogs, and not from the individual entry pages.

So, I started researching and reading about SEO with a special emphasis on Google, and set about making a set of changes to enhance blogCFC. My feeling here is that there is a ton of good CF content out there that people who aren't aggregating RSS feeds and reading on a daily basis are missing. As one commenter on my blog noted, a lot of blogs are still relying on google and other search engines to drive traffic. The changes that were incorporated into blogCFC should help out a lot with this.

More on BlogCFC, Google, and Search Engine Optimization

After some additional discussions and consideration last night, I'd like to revise the bullet point I made yesterday on how I thought the blogCFC calendar pod should be modified. Instead of worrying about how far to let a search engien spider the calendar (in the future and past), I think it makes sense to just tell search engines to leave the calendar alone. The categories pod alone provides a much more efficient way for search engines to find and craw blog content.

Think about it like this. If you've been blogging for 5 years, and leave a search engine to follow your content via the camendar, it will have to traverse 60 individual months worth of pages, assuming it gets things right and follows the months and years in sequence. It's far more likely that the spider will have to follow several times more links than that. Contrast that with the categories pod. Here, you are only requiring a search engine to follow and index a much smaller number of pages to find your content.

BlogCFC, Google, and Search Engine Optimization

I've been spending some time recently looking into Search Engine Optimization for BlogCFC. I hadn't given this much thought until recently, when I launched a new blog and noticed that the majority of my posts weren't being indexed in Google, and the ones that were weren't being indexed as I thought they would be.

It turns out that Google is fairly picky on how it indexes sites, especially dynamic ones like those that use blogCFC as the engine for their blogs. I've been discussing with Ray Camden changes that can be made to blogCFC that will make it more search engine friendly, especially for Google. The changes that I'm proposing are all to the core CFC and related layout files and don't get into server side changes that you can make such as SES/friendly URLs. That's a topic all its own, and one beyond the simple changes I'm proposing. Ray's agreed to consider them for a future release.

The main issues as I see them are that Google and other search engines aren't indexing individual bog entries, those that you would associate with an entry's permalink. Instead, Google seems to be indexing entries wherever it finds them. This means that sometimes it will index a particular entry from your blog's homepage (undesirable since this changes and entries drop off), from calendar links, from category pages, etc. The point is Google isn't being provided with one single version of any of your blogCFC posts. Instead, it's left to its own devices to attempt to craw you site and index the content. This is problematic for the reasons I just mentioned. It's also problematic for a number of other reasons. One of these is the calendar pod. When Google encounters the calendar on a page, it attempts to follow all of the links. While this is a slight problem because a post can show up for day, month and year entries, it's an even bigger deal with the > and < links, which move the calendar backward and forward in time. It's a problem because Google can go on crawing these links backward and forward for what would be an infinite amount of time. Luckily, Google is coded such that it won't let itself get caught in this sort of endless indexing of dynamic content. The bad news here, though, is that when it realizes it's caught like this, it stops indexing your content. Google has stated on their site that while the engine will index dynamic content, it may limit how much it indexes on any given site. With this in mind, I'm of the opinion that it's better to code the calendar component so that you can't move forward or backward past the point of any entries. That is, you can't move back to a time before the first entry was made, and you can't move forward in time past the current month.

Here are the recommendations I'm making that should improve the search engine friendliness of blogCFC. If you have any additional suggestions/comments, please make them here and I'll be sure to compile them and pass them along to Ray:

  • Code the calendar so that the > and < controls are disabled when you have reached the month of the first entry or the last entry in the system. If you still want the buttons to be functional, but not allow search engines to follow the links after that point, consider adding rel="nofollow" to the A HREF tags for the controls.
  • Use the META Robots tag to specify to search engines how to treat a page. For the main page of your blog, use
    <meta name="robots" content="noindex,follow" >
    This tells crawlers not to index the content (since the page content changes regularly), but that it's ok to follow any links. You should also use this for pages generated by date, subject, etc. For the actual entry pages on your site, use
    <meta name="robots" content="index,follow" >
    This tells the crawlers to both index the content and to follow any links on the page. Remember, the main idea here is that you want the search engines to index each entry on your site individually. This will make it much easier on the search engines as well as visitors using the engines to locate content on your site.
  • Consider modifying blogCFC such that the titles of entries are actually links to the individual entry (permalink). Right now, blogCFC has a link at the bottom of each entry called "link" that provides the permanent link for the entry. This is how Blogger typically does it, but I've read in several places that it's better to link the title of the entry.
  • This is obvious, and was added in a previous blogCFC update, but make sure that the actual title of the blog entry appears in the HTML TITLE tag for the entry as this is what gets displayed in a search result link.

I'm sure there's a lot more that can be done, but this should serve as a good starting point for making blogCFC more search engine friendly.

MAX 2005 Registration Now Open

Macromedia has officially started the registration process for MAX 2005, to be held October 16-19 at the Anaheim Convention Center in Anaheim, California. For more information on registration, visit www.macromedia.com/macromedia/events/max/.

Looking over the session information, the main theme really seems to be RIAs. To me, the ColdFusion topics seem a bit lighter than usual this year. While there are sessions on the new application framework, Flash CFFORMs, CFCs, and the new reporting capabilities in CFMX 7, absent are specific sessions on event gateways (a feature I thought would be a hot topic), XML Forms (much more powerful than the new Flash forms in my opinion), the new deployment capabilities, and the admin API just to name a few.

I don't want to come right out and say that MAX is starting to look more and more like a "fluffy" conference rather than the developer focused conference that it's always been, but I can't help but feel that the [ColdFusion] technical content this time around is a bit lacking given all of awesome new features in CFMX 7.

Musical Baton Meme

I was tagged by Ray Camden. So, here's my contribution to the meme:

Total Volume (of my MP3 library): 104 GB

Last CD Bought: "Hot To Dismantle An Atomic Bomb" - U2

Song Playing Right Now: "Don't Stop Believin" - Journey

Five Songs I Listen to a Lot:

  • Boulevard of Broken Dreams - Green Day
  • PDA - Interpol
  • April 29, 1992 - Sublime
  • Pride (In The Name of Love) - U2
  • Killing in the Name Of - Rage Against The Machine
  • The Distance - Cake
  • Jane Says - Jane's Addiction

Five People to Whom I'm Passing the Baton:

Macromedia Releases DataDirect 3.4 JDBC Drivers for ColdFusion MX 6.1/7 and JRun 4

Macromedia announced that new DataDirect JDBC drivers (version 3.4) are now available for ColdFusion MX 6.1 and 7.

While this is great news as they fix several outstanding issues, I can't help but be a little disappointed that they don't deploy using the same updater mechanism as cumulative fixes do in CFMX 7.

The link to the technote describing the install process (and to the files) can be found here.

FarCry CMS Updates and Roadmap

Geoff Bowers and the team over at Daemon have setup a new issue tracking site and roadmap for the next release of FarCry, an open source CMS for ColdFusion. The site is setup to track issues, solicit feedback and enhancements, and provide an overall roadmap for FarCry development. Oh, and if you haven't seen it yet, check out the new logo. It's pretty cool!

If you haven't yet checked out FarCry, it's definitely worth evaluation. If you are heading to CFUnited this year, check out the FarCry presentation being given by none other than Steve Rittler.

Will Acquisition of JasperReports Impact Future Versions of ColdFusion?

While browsing /. this morning, I came across this reference to a ZDNet Blog talking about the acquisition of the open source JasperReports product by a commercial company.

Since ColdFusion uses JasperReports as the underlying engine for the new reporting functionality in CFMX 7, I wonder what if any impact this will have on the furure of CFMX's reporting capabilities. I think a lot depends on how much new development gets done on the version of JasperReports that remains open source. I have a feeling there won't be too much in this area as the main JasperReports developer was snatched up as part of the acquisition. I guess Macromedia/Adobe could go on and make any improvements to the underlying engine that they want to, but that becomes a matter of resources, and a cost/benefit trade off for future development.

This will be an interesting one to watch over the next few years of the CFMX 8 product cycle evolves.

How to Safely Move Your iTunes Music Directory to a New Drive

I recently ran out of room on my internal 160 GB harddrive, mainly due to my mp3 collection. All told, I have over 100 GB of music, and I buy more all the time. Couple that with video and my digital pictures, and I'm totally out of space. To solve the problem, I decided to add another harddrive. I was hoping to go with NAS, but after looking around, I didn't really find anything that offered a decent enough price/storage ratio. In the end, I added another internal drive. I went with a Seagate 250 MB SATA drive to match the 160 GB drive I already have. I chose Seagate because they are the only company offering a 5 year warranty. Earlier this year, I had two harddrives go within a month of each other. One was 4 years old, and the other 3.

I run Windows XP at home, and store all of my music/pictures/videos in shared folders as both my wife and I have our own iPods. The way I have it all configured, we have our own iTunes XML library files so that we can have our own song ratings, play lists, stats, etc., but make use of the same library of songs from the shared folders. Since I was planning to move all of our media to the new drive, I knew I was going to have to make some changes to both Windows and iTunes to get it all configured correctly.

The first thing to create new folders on the new drive and get Windows to recognize them as my shared folders instead of the default shared folders located in C:\Documents and Settings\All Users\Documents. To do this, you need to make some registry changes. Please note that if you use TweakUI, it claims to be able to change the shared documents location, but it doesn't work. The only way I have found to do this is by directly modifying the registry. For specific instructions, see here. After following the instructions, I had my shared documents folder located at D:\Shared Documents. I put a My Music, My Pictures, and My Videos folder under Shared Documents.

The next step was to copy all 100 GB of my music collection from my C drive to the new location on the D drive. This took about 30 minutes or so to complete. One thing to note here. I don't let iTunes manage my music in terms of letting it take control of my files and folders. I tried this once when I first switched to iTunes and found that it basically sucks. iTunes may think it knows how to best organize your music collection, but it doesn't. I didn't like it's organization of naming conventions at all. I've always let iTunes keep it's library and xml file in my My Documents folder, but my actual music has always resided elsewhere.

You may be asking why I didn't simply blow away my iTunes xml and database files and re-import all of my music. If I did that, I would lose all of the rating information, play lists, etc. that I mentioned earlier. So, in order to get iTunes to recognize my music in the new shared folders location, I needed to tweak the iTunes XML file that points to each song. It took me quite a bit of trial and error to get this right last night. In the end, this is the procedure that worked:

  1. Close iTunes
  2. Before doing anything else, make a backup of your iTunes Music Library.xml and iTunes 4 Music Library.itl files. They are located in C:\Documents and Settings\user\My Documents\My Music\iTunes by default.
  3. Open the iTunes Music Library.xml file in Wordpad and do a search and replace for all occurrences of your current drive/directory location and replace with your new location. Note that directories are separated with a forward slash, and all spaces in directory names must be escaped as %20. Depending on the size of your XML file, this could take a while. Mine is 30 MB. I ran a few errands and found it had completed when I returned. Save the file when you are done.
  4. Now, you need to corrupt your current .itl database file. The easiest way to do this is to open it up in Wordpad and just delete the contents of the entire file, then save it. You should have a zero byte file.
  5. All that's left to do now is to open iTunes and let it rebuild your database. After it scans in all of your mp3's, ut will tell you that the .itl file is corrupt and ask if it's ok to rebuild it. Let it rebuild the database, and when it's all done, you are all set!