Comment spam on my blog has increased immensely over the last four to six weeks. I'm getting, on average, 150 spam comments per week. In order to help combat the scum of the earth I have implemented both Akismet and Project Honeypot by way of activating these two features in CFFormProtect (which ships with BlogCFC).
I've been adding photographs and screenshots to my blog posts for years using simply image tags. I've grown tired of the lack of full screen images and always worrying if the 520px images are even useful. And I've seen all the snazzy imaging tools out there giving users a better interaction with photos on Web sites. This weekend I decided to look into adding Lightbox to BlogCFC and wound up with Slimbox, a visual clone of Lightbox. The major difference between the two is Slimbox is super lightweight and very customizable.
To see Slimbox in action click the photo of my son below. If you want to add Slimbox to your installation of BlogCFC here's how to do it.
Yesterday I posted about upgrading my blog to BlogCFC 5.9.3. How I went about the upgrade process is probably just as important as getting on the latest version. What follows is a run-down of how I upgraded, what tools I used to make it painless, and the SQL scripts I wrote you can use to get your own blog upgraded. Hit the more link for all the goodness.
I haven't upgraded my blog software (BlogCFC) since 2006. I've written several customizations that until recently have made it a huge burden to migrate to Ray's latest enhancements without losing my own additions and changes. Last weekend I decided enough was enough and I made a personal goal to get everything running on 5.9.3 before Monday. It wasn't easy but with the help of some nice tools I was able to reach my goal.
I'll post a later entry on the tools I used that made the upgrade process painless. I'll also provide custom MySQL scripts I wrote to upgrade the database architecture, just like I did before. In the meantime, here's a short list of what has been added and changed:
This morning I spent a few minutes updating my own BlogCFC codebase to support more e-mail functionality. The current incarnation of BlogCFC (5.5.003) has a drop-down menu where authors choose whether or not to e-mail a new entry to their subscribers. I've taken this a bit further by adding the ability to re-send blog posts to subscribers when editing existing posts. This is a nice feature to have if you make a significant change to an entry. Adding this new feature also fixes a bug in BlogCFC where subscribers would not be e-mailed when releasing a previously un-released entry. Since Ray added the released flag, I find myself starting blog posts even when I don't have time to finish them. This keeps me from forgetting about my planned posts and allows me to play "catch up" when I find more time. However, knowing this workflow meant my subscribers would not be e-mailed made it less than desirable. After today that's no longer a problem.
I've sent these changes to Ray for inclusion in the next minor release of BlogCFC, which should be coming pretty soon.
It figures I would spend the time to get my blog up to date with the latest BlogCFC and then Ray would release a new version. This time I'm going to try and keep up with the releases instead of getting behind. So, tonight I'll be upgrading things to 5.5.003 which includes several bug fixes (one of which has been plaguing my Inbox) and some new features like Contribute support. I'm using this post to test another potential bug where blog subscribers are not e-mailed when an un-released post is finally released. We'll see what happens.
I spent the better part of the entire day yesterday upgrading my blog from BlogCFC version 3.9 to the latest and greatest 5.5. I've been meaning to upgrade for some time but knowing the amount of work that was going to be involved I put it off. While the process went smoother than I expected (always good), it was a major time commitment. It took several hours to create a staging environment to perform all the work, which included getting all my production data pulled down and working in a new 3.9 instance. I already had my blog running on localhost but I wanted to isolate the upgrade in case I ran into issues along the way. The next step involved getting Ray's latest and greatest code from his Subversion repo and creating a vanilla 5.5 install. Super easy.
Now that I had a 3.9 database and a 5.5 database I went about comparing the architecture of the two and writing scripts that would bring my 3.9 database up to par. This consisted of several ALTER TABLE statements needed to add columns to existing tables, some UPDATE statements to bring my existing data into compliance with new columns, and Ray's CREATE TABLE statements for tables that weren't in the 3.9 version. It wasn't a big deal, but I went slow and was very careful to document every single change I made and test all my code against the staging environment. I did this by pointing the staging DSN (for the vanilla 5.5 install) to my newly upgraded 3.9 database. Everything worked flawlessly.
At this point I had my production data on localhost, I had written scripts to migrate my production database, and I had tested the scripts pretty thoroughly. My next step was to merge all the 3.9 customizations I had made - including styles - into the vanilla 5.5 codebase. This step was by far the most time consuming taking somewhere in the neighborhood of 4-5 hours. Ugh. I had applied the aura styles and cleaned them up significantly, not to mention shoe-horned my own custom background images into 3.9. While working with all the styles I recalled how many pain-staking hours it took to originally create the graphics and styles. Not being a designer and certainly not being good at cutting up graphics for a Web site, the work took at least a day and half. To get things right this time - in 5.5 - was not as bad but it's not the kind of coding I really enjoy.
With the database migrated and my customizations in place it was time to load everything up to production. It only took 20 minutes to run the scripts against the live database and upload the new codebase. However, in this small amount of time over 1500 RSS error e-mails were generated. My application level CFABORT and maintenance message stopped no telling how many e-mails, but before I had that in place several minutes had passed. The errors were thrown due to the 5.5 code residing on the server before the database changes were made. Just goes to show, that Ray's blog software works amazingly well if I can get 1500 error e-mails in about 5 minutes. I can't even imagine what my Inbox would look like if a major error was introduced to production code and left unresolved.
So, 5.5 is up and so far is running well. I'll be watching it closely over the next few days; if you notice anything funky please let me know. In an effort to help anyone else upgrading from BlogCFC 3.9 to BlogCFC 5.5 I've zipped all my SQL code and made it available as a download. Use the Downloads pod to the right or simply click here.
The more and more I have an opportunity to work with Flex 2 the more excited I get. It's relatively easy to build complex, rich applications in a fraction of the time it would take to build something inferior in say HTML. I could go on and on about my love for Flex 2 but I wanted to post a quick recommendation for Ray Camden's Creating a Flex 2 Interface for the BlogCFC Application on Devnet. Ray's article is relatively short but right to the point in demonstrating core Flex 2 development with MXML and ActionScript 3. He also demonstrates how to hook up Flex 2 to a ColdFusion MX 7.0.2 backend with Flash Remoting. You'll see Flash Remoting result events handled with Flex 2 ArrayCollections - a best practice in Flex 2 given the automatic translation of server-side datatypes to ActionScript 3 datatypes, better data-binding, data collection sorting, and more. After reading through Ray's article I recommend folks check out the Flex 2 front-end to Ray's blog. While viewing the Flex 2 app you can right-click and select "View Source" to view the MXML code. From the view source screen you can download an entire zip file of the Flex 2 front-end which includes all the MXML for each of the pod components and the ActionScript 3.
Links in this post:
Creating a Flex 2 Interface for the BlogCFC Application
Flex 2 / BlogCFC Front-End
In an effort to support the open source community (which includes the ColdFusion community via projects like BlogCFC and CFEclipse) I've added a new pod on the right that serves up Kalator ads. Kalator is a new ad service created by Rob Rohan that only serves up ads from open source projects. If you have an open source project you can submit it to the Kalator service or you can help support the open source community by picking a banner size and adding the appropriate code to your Web site.
Ray's new version of BlogCFC (version 5) has been in beta for about a month or so now. Ray (and team I guess I should say) have now released the new version as 'Gold.' I've had the beta version running on my localhost (for the Nashville ColdFusion User Group) for a while now. I am now integrating the latest release and will hopefully in the next week or so deploy to production.
I'd like to thank Ray, Scott, Charlie, and all the others for the hard work they put in for this release. There are a ton of cool features (delayed posts, draft mode, CAPTCHA, and more) to check out and test drive.
Five days ago was the 4th anniversary of my blog. It was so uneventful that I didn't even realize it occurred. I knew it was coming up after checking some blog stats a month ago but I had since forgotten about it. It's rather embarassing, but I'd like to share just a few stats on my blogging history. For starters, I don't post near enough to keep the content as fresh as I want to. As of today I have been blogging for 1,466 days having posted 128 entries. While that is pretty pathetic I am not too upset considering the first 3.5 years I didn't try to keep up with the blog much at all. It wasn't until I switched from Greymatter to BlogCFC that I started to keep my posts up.
Having shared some of the bad, what about some of the good? Last month was certainly a milestone in the life of my Web site (6 years old now) and blog when over 70,000 page views were recorded. Ever since November of 2005 my page views have almost doubled every month. Why? One reason is crawlers. The largest reason though is RSS. A lot of my site hits come from people with various news readers like NetNewsWire (Mac) or FeedDemon (PC). Another cool stat, is that my MusicStoreAutoPlay AppleScript has been downloaded over 300 times in just two months. Additionally, all of my sample CF code and tutorials have each been downloaded more than 100 times with the majority of them having been added within the last 40 days.
All-in-all, I'm relatively pleased. I want to continue doing more traffic on the site and continue posting as much relative, interesting, and helpful content as possible. Here's to another 4 years!
Finally, after a week of preparations and changes I've switched my DNS entries to HostMySite. I've been on a great host for over 5 years but in order to stay current with the latest version of ColdFusion it has been necessary to find a new provider. After doing a bit of research and talking with other CF developers I chose HostMySite's Linux Builder+ plan. After moving my general site files (and updating some pages therein) I began moving my blog from Greymatter to Ray Camden's excellent BlogCFC. Ray's blog is set up very nicely and was very very easy to install. I had initially installed MovableType but after huge headaches and hours of attempting to import my three years of posts I decided to give BlogCFC a try. Skinning the blog was definitely the most time-consuming. I downloaded the base Aura skin and had a version of my new blog up in no time. After looking through the CSS files for Aura and feeling like the code was a little bloated (lots of unnecessary CSS classes and ID's) I decided to build my own version of the skin.
The basic look of my skin is not unlike other Aura skins out there (see Steven Erat's blog and Ray Camden's blog). However, my skin does not make use of the 4 CSS stylesheets and all the directories that come with Aura. It's much easier to grasp and it's very easy to make changes without getting lost in the CSS. Not being a designer it took me a painful amount of time creating all the image slices and getting everything to line up. And, I'm not done yet. I still have to create a footer graphic to round out the bottom corners. The work was well worth it though and I'm very happy with the new look of the blog (and my new host)! Now, users can subscribe to my various feeds through RSS 1.0 and 2.0 (see the RSS pod in the sidebar to the right). Comment posting and e-mail subscriptions are also now available. All-in-all, I'm excited to have a fresh new blog up and I'm excited about now being on ColdFusion MX 7. With all these changes you'd think it was the new year or something!