I thought I'd list out my technology road map for 2009. I'm writing this out today so that I can refer back to it over the year and try to keep myself on track.
For me, 2009 is all about skills advancement. I've been (happily) mired in ColdFusion and PHP work for more than 8 years now and want to expand what I can do and how I go about doing it.
The technologies below are not listed in any particular order but I did want to note that, as of today, I am actively working on three of the technologies below (Aptana Jaxer, Ruby on Rails, and AIR) alongside my regular ColdFusion, PHP and Flex projects.
Aptana Jaxer: The first Ajax web-server. Akin to
PHP,
ColdFusion, and similar middle-ware server technologies,
Jaxer allows developers to use JavaScript as a server-side language to access files, connect to network sockets, connect to databases, and more.
Jaxer Projects:JaxerMVC -- A Model-View-Controller framework for JavaScript-backed applications running on the Aptana Jaxer server. Track the progress with this label/thread of posts:
JaxerMVCBloxer -- The ubiquitous blog application. Building this simply to get into a wide range of Jaxer technologies and features. Track the progress with this label/thread of posts:
BloxerRuby/Ruby on Rails:The hot "new" language on the web.
Rails is an ecosystem (more than just a framework) for building web applications built on the
Ruby language. It also embodies a new approach and thinking about the web and applications.
Learning: I will readily admit, I am REALLY enjoying learning Ruby and Rails. This is the most fun I've had developing since I got started with ColdFusion 4.5 back in 2000. I've recently finished reading through
Rails Up and Running, 2nd edition from
O'Reilly in conjunction with
The Ruby Programming Language (also from O'Reilly) and freaking loved it!
I'm now reading
The Art of Rails from
Wrox. I have to mention that I am not normally a fan of the Wrox books. They're okay but I find most often that O'Reilly books work better with my brain. However, this book should be considered a MUST for any new Rails developer. This is not a how-to book. It's about the mindset and perspectives that Rails, well, requires. It takes your Rails knowledge to a whole new level in that you see new ways to think of your web applications and how to build them. Very, very good read.
Ruby on Rails Projects:
My Mutt
-- I'm very excited about this project. My wife (an editor and sometimes writer) and I are BIG dog lovers. We have two of our own and both do what we can to help out our local humane society. In an effort to help not only our little humane society (
Second Chance Humane Society in Ridgway, CO), we came up with My Mutt. It will be a resource site to assist prospective dog owners locate a local shelter or rescue organization, learn about breeds and dog behaviors, review everyday dog items such as food, toys, leashes, beds and the like, and create a page for their dog -- a social network (of sorts) where dogs can connect to other friends (My Pack), post photos and microblog updates.
Our hope with My Mutt is that users across the States will find it and contribute (providing reviews of existing items, new items to the site, etc.), thus expanding a knowledgebase of dog-related information.
Adobe AIR/Flex:The easiest way to build rich internet applications (RIA).
Flex and
AIR (online/offline desktop applications running on the free
Adobe Integrated Runtime) utilize the ubiquitous Flash Player to server rich content to clients. AIR applications can be created in either the standard web languages (HTML, CSS, JavaScript, XML, JSON, etc.) or Flash-based ones (MXML and ActionScript 3).
AIR Projects:I have three AIR projects in the works. One is a goofy Fantasy Baseball statistics tracker for my brother-in-law and his buddies. They've been playing since the early 90s and use a custom scoring system that does not work with current fantasy services. The application (MLB-TOFL) pulls XML stat data from a web server, stores it in a local SQLite DB, processes stat data, and updates rankings and standings.
My other two AIR projects are just for me (and if they don't suck, I'll release them). One of these is a port of the
jQuery documentation to an AIR application. I love these (have one for ActionScript and another for ColdFusion and they beat the hell out of using a browser to access it over the web or from your local files). THe other project is an XML visualizer. Lately, I have had the unenviable task of sifting through large XML files (sans DTD or Schema). I wanted something where I could load an XML file and have the structure displayed visually without all the data mixed in.
Flex Projects:I have two Flex projects going for clients, one of which is freaking awesome. Because these are for large, publically known clients, I cannot offer more now.
PHP:One of the stalwarts of server-side languages for the web. PHP has been around since 1995 and is arguably the most widely used server-side technology out there. It has a robust feature set and incredibly diverse and helpful community.
PHP Projects:SFA Network -- I am rebuilding a web application for the Spiritual Formation Alliance Network. This version of the site is being completely rebuilt from it current codebase in ColdFusion 8 with a SQL Server 2005 database to a PHP 5 codebase backed by MySQL5.
Note: the switch in codebases had nothing to do with CF and everything to do with Windows and SQL Server hosting and resource costs. We will deploy the new application (in late January) on
Aptana Cloud's service.
As I got rolling with this project, I started to research what new frameworks were out there for PHP folks. After some research all I can say is WOW! There's a lot out there for PHP developers now that didn't really exist when I got going with PHP in 2002-2003. After a good bit of deliberation, I decided on the
CakePHP framework (in a close call over
CodeIgniter). I hope to use CodeIgniter in the future (it's a very, very cool framework, too) but went with CakePHP for now because it seems to have a slightly better user/support base. However, I'm not too far into the project coding (we're finalizing the specifications and functional requirements of the new version), so if you have some thoughts, please let me know.
Java/Groovy and Grails:Is there any language out there that represents the modern incarnation of the Internet more than
Java? Doubt it. I am currently enrolled in the
O'Reilly School of Technology Java Certificate series.
Groovy is, in some ways, a port of Java (
Groovy is Java, really) for rapid web development while
Grails is a Rails-like framework for Groovy web applications. It (Groovy) gaining a lot of ground in ColdFusion, which is built on Java. More and more top CF developers are using it and, after working through
Beginning Groovy and Grails I see why. It's fast, easy to use, and opens up the entire breadth of Java without having to write so much verbose code as in Java itself.
My main motivation in taking the Java course is to get a better understanding of Java in an effort to use two key frameworks:
Spring and
Hibernate (which, rumor has it, will be baked into ColdFusion 9) in future web (CF and Groovy) projects.
Java/Groovy and Grails Projects:Nothing right now. Still deciding on what I want to do here. For now, it's just some learning that I can better apply to my ColdFusion projects.
Python/Django:Yes, there's more...
Python is another dynamic web language (ala PHP and the like). It employs a terse syntax and, from what I read, is pretty easy to pick up and has solid performance benchmarks.
Django is a web application framework for Python, touted as a quick-to-deploy system (I guess you can code really, really fast!).
With the release of Python 3 this past month and Google using Python so heavily across Google Apps, I didn't feel right leaving it off my list. Oh, and my wife needs me to learn Python to install and configure an open source project to control the public computers at our local library. Ah, hell, who am I kidding? I'm only learning it so that my wife will stop badgering me to learn it! Of course, once I learn it, she'll badger me for more shit but what can we spouses do :)!?
Wow. I have one helluva busy 2009 ahead of me!!