After three years of building site after site, I crafted what would become my own web framework in 2003. I didn’t know such a thing was called a framework — to me, it was just a bunch of code I kept reusing, so I structured it in a fashion I learned on my first job as a web developer.
I called that project Vigilante. It’s a code base that’s powered every site I’ve built, including ones I’ve done for the office. As of today, Vigilante is officially retired.
I spent the past week moving all my sites to CodeIgniter and jQuery. I’ve had a passing understanding of the Model-View-Controller pattern for a while now, and I even toyed with Ruby on Rails very briefly. I liked what Rails had to offer, but I’m at a point in my life where learning a new language just to use a new framework is a time sink in which I don’t want to invest.
At the same time, I knew Vigilante was getting creaky, and a shift in my own personal priorities — i.e., away from coding all the damn time — made me reluctant to bring it up to speed.
If I were to move to a framework, it would need to be one that would make the transition easy. So I did what I usually do when I’m stumped about something — I asked MetaFilter.
I’d heard of CakePHP, but I didn’t like how it seemed to preclude use of the Smarty template engine. I moved all my views to Smarty years ago, and I was unwilling to recode all those templates to a new engine. As feature-rich as Cake seemed to be, it felt a bit too much, and I could foresee hours of refactoring code to line up with Cake’s expectations. I needed something a bit more flexible.
Another suggestion I encountered was CodeIgniter. In fact, it was this comment that got me curious. So I downloaded the code, went through the documentation and got something working in lickety-split.
What got me sold was the ability to move over a single application at work in a day.
So I embarked on porting perhaps the biggest application I’ve made which no one else gets to use — the Vigilant Media administrative interface, which lets me manage the content of this site, as well as Musicwhore.org, Austin Stories and the Eponymous 4 official site. I had the sense that if I could successfully move that site over the CodeIgniter, it would essentially prepare the move of the other sites.
I was not mistaken.
With the MVC pattern in place, I could effectively reuse the models between sites and built better libraries out of the old Vigilante code. Vigilante was not object-oriented, and it made maintenance tedious. With CodeIgniter, I was able to modularize that old code even further.
It took about two months to get the Vigilant Media administrative interface done. The lion’s share was dealing with the Musicwhore.org interface. This past week, I moved all my other sites over. In the past, it would have taken me weeks to relaunch just one site. CodeIgniter allowed me to turn around four sites much more quickly.
While CodeIgniter took care of the server side, jQuery handled the client-side. I’m no fan of JavaScript development, only because the DOM is frustration. It took a while for me to get a hang of jQuery, but when I did, I marvel at how I wish it were around sooner.
I’m not doing anything spectacular with jQuery — no special effects — but the simple things I can do are that much easier. Perhaps what I like most about jQuery is stripping out events in the HTML markup. I’ve always found it cumbersome to put onclick or onsubmit attributes in my layout. jQuery lets the code handle that entirely.
For a long time now, I’ve been kind of ambivalent about web development. It was just draining to develop both a framework and the sites that run it. I didn’t want to do it anymore. But I didn’t want the sites to die either.
Moving to a framework has got me interested again, for now at least. It frees up a lot of time not having to worry about the inner workings of the engine. I can concentrate now on getting the proverbial destination instead.
I still have to finish moving over the sites I built for the office.