Thursday, January 17, 2008

Linux Desktops, I think I'll live....

Recently my beloved Apple Mac Pro began acting up so much so I had to engage Apple Care (Apple's support branch). They sent out a technician to replace my "logic board" and that didn't help. We then had them replace the video card, no help. At that point we took it to the local Apple Store and they replace the logic board and the RAM riser, no effect. After two months or so of not being able to work on my Mac I finally called their Customer Relations department. They reviewed the case, agreed it was ridiculous and are sending me a brand new, shiny Mac Pro (8 core, etc). I am quite pleased with Apple for this but that's not what this is all about..

During this journey I built a new workstation (and by I, I of course mean a minion) and put kubuntu on it (the KDE version of Ubuntu) and I have to say I love it. I have everything I had on my Mac without spending a lot of money on software and I'm practicing what I preach (Open Source all the way). It's definitely a win-win and reversed my previous declaration that Linux sucks at Desktops and should be used on servers only. I have dual monitors, my ipod, my scanner, my sirius stiletto radio all working with Kubuntu. Now that I'm a recent convert I would encourage everyone to try it out.

Thursday, January 3, 2008

Frustration with Content Management Systems

I expect that most of us in the IT industry are responsible for several
projects at any given moment, and that we usually contribute, to varying
degrees, to a few more. We certainly would hope that most or all of these
projects have goals that are easy to understand and straightforward to
accomplish. These are the projects that most of us want to spend our time
on. These are the ones that let us feel like we're getting real work
done. We take assured steps to get where we're going, and at the end of
each day we can go home and feel like we made real progress toward our
goals.

But I also expect that most of us in the IT industry have projects that
are not like that at all--projects for which we're asked to put square
pegs in round holes. Perhaps because I'm young, I still find that these
projects sneak up on me sometimes. These projects may seem trivial
enough at first, but the closer I look, the uglier the picture appears.

Adapting a Content Management System (CMS) to an existing website is
one of these not-so-fun, nay, heinous projects. The responsibility for this
particular project has passed from person to person, and really it's spent
very little time on my own desk. Yet hearing about it, helping with it,
and thinking about it at all just drives me nuts.

You see, we have several goals within this project. We want a more
professional look and feel to our website that helps to inspire that
little extra bit of confidence in potential new customers, while showing
existing customers that we're not letting our website collect dust. We
need content, and not just a blog, that potential future marketing/sales
types with an absolute minimum of technical knowledge can modify at will.
We want to use published, full-featured software that we can upgrade as
desired and watch for security updates. Most of all, we need to do all of
this using a new, fancy set of professionally designed web pages that we
already paid for.

This has proven extremely awkward. No CMS in existence seems to be
designed to integrate smoothly into an existing, complex website. As a
developer, I can understand how it would be difficult to design such a CMS,
too. We've made a few abortive attempts at forcing together our existing
site with different CMS suites, and so far the person who has made the
most progress has been the "new guy" who didn't know that what he was
attempting shouldn't be possible.

I think there's a lesson in this for me. See, this is where I surprise you by
stopping my complaining and turning it all around to explain why I should
just suck it up.

Yes, it is a difficult project. There are more problems, too. For example,
in all our custom web applications, we separate the public-facing parts
from the internal parts, situating the latter on an intranet. Imagine, if you
will, a blog with no way for its editors to sign in over the Internet--they
would have to work locally or over a VPN. Sure, that would be easy to
accomplish in a custom application, but writing another custom application
here is one thing we wanted to avoid, remember? And that's just not a
feature that a CMS would include; its target audience is not likely to use the
software in the kind of environment that we do. And then there's the
problem of upgrading. We have to tweak any CMS tremendously in order
to use our existing pages in its template engine, and all of those tweaks
have to be preserved across version upgrades. Yet CMS software
upgrades virtually always mean blowing away existing code to replace it
with code from a brand new package, often with a different layout. Ouch.

But despite the myriad frustrations of this entire endeavor, a project is a
project, and putting things off because they're not fun gets you nowhere.
Engineers are expected to be problem-solvers, and not all problems are
fun or easy. I may have learned that I truly despise the existing body of
CMS software (yes, that includes all the latest hip CMS software, both
open-source and commercial, so don't try to sell me on one that you think
is cool), but I have also been reminded that being asked to make the
(seemingly) impossible possible is just part of the job. I don't know
whether we'll end up shoehorning our designed website into a CMS or
writing a custom solution after all, but either way, we're going to deliver
on our project, and we're going to go home afterward feeling pretty good
about finally getting it done.