September 2005 Archives

I am never satisfied. I've been working on this thing for more than six years now. I finally rewrote it and rewrote it and rewrote it until I actually had something useful for the CIS Support Site. I think I've counted about ten major rewrites (or sometimes full do-overs) up to this point, so this makes the latest rewrite I embarked on two weeks ago number eleven.

In April, I suggested that I was Outgrowing Mason. Assuming that I complete the 0.11 branch of Contentment, Contentment is no longer Mason-based. Mason is really a nifty thing that I will use again, but Contentment was really abusing it. Mason is kind of a mini-CMS with a custom templating language, rudimentary file handling, and some other extras. The templates use Perl embedded in text which is neat-o for rapid templating of stuff—which is what I wanted with Contentment in the first few revisions (especially back before I knew that what I was doing would become Contentment 0.7—a do-over since 0.5 was a completely different code base). Mason mirrored some of the features I needed.

What I wanted at the time, was a way to easily identify the type of a file and dynamically convert that into HTML and then render that HTML in a custom theme. I also wanted the ability to auto-generate indexes of the files. The system used no database and, though I experimented with it a couple times, no caching. However, as I moved through Contentment 0.9 to add database support, form-handling, improved theming, etc. things started to get messy. The layered file system Mason wants to use is really not very flexible. Technically, you're supposed to be able to replace the file system resolver module with a custom handler, but that doesn't work very well. I did it, but had to hack in a couple of ugly spots to get it to work.

Also, embedding programming languages into text is my idea of a bad idea for anything but the simple. In my opinion, logic and content should not mix whenever possible. Thus, most of my Mason components were either 95% Perl or %95 HTML with a smattering of Perl. I don't need Mason in this case, I can just use Perl scripts directly or a templating language that doesn't mess up my HTML with embedded Perl.

Finally, Mason really hates handling non-Mason content. I'd managed to do it through creative use of autohandlers and dhandlers, but the solution was slow and unsatisfying. Contentment doesn't care what kind of file it's serving, so Contentment and Mason were again mismatched.

Without Mason, I was suddenly freed of several restrictions. Before I had organized the entire layout of the web documents under a directory named "docroots" which contained a "master" document root and a "site" document root, which were layered on top of each other in the usual Mason way. This was ugly. It made it hard for anyone unfamiliar with the system to find the files they were looking for and it resulted in all the features of Contentment being mixed together with a minimum of encapsulation. (I'm a computer scientist, I must have encapsulation!)

Additionally, each installation of Contentment required it's install directory to work well (including a generated Contentment::Config module to tell the system where to find it). This meant that the typical CPAN installation could not work well. I want this module to install with the usual CPAN way because it makes adoption of Contentment that much easier:

cpan Contentment

WIth the 0.11 rewrite, I now have a single document root, named "htdocs" (a familiar title). I have moved all of the Contentment specific stuff into a folder named "plugins" that separates the functionality into logical groups that can be loaded or not. This layout also eliminates the need for a custom library install and configuration module. Now, you just need to know where your plugin directory is kept.

The CPAN install thing is still a little iffy because while just running the above command should work (once I make a release), you won't have a working install without a plugins directory, the htdocs put into the correct place, and some other configuration. I'm working on a post-install setup script that will help with the rest. Since we have to configure a web server to use the app, I can't see how we can get it any simpler than this. At this point, the install looks more like:

cpan Contentment
cd ~/.cpan/build/Contentment-*/
bin/setup-contentment

That won't work everywhere, so I'll probably come up with directions assuming a direct download and let the CPAN'ers figure out the rest from that. You'll have to read the docs to get anything useful anyway, so it's probably not a big deal.

Anyway, I really, really like where this is going currently. I'm hoping to have the old system dropped into 0.11 in another couple weeks and to have my web site operating off of it shortly thereafter. We'll see. I also need to update all the documentation. It's mostly right still, but the changes will require some tweaking.

Cheers.

I have for sometime used a little useful feature of Mac OS X. I dunno if a lot folks know about it. It's a simple thing, so I'll keep this short.

I do a lot of web and server programming. Debugging servers usually involves lots of logs. As such, I spend a lot of time examining things using tail -f foo.log in terminals. However, on my PowerBook, there's a useful alternative that I use a bit more often: Console.app.

This is the utility that Apple ships to view the system logs (the console.log is pretty useful when diagnosing some application issues). It's more or less the equivalent of the Microsoft Windows Event Viewer, except that Mac OS X keeps it's logs in text rather than as binary data that requires a special viewer to examine. Anyway, I was using the console.log to debug an app once several months ago and noticed a "Open..." option in the File menu. You can use this to open any text file on the disk, which is very handy when you've got logs in your home directory for development and such.

Anyway, I find myself frequently using this instead of tail -f for it's filtering features and that it's not consuming a terminal that I keep wanting to use to run other commands in.

Cheers.

This is not about a TV show, but about the west wing of Nichols Hall, the building where I work. The CIS department fills up most of the west wing of this building on KSU campus including all four floors. However, if the design of this building was a positive for the CIS department in the past, I believe the design of the building itself is inhibiting CIS as a department now.

First, let's overview the arrangment of the floors. Thanks to facilities and Travis I can include some maps to help you see what I'm talking about.

Starting with the basement, we have four computing labs and two sets of offices for graduate studennts. Room 16 contains our main classroom lab and houses 24 PCs running Microsoft Windows XP. Room 16A contains offices for a half-dozen or so graduate students. Room 19 contains offices for a couple dozen graduate students. Room 21 is space that CIS gave to CNS for a general public lab for the whole campus to use (and is used by CIS for some of our 100 level courses). Room 22 is (as of a week or so ago) our special projects lab to be used whenever a faculty or student requires software that will break a normal lab machine and make it unuseful to other students---it's the smallest and least used lab. And Room 24 is the robotics lab, which is mostly used by our software project course and the department head of the CIS graduate school. The rest of the space is used by the department of Speech, Theatre, Communication, and Dance.

The other three floors are separated from the east wing by a large, three-story high atrium, which features a large mural depicting the various uses Nichols has been put to. (Nichols Hall does have an interesting past ranging from basketball stadium and swimming facilties to victim of arson—possibly in protest to the Vietnam War—to home to a very diverse set of students in computing and the oral and dramatic arts.) On the west wing, the only room that isn't used by CIS is the main office for SCTD just right of the atrium as you enter the building.

On the first floor, we have our main server lab, two student computing labs, two classrooms, two research labs, and the offices for the systems staff. Nichols 114 is the server lab for the department and includes raised flooring and an enormous and ancience HVAC for cooling. Nichols 116 is my office. Nichols 117 is the office of Travis and Tyson. Nichols 118 is the office of Cole and Andy. Nichols 119 is a research laboratory used primarily by Dr. Andresen. Nichols 122 is the largest CIS classroom capable of seating about 50 students. Nichols 123 is Earl's office. Nichols 124 is a research laboratory used primarily by Dr. Hsu. Nichols 126 is our mixed Linux/Windows computing lab with two dozen PCs and room 126D is a small conference room off to the side. Room 127 is our other classroom which seats around 30 students. Finally, Nichols 128 is our Linux lab with 17 PCs running Linux.

The second floor is mainly office space for faculty and staff. The main office is in Nichols 234 and the conference room is in room 236 next door. Room 237 is office and lab space primarily for Dr. Deloach's students. Room 232 holds the break room, mail, and copy machine. The department head's office is in Nichols 234C and the administrative staff is in N234 or N234B. The advisor's offices and the accountant are off of Nichols 232 and our library can be found in Nichols 233 off of Nichols 232, which houses our journal subscriptions, course books, loans from the main library, copies of papers published within the department, and a small meeting area where the systems staff have our weekly meetings. Nichols 218 is south of the break room and contains cubicle space used primarily by Dr. Hsu and the offices of Todd Wallentine, Dr. Stoughton, Dr. Hsu, and Dr. Robby (and yes, that is his only name, "Robby"). Nichols 219 holds cubical space for more grad students and some research space for Dr. Neilsen. Off of Nichols 219 are the offices of Dr. Schmidt, Dr. Andresen, Dr. Amtoft, and Dr. Nielsen. In the corridor between the faculty common rooms is room 223 which houses a lecture recording studio for online lectures. Room 227 holds more grad student offices and some research machines for Dr. Hsu and Dr. Hankley. Off of this area are the offices for Dr. Howell, Dr. Gustafson, Dr. Mizuno, and Dr. Hankley.

The third floor is all office space for graduate students (especially Ph.D. students), research staff, and faculty. Nichols 316 houses the main cubicle space for Ph.D. students and a few extra machines for use by them. Room 317 is also space for Ph.D. students. Rooms 318, 323, and 324 are utilized primarily by the SAnToS research group for offices. Off of room 324 are the offices of Dr. Deloach, Dr. Banerjee, Dr. Singh, and Dr. Hatcliff.

Okay, now that we know what it looks like, what's wrong? I think the primary problem with the buildings design is that it enforces a fairly segregated and professional atmosphere. Some of the younger staff have taken to occassionally started calling Nichols, "The Prison" or "Nichols Penn" because of all the doors and small spaces. The only open space in the building is the atrium and that is generally considered the territory of the more outgoing drama nuts and dance majors. Furthermore, there's no part of this space that could be useful for studying or relaxing (at least from my perspective) because the only places to sit are hard wooden benches with either no backs or backs designed to look cool rather than for comfort. Why would I relax there when I can go to a lab and sit on a cushioned office chair? There's no table space for those with laptops either.

Anyway, that leads us back into the confining spaces of the rest of the building. All the labs have heavy wooden doors that remain closed at all times (as per the fire marshall's requirement). The building's original windows remain in place, unmoved, which is a problem because the building wasn't designed with the same layout it currently has, so some of the windows, such as in N114, 116, 117, 118, and 127 are too high to see out of or deliver much light. Also, Nichols 119, 124, and 128 have no windows making for a very cave like feeling (especially 119 and 124 which don't even have interior windows). Of all the space, N126 should be the most open as it is on a corner and has lots of windows, but we've ruined that by putting in cubicle dividers, the study space in the back of the lab with the extra high dividers is an especially heinous window blockage, in my opinion—and serves little purpose since few students even know what's back there, so it's largely a dusty, unused space.

The other floors are similar. The basement is as basements tend to be, very cave-like. Nichols 16 is better than the rest, but is generally stiflingly hot because of poor air circulation—we hope to work on the problem soon. Nichols 19 has high windows that barely let in light. Nichols 16, 22, and 24 have no windows. I won't complain too much about this space, though, since I'm not sure what could be done (accept for better lighting and decore). It is a basement, after all.

The second floor and third floors are all doors. They really scream, "Go away! You don't belong here!" You have to go through at least one door to get to any professor's office door and most will go through two, three, or four doors before they even reach their professor's office. You will also have to turn multiple corners to get there. All of this presents an aura of unwelcome to students. The systems staff offices are similarly foreboding being down a back hall and around a corner that dead-ends in an unmarked door that is two steps up. Then each of our offices has a closed, solid-wood door (closed again as per the fire marshall's requirement).

All of this means that while students are supposed to be in the basement and first floor for classes, the faculty are all above the fray in offices on the second and third floors. This is nice for research staff because it means fewer interruptions, but it also means that there are extra psychological barriers to cross for students that might ask for help. Some students don't even know how to navigate the confusing labrynth on the second and third floors and don't want to bother trying after seeing it once.

Having the systems staff segregated from the main corridor is convenient for us, especially since we have no first tier support to help students, staff, and faculty with common and small problems like CNS has. However, it also means that I get a lot of apologies for disturbing me when they come ask questions (of course, that might be because I have a tendancy—unintentional, I assure you—to glance murderously at interruptions, or so I'm told by my wife). Anyway, it's still very foreboding and segregated.

Next, our decor really sucks. Most of our walls are an odd off-white hue with a tinge of purple. The floors are generally plain white tile, except for the main corridors, which are brick tiled. The lighting in this building is frightful as it's nearly all uniform flourescent tubes with their flickering, 60-cycle, greenish light that is oh so nice on the eyes. We've now replaced all the incandescent flood lamps in the halls with energy saving, twisty, flourescent tubes that look rather stupid in their sockets, bare and flickering themselves. The accents on the walls is also very plain and functional—generally limited to bulletin boards, display cases, and pictures of former graduates. The only place we had something more interesting (and even personal!) was on the second floor where our former janitor had placed pictures of her children and grandchildren, but those were taken down (sadly, that was even before she retired because God forbid that we actual have personality in the department!).

Finally, there is no place for students to take a break and for them to make Nichols a comfortable home for themselves. We need a place with a couple computers, a couple televisions, a telephone, a microwave, a couple couches, and a table—a space that's just open, pleasantly decorated, and relaxing. I know for a fact that nearly every senior class recently exiting our program has asked for this in their exit interviews. My class did and we've all been told, "Probably not."

I've talked it out with my staff and we've even come up with a plausible location for such a thing. Nichols 126 would provide an ideal location. Nichols 126 is especially ideal because it already has bathroom facilities on the south wall. If we split the room in half and used N126D and the south half of N126, we could have a fairly nice lounge facility. This could work even better if we could move part of the lab facilties in N126 into N119 (or even half of it), which is, in my estimation, currently underutilized as work space and overutilized as storage space.

Anyway, can it happen? Yes. Will it happen? Sadly, "Probably not." I think the faculty want to really improve faculty/student relations in theory, but I haven't been convinced they want to in practice. Some of them do for sure, but it seems like they are still trying to do so professionally. This generation of students doesn't buy into the "professional" mentality. Lots of them have long hair and such that they'll only cut in order to make money, but would rather work for a company that doesn't care. The companies that don't care about traditional notions of professional protocols are the ones that are making the headlines. The one that is probably the most famous is Google. They put fussball tables in the middle of their office space. They have a whiteboard along one wall that's reserved for doodling. A friend of mine works (or used to) at a company called Quantam Leap and he said they took breaks by playing risk and using fussball to decide the outcomes of battles.

Environments that encourage having a life in addition to professional productivity are becoming important. Especially because it's been shown that workers are more productive if they can really relax and be a person while at work. If CIS is really interested in impressing students that they are important and encouraging them to see CS/IS as something more than just a way to make money but an interesting endeavor in and of itself, we're going to have to start sharing personally with them. I think that remodeling our foreboding space to encourage students to interact and a way to get faculty to stop being so serious as a part of that vision.

Anyway, that's just my opinion. Take it or leave. Cheers.

About this Archive

This page is an archive of entries from September 2005 listed from newest to oldest.

August 2005 is the previous archive.

October 2005 is the next archive.

Find recent content on the main index or look in the archives to find all content.