My Little Corner of the Net

Discovering MODx

Many people who know me know that I am not a big fan of most web content management systmes (CMS). In general I have found that the hoops these systems make you jump through to set up and manage sites far outweighs the benefits they bring for easy content maintenance.

I am not, however, a content guy. I’m a pretty good editor, but as far as writing original content is concerned, I suck (that’s probably why I blog so infrequently). For that reason I am trying to offload some of the website responsibilities for Tay House onto other people. Bringing more people into the mix means that I need an easy way for them to manage the site without them being able to screw up my design (I’m kind of anal about that)–and doing that pretty much points to using a CMS.

A couple months ago an online acquaintance asked me to get involved developing a CMS called OpenLeaf. Openleaf was a fork of another CMS called Immerse and I was rather impressed by it—it had a nice interface with full control over templates, custom template variables, and a nice live edit feature. Unfortunately OpenLeaf was still rather immature and I didn’t have the time necessary to develop new modules to do what I wanted, so I found myself doing a lot of things by hand. Because of the trouble finding talented developers to assist with the project, it now seems to have been shut down, too. Too bad, too, because it has a lot of promise.

Last week I started looking for a new CMS for the Tay House site and headed to OpenSourceCMS.com to check some out. After reading a couple of positive recommendations for it on other sites, I decided to take MODx for a spin. After playing with the admin interface on OpenSourceCMS for a while, I decided to download and install it on one of my servers and I’m happy that I did. Within about an hour I had my templates built (the design, base XHTML, and CSS were done in advance, of course) and I was already starting to implement features like automatic menus and breadcrumbs.

Ironically, MODx and OpenLeaf are distant cousins—MODx is a fork of Etomite which was evidently originally developed by the founders of Immerce.

MODx has a very active community with lots of contributers providing code. So far, for everything I’ve wanted to do, I’ve found a solution. MODx makes it easy to build complex sites with the use of custom template variables, chunks, and snippets.

Template Variables (TV’s)—One of my biggest frustrations with a lot of CMSes is that they provide a single “content” field in their editors. I often create designs that have multiple areas where I’d like to include content–and often its not just display content but rather, perhaps, a variable CSS class to affect styling on certain pages or something such as that. MODx allows me to create as many custom template variables as I need in a variety of formats, such as text fields, rich text fields (WYSIWYG enabled textareas), or dropdown lists. MODx isn’t quite as flexible as OpenLeaf in this regard, but the difference is so minor its hardly worth mentioning.

Chunks—Chunks are nothing more than little pieces of HTML, stored outside of the main templates, ready to be shared across pages. In my templates I’ve been putting my common headers and footers into chunks—that way, at redesign time, I only have to change them once to change the whole page.

Snippets—Snippets are little pieces of PHP code that make up the real power of MODx. Want to insert the current date on a page? Add a snippet. Want to build a menu of all child pages of the current one? Add a snippet. Snippets can also reference chunks to display different information based on certain circumstances, making it really easy to build dynamic, easy to maintain content–including validating forms–without having to break out of the CMS.

Within a few hours of the install I had a fully working site (sans most content, of course). I’m now making tweaks–for example, in one section of the site I wanted to add previous and next links to easily move between pages, which the PrevJumpNext snippet is designed to do. However, PrevJumpNext has a ton of options and to get the output I wanted required me to pass about ten different options to the snippet and that still didn’t still didn’t get me exactly what I wanted. With about a half-hours work on a lunch break the other day, though, I was able to trim it down to “light” version that does exactly what I need with no fuss.

While I still have reservations about CMS tools in general, I’m already thinking of how MODx can help me with other projects I want to take on.

Upgrade to WP2.7

I am horrible about keeping WordPress, the software that powers this blog, up to date. Even though the upgrade process has always been fairly simple and has never given me problems in the past, its manual nature always leads me to put it off until that utopic period of free time I am always envisioning.

Tonight I decided to upgrade to the latest version, 2.7. I’ve heard lots of good things about this version and, so far, I like what I see. The new admin interface, while perhaps a bit more monochrome than I would have designed, is very clean and easy to use and all of my plugins (not that I use that many) are working without issue. Perhaps best of all, though, is the fact that this version comes with an automatic upgrade feature, so I’ll never again have to put off a manual upgrade…I hope.

Next on the list is upgrading my custom theme. The sites current design is something I thew together for a blogging tool I was writing myself but have long since abandoned. It was actually my first attempt at a fully CSS-controlled, tableless design. When I switched to WordPress 1.x I brought the design with me and later adapted it to be a WP2.x-compatible theme. But, alas, I haven’t kept up with the developments of WordPress, so my humble theme doesn’t support many of the “new” features like pages, widgets, or tags.

I’ll begin the upgrade as soon as I have some free time…

It Must Be Christmastime

I’ve seen ads on TV for both The Clapper and Chia Pet tonight on TV.

Say Goodnight Gracie

A pretty major event occurred at RIT on Monday, but hardly anyone probably noticed. It wasn’t marked by any sort of fanfare or celebration, just a simple email that popped up on my screen saying “Mike Young has completed a PCR.” And with that the “Grace” web server was retired.

Anyone who’s spent any time on the RIT campus knows Grace. Over the years the venerable Digital Unix cluster has served many purposes. For many years it was one of two main email servers for the campus. It also handled file sharing. But most people know it as the web server.

In actuality, grace.rit.edu is nothing more than a shell server. All it handles—and all it ever handled—are shell connections (telnet and later SSH) and file transfers (FTP, SCP, SFTP, etc.). It is but one small piece of the whole OSF environment but, as the most people’s primary gateway to the other OSF services, it is the best known.

The OSF environment was a powerhouse in its day, but with the acquisition of DEC by Compaq and the discontinuation of Digital Unix it eventually became a dinosaur. Like so many enterprise systems, though, moving on was difficult to do, so “Grace” kept chugging even though she couldn’t support anything newer than Apache 1.x and PHP 3.

Grace was the server through which I published my first website. I still remember going to the ISC (now ITS) HelpDesk, then in building 10, to request a Grace account. Once I got it, I had to sit down with the Unix tutorial the HelpDesk provided and Harley Hahn’s Student Guide To Unix before I could figure out how to use it because I had no clue about Unix and vi had me stumpped, but I persevered and, thanks to Grace, became pretty proficient with Unix in the process.

About two years ago, after a wait of what seemed like forever, a new web environment was brought online. The new environment, running on Solaris, is much more modern and can scale to the institutes needs much better. The new environment also replaces the illogical department-number-based URL structure of “Grace” with a more meaningful hierarchical structure that makes URLs easier to share and remember. During the transition, sites not yet migrated to the new environment were proxied through it to ase-web, the “Grace” web server. Last Friday I had the honor of disabling the last remaining proxy and making way for the event that happened on Monday.

On Friday the Grace shell server gets switched off and we officially close another chapter on computing history at RIT. Then we party!

I’m a Terrible Bloggger

I’m looking at my blog and realizing that I haven’t posted anything since August. I am terrible about this whole blogging thing—every time I get going and I think I’m going to start blogging semi-religiously I stop after one or two posts.

A lot has changed since my last post. The most significant thing probably being that I have a new job–and it’s kind of funny how it happened.

As many of my loyal readers know (OK, nobody reads this, but what the hell, it sounds good) I was having a really rough year last year at work. With a never-ending project that changed every other minute, a horrible performance review because I could not keep up with said project, and the inability to take vacation time until the project was complete, I decided that it was time to get out. I posted my resume on Monster and a couple of other sites and, of course, got tons of recruiters offering me temporary positions in cities I’ve never seen doing jobs I’ve never done. A couple of decent prospects did emerge, though—one job with a small software company in Rochester and another at the U of R. At the same time, my department was looking for, and hired, a new manager because my old boss decided that she wanted to step out of the managerial role she was in and took over an open instructional developer position.

Unfortunately the U of R position never went anywhere. The recruiter said they were having trouble securing funding for it, and I guess it kind of fizzled. Too bad, because that one sounded really good. While I was burning up vacation time at the beginning of July (after being unceremoniously removed from the never-ending project, which a little bird (i.e. my former no-longer-a-manger boss) told me last week still isn’t finished) I got a phone interview with the small software company. It went well, but I wasn’t sure it was the right fit for me. Nonetheless they asked me for an in-person interview and I agreed. In the meantime my new boss started. I had a “get to know each other” meeting with her the day before that interview and my whole outlook on my then-current job changed.

I was never really confident that I’d like the job for which I was about to interview, so I went into the interview with my mind pretty much already made up that I wouldn’t accept an offer if they made one. I left even more convinced of that. As luck would have it, they made an offer a few days later. Although they offered me more than I was making at NTID, it wasn’t that much more and it came with a lot less benefits, so I naturally declined.

Things were going pretty well at NTID when I got a call out of the blue from a contact in RIT’s Information Technology Services department. He had just posted a job and he wanted me to take a look. I had already seen the posting but decided not to apply because my other attempts at applying for jobs in ITS went nowhere. After talking with Chris I reconsidered. After a few rounds of interviews I received an offer, which I accepted (more money, bigger responsibilities that are more in-line with my interests, plus I get to keep all the benefits I’d accumulated at NTID—why wouldn’t I).

So I am now a Senior Programmer/Analyst with ITS’s Enterprise Web Services group. I am essentially responsible for all of the software that powers our web environment—from Apache and the PHP interpreter down to the individual PHP apps that people use to maintain their sites. I also support the users by managing accounts and responding to help tickets and I will soon assume some administrative duties for RIT’s Red Dot content management system implementation. I also occasionally get to climb up to the roof of campus buildings to find ideal locations for new webcam installations. So far its going well—every day I am extremely busy and I am constantly juggling a ton of small jobs at once, but at the end of the day most of those jobs are done and I start fresh the next day.

My new workgroup is cool too—everyone is friendly and the dynamic is much different than at NTID. People joke around and prank each other all the time and people actually go out to lunch together and socialize outside of the office. It definitely lifts the stress that comes with the amount of work that there is to be done. That kind of rapport was largely missing from NTID.

So, I think I’ll stick around. Of course, Chris told me that I can leave at anytime—so long as it is after he does—so I guess I don’t get a choice in the matter!

<