Four score, and one decade ago I began my quest to develop the next iteration of this website. As many of you know, it's been in development for quite a while. In fact, last year around this time I was just venturing into the development of the blog section of which this fine mangling of words was crafted. It's been quite a journey, but I think it's about ready for initial release. Yes, release! I mean I will be placing this site on 'www' instead of 'ruby'. Consider it my present to all of you who have patiently been awaiting (or persistently asking about) the expected release date for the site. Although there is nothing definite at this point, it is certainly looking promising. So what's up, you haven't blogged in a while dude. Well, that's partially because I've been doing what I've come to label as binge coding. Similar to binge drinking, this geek ridden activity puts similar wear and tear on your body, yet your liver remains intact. Engaging in this activity for over a week now, I've made some major updates to the site since I last graced this section of the site with prowess as an active blogger.
- Global Search – Courtesy of the acts_as_ferret plugin for Rails and some significant modifications to its implementation, I've managed to whip together a search enabled site both at the section level and across the entire site. In addition to that, I've also used some AJAX stuff to make the global search automatically display results as you type. No need to click submit!
- Interoperability Enhancements – I won't go into great detail, but once again I continue to regularly face problems with ensuring the interface is consistent across my supported browsers (i.e., Firefox, Safari, and Internet Explorer). Nonetheless, I've compromised on some minor differences in appearance depending on the browser, but for the most part, it should look, feel, and function consistently across each one.
- Media section complete – Yeah, this one is finally out of the way too. It was one of the less-complicated sections to develop, but still took a fair amount of time to get everything right. In fact, it actually turned out better than I would have expected.
- Tests and more tests – i'll tell you what, thank goodness for unit, functional, and integration tests. Heck, had it not been for testing, there would still be a vulnerability in my media section that allowed one user to edit another user's media. As you might imagine, I quickly resolved that issue prior to releasing it to production. I still have plenty of more tests to write, especially for user interface elements. However, I'm more concerned with ensuring proper functionality and operation during this initial release. Thus, some of the interface elements may have a few bugs to work out later. Hey, that's why I have a feedback page, right!
- Re-factored tagging code – I simply hated the code I wrote for tagging things. It was clunky, didn't integrate well into the model, and was hard to manage. Hello acts_as_taggable. Although not perfect and less than stellar in terms of documentation, it was extremely easy to install the plugin and customize it to suit the needs of this site. It also helped me to DRY up some of the code and learn more about polymorphic and through associations.
- Most Popular Albums – This one was just a bonus so to speak. I needed a filler on the left-hand side of the frontpage since I decided against having a 'Moods' section on the site. After tinkering with the observe_form helper, I had a pretty cool feature up and running. The little panel displays the most popular albums collectively or by genre. You can even just select a genre from the drop-down menu and it automatically updates the listing. Word!
- Website Feedback – I needed a convenient means to allow users to submit feedback to the site whether it be general feedback, a bug report, or perhaps even a feature request. Nonetheless, I learned something very cool about Rails and that's the fact that you can have table'less models. Yep, that's right and they act just like real models in terms of validation, etc. Interested yourself, check out this article.
With all that said, what's left? Well, I have 13 more days until December 31st. My plan is to have it released right before the ball drops signaling New Year. Here's what has to happen between now and then.
- User Profiles – I need to craft a section so that you can both view other's and edit your own profile. I don't suspect that will take more than about half a day or so, but I want to make sure it's user friendly and affords the user the ability to easily access/edit content they contributed to the site.
- About the site – It's a tradition, each time I develop a new version of the site, I dedicate a page that talks about the history, including screenshots of previous iterations that clearly demonstrate how the site has evolved for the better over time.
- Stability testing – I've pretty much written all I can write for now in terms of unit tests. I have about 100 or so more functional tests that I would like to write prior to release to ensure functional stability. Like I mentioned previously, I'm not too concerned about the interface testing prior to release. I will work on that between Christmas and the New Year, but it surely won't delay the initial deployment into production.
- Webcam panel – Although it's sitting there like a bump on a log on the frontpage, none of the buttons have code behind them yet. I'll work on that, but it's a relatively miniscule task compared to the rest.
Well, it's 3:02AM here on Monday, December 18, 2006 and I'm pooped. Time to pop a movie into my faithful XBox360 and hit the hay.


