The other day I woke up, reached for my glasses and dropped them. On the way down, they brushed against my nightstand, and as you could imagine, the lenses were scratch in the process. I had two initial thoughts. The first one was to see if I could "clean" the scratches off the lenses. "Maybe they weren't scratched at all! Maybe they're just smudges! I bet with a little elbow grease I can get this out." My second thought followed shortly after I concluded that the scratches were permanent. This thought was, "oh no, I REALLY don't want to have to go back and order more lenses". Let me give you a little backstory...
I had recently used a product called Helicon Ape for another project I was working on. Getting right down to the point, Ape allows me to run a set of familiar Apache modules on my instance of IIS all using the simplistic approach of editing an .htaccess file. Seems too simple right? Nope!
Recently I began working on a project that will integrate with Basecamp's API to fetch and sync data back and forth. My approach to the application was simple. I began by designing the interface, marking it up, and getting some basic jQuery interactions functional. After a few hours it was time to begin working with Basecamp's rather simple to use API.
Until recently, I've had the ability to perform all of my ColdFusion (and other various web) development directly on a server of some sort. My IDEs have always included integrated FTP or RDS support, so the workflow was pretty seamless, and I never had any concerns. After we finally decided to embrace SVN for our source and version control solution, my day-to-day operations were about to change. Instead of working directly on a server, I would have to begin developing everything locally and committing my code changes into SVN for an eventual deployment to the beta server. Setting up ColdFusion isn't terribly difficult to do locally, and typical installations and configurations can take less than 30 minutes since Adobe bundled a "built-in" web-server to be used with ColdFusion for simple development environments. That was just it — I knew that my requirements for a development environment were not going to be simple. For one, I would need the ability to run multiple websites concurrently. Secondly, I would like the ability to tweak settings and install additional modules to my web server if need be.
I've used a half dozen modal window plug-ins for jQuery and most have pretty extensive features and options. Somehow I tend to always come back to jQuery UI's dialog. They've done a pretty fair job at creating a versatile and customizable modal window feature. Any container can be turned into a modal window with a simple .dialog() method chained on. The problem that I ran into recently is that when you launch the dialog window, the only way to close is by doing one of the following:
I was recently asked for some jQuery help by a good friend. The task at hand: Hide all inputs in a given form and display their values in a span. My first thought was how easy this was going to be using just a few lines of jQuery, and then I began to analyze why this would make a great blog entry. I've written literally hundreds of content management applications. I typically build a form to handle both the addition and editing of records from my database. I then create a "view detail" mode of some sort. I've always disliked the somewhat redundant task of creating another screen containing the same data, only not in form fields. Using jQuery, we could absolutely simplify this process and eliminate the mundane task of creating redundant "modes" for an application.
I've always appreciated how many social networking sites like Facebook display date/time stamps for status updates. Instead of simply dumping out a date and time, they calculate the relative difference from the time the status update was made to now. This is extremely useful because 3 hours ago means a heck of a lot more to me than May 14, 2010 5:41 AM. Calculating date/time differences has always been easy in ColdFusion, but generating a string like this would probably require a tiny bit of work.
Most websites these days are pretty cut and dry. The only interaction that occurs is when a link is clicked or a form is submitted. On occasion you may see a navigation item change when the mouse "rolls over" it. The web doesn't have to be this boring though! In the past you had to jump through hoops to add more interaction to your website, but with jQuery, it's finally a piece of cake to handle actions associated with specific events..
Two years ago my previous employer bought me a Macbook Pro, and I was asked to give up my cherished PC. I didn't particularly want to switch to a Mac, but I've always enjoyed the idea of "getting on the bandwagon", because frankly -- I'm that kind of guy. Within a matter of months, my thoughts and feelings regarding Apple and their products evolved into something short of an obsession. It's safe to say that I drank the Kool-Aid, and was completely hooked. Today I look throughout my house and can count about 10 Apple products. Between my wife and I, we pretty much own 90% of the products you offer.
I often get labeled as a "fanboy" of Apple, and to be honest, I think I'm OK with that. It is one thing to be a fan of a product that is in one way or another subpar, but it is another to be a fan of product that is (dare I say) just shy of perfection. Let's face it, love 'em or hate 'em, absolutely nobody can deny that Apple products are the perfect balance between form and function. That is a claim I can't make about any other manufacturer in the world.
I am currently happily employed and not actively seeking employment at this time. While I appreciate any and all interest in my skill-set, I am currently not available for a full-time hire. If you are interested in my skill-set and would like to hire me on a part-time basis, please contact me.Contact Information
To avoid having my personal contact information floating freely through-out the internet, I have withheld my personal contact information from my resume. If you are interested in contacting me, please do so on my contact page.