Category Archives: Nonfiction

All of my essays, research papers, editorials, and the like can be found here.

The Layoff: One Year Later

Exactly a year ago today, I lost my job.

In so many ways, it was a first for me. I started working at this place–a software company–part-time while I was in college. The only other jobs I had in that period involved babysitting computer labs for minimum wage, and doing some consulting work for a CPA. Eventually, I left both of those for the sake of the software company, so I could work more hours there, but I was still considered an intern. The pay was better, and the work was more challenging and interesting.

Eventually, they picked me up full-time and put me on salary. It was a nice pay increase, and I got benefits, too. But, perhaps more important than that, they decided they liked me well enough that they didn’t want me to go anywhere. I enjoyed working there. I made friends. I learned a lot. The company had a strong culture of trust. You could walk to anyone else’s office, no matter where they were in relation to you on the org chart, and talk to them. The company felt like a family. They were understanding when my (then-future) wife was dealing with difficult medical issues that had me taking care of her instead of going to work. In general, they weren’t even that concerned at what times you were in the office, as long as you got your work done. Like I said: trust. They trusted you to do your work and put in the time they required.

One of my favorite stories from working there involves the new employee orientation. Mind you, this was while I was still an intern, and I’d only been there a month or two. Nobody knew who I was at that time. Most of the orientation was your typical “welcome to our company, this is how we do things” sort of presentation. I don’t recall it being very memorable. But for lunch, we went out to a nice hotel restaurant, and I ended up sitting at the table with the man who was the President and CEO of the company, not to mention one of the founders. I’m the sort of person whose instinctive reaction to “suits” is one of suspicion–that they’re putting on an act and would just as happily stab you in the back if it was good for the bottom line. But Wil was different. He spent most of lunch listening rather than talking, learning details about his new employees. We even talked about programming techniques for a while. There was no subject he wouldn’t discuss, and there was a kindness and integrity about him that I’ve seen in very few people over the years, especially those so high up the corporate ladder. Needless to say, he made a strong impression.

After lunch, we headed back to the office. I rode with one of the other Vice Presidents. I realized sometime later that I’d lost my keys somewhere–most likely in that same VP’s back seat. Now, VPs being such busy people, he was booked up in meetings for a while. So, I checked his schedule and went to wait by his office around the time his last meeting was set to end. Meetings being meetings, it apparently went long–he didn’t come to his office, in any case. Along came Wil, who had probably just gotten out of a meeting himself. He remembered my name, asked me if I was looking for someone, and I explained the situation. “Well, let’s go find him!” he said.

And that’s what we did. We went to the meeting where the VP was, who gave us his keys so I could go get my keys. I retrieved them, handed the other keys back to Wil, and thanked him for taking the time out to help me. It certainly wasn’t something I would have asked him to do. But that incident always stuck out in my mind as exemplary of him, someone who would always take the time out to help someone, even if it’s with something trivial.

Time passed, the company grew to over 500 employees, and I got immersed more and more in their development processes and tools. Version control became my specialty, which turns out to be quite a complex and interesting task when you have over a hundred developers to worry about. They all want to code their own way, and they absolutely do not want to be hampered or slowed down. Yet, for an effective version control system, you must require certain steps at certain times, and people have to follow the procedure in order for the process to work. All in all, it was a highly educational experience and I’m confident those skills will serve me well for the rest of my career.

The company, for various reasons, ran into financial trouble. Though every quarterly meeting we were told the company “didn’t make budget,” the blow was softened by the numbers. It looked like cash flow was decent, that the company was turning a profit, even if it wasn’t as big as the owners (a private investment firm) wanted. But things got worse and worse. A fair number of the Vice Presidents and Directors were trimmed, and there were several small layoffs–no more than 20 or so at a time, so none of them seemed dire.

It was determined that what the company lacked was strong leadership. Not that Wil was a poor leader, but that in dividing his time between duties as President and CEO, he more often neglected the CEO part and delegated the day-to-day operations of the company to others. However you’d like to explain it, the point was simple: insufficient executive leadership let the company get pulled into too many directions, and led to declining profits and eventually, losses.

A new CEO was brought in, a man who had a reputation for coming into trouble companies and making them profitable again. I had kind of a weird impression of him, at first. He had a larger-than-life personality, a definite presence that was felt when he walked into a room. He wasn’t the same kind of guy as Wil, that much was certain, but I didn’t know if that was good or bad. You need a different skill set to run a company than you need to hobnob with customers and investors. So, I was willing to give him a chance.

He said he would “transform” the company, and in fact laid out a 90-day timeline for doing just that. Those 90 days would be spent identifying the company’s problems, working out a plan for solving them, and then beginning to enact that plan. Nothing that would take longer than a year would be on the table. The company needed results now, not in 5 years.

Teams were formed to carry out the information gathering. There was some shuffling done at the executive level again. I wasn’t really involved with the transformation, but I kept my ears open to hear what was going on, and it sounded like a lot of issues had been spotted and some new sources of revenue were proposed–many of which were lines of income we had at our disposal, but simply hadn’t exploited yet.

On December 4th, 2008, when the transformation was close to completion, there was a large reduction in force. I was unaware it was even happening, since I was too busy doing my work. Around 11AM, my boss came by and asked if I had a moment. He led me to one of the computer labs near the front of the building–secluded, I realized–and sitting in that room was the VP of the Quality department. I knew this was bad, considering I rarely saw her. I figured out what was happening before she got too far into her explanation. I went numb. I’d been at this company for seven years, and this was how it would end? A little talk, an envelope with a severance agreement in it, and then out the door?

I’d never been let go from a job. The decision to leave had always been mine, and I thought I was valuable enough to this company that they wouldn’t shuffle me out the door. But when it came time to cut costs, how valuable you were to the company didn’t factor into it that much. It was all about how much you cost the company, in terms of salary and benefits. No matter how good your work was, no matter how much time you put in, if they felt you were too heavy on the “expense” side of things, you were gone. They cut people they needed, but they had little other choice. One hundred and twenty-six people lost their jobs that day, out of a company that had around 450 employees at that time.

About a week later, my wife found out she was pregnant. That news didn’t go over so well with me, since I was unemployed and panicked about how we’d survive, much less take care of a new kid. But I buckled down and did what I had to. The company hired an outplacement service, which sounds like they help you find a new job, but it’s more indirect than that. What they actually did was help us build our resumes, polish our interviewing skills, and get lists of potential employers and recruiting agencies. They were a big help, but it was only the first step.

After getting a new resume put together, I signed up with several job sites, hooked up with recruiters, and started applying and interviewing. Several jobs fell through. Some of them, I thought I was perfect for, and even the interviewers seemed impressed, but it was not to be. This was late 2008, early 2009, and employers quite simply could afford to be as picky as they wanted. With so many workers coming back into the market, having lost their jobs, there was a multitude to choose from. There was no sense in picking someone who didn’t have the exact skill set you wanted, and then some!

Nevertheless, I tried to carry on with my job search, knowing that even when I did my absolute best in an interview, factors outside that could cost me the position. I did decide I would be willing to relocate, but that my family would remain in Indiana. I could live very cheaply on my own and still be able to support my family without uprooting them. Hardly an ideal situation, but then those are the choices you’re left with, sometimes.

In late January, I interviewed with a software company in New Jersey. They reminded me in many ways of the company I worked at before, as it might have been ten or fifteen years earlier. Small and agile, with a lot of bright people putting their expertise together. My wife and I flew out so I could interview, and it went very well. Once we got back, though, I didn’t get my hopes up–anything was possible and I didn’t want to get my heart set on any particular job, knowing it could fall through.

The week after we got back, however, I got a phone call from the recruiter that first got me involved with this company. They made an offer, I went over it, and then I accepted. I made arrangements for a place to live, and a couple weeks later I was living in New Jersey. I started work, sunk myself into the company’s atmosphere, and have since made the best of the situation.

I enjoy my new job, though I don’t like being away from my family. I make it back to visit when I can. Given how soft the market remains, I don’t have any plans to return to Indiana in the foreseeable future. This is a good job and I intend to keep it for a while. It does amaze me, though, how different my life is from a year ago. Looking back on it, I’m glad I was let go from my last employer. I’ve had so many new experiences since that happened, I wouldn’t trade them for anything. While my present circumstances are less than ideal, they are a fair sight better than being jobless, or working for a company where the entire culture and philosophy has changed, in my opinion, for the worse.

Having gone through a layoff, RIF, whatever you want to call it, though, I can honestly say I’d never want to experience one again. One per lifetime is enough for me.

WordPress vs. Drupal vs. Joomla

As someone who runs several websites, I’ve become pretty familiar with some of the common content management systems out there. Although you will find people who advocate for a particular CMS over another, I’m more the kind of person who wants the right tool for the job. No system is right for every situation. So, this article is meant to help you choose which one is right for you!

I’ll be touching mostly on WordPress, Drupal, and Joomla, though I will throw in a few thoughts about PHP-Nuke, as well.


WordPress is the de facto standard for blogging these days, and for good reason. It’s easy to install, easy to set up, easy to use–all around, it’s easy, easy, easy. If you’re a non-technical user, WordPress is a great system to use. It is also reasonably extensible.


The interface is very clean and easy to navigate. The ability to update plugins directly from the browser is a nice touch. It also supports a multi-user environment right out of the box, in case you want to run a blogging site with multiple authors. The wealth of available plugins provide a lot of options and additional features. The template system is also highly versatile: templates such as Atahualpa provide a vast array of options for customizing the look and feel of your WordPress site.

I’ve found the plugin system very easy to work with, having written a plugin of my own for a niche where the available plugins were inadequate. With no prior experience writing WordPress plugins, I had mine up and running within a couple hours.

All WordPress requires to get started is a working PHP installation and a MySQL database. You can also get a hosted blog on the WordPress site if you don’t want to spring for a capable hosting account.


WordPress had a recent, dangerous security flaw that impacted a few people I know. Fortunately for them, they only lost their settings and not their entire WordPress database, though they had to call on someone with more technical expertise to help them sort it out.

Additionally, WordPress has no mode for a safe failover if a plugin update introduces a fatal bug. You just end up with the PHP “white screen of death.” The way to address this is to remove all plugins, restoring them one by one until you find the culprit. However, less technically-inclined users won’t know to do this, and may be unclear how to proceed.

I’ve also found that quite a few WordPress plugins are no longer maintained, and compatibility between major versions is not guaranteed. So, a lot of older plugins just plain won’t work. This isn’t a fault of WordPress, per se, but the community building plugins for it doesn’t seem to be quite as large and active as those developing plugins for, say, Drupal.


WordPress is a great system if all you need is a straightforward blogging platform, are not a technical expert, and require a clean, simple interface. You can have total control over the presentation of your blog, however, the available plugins may be inadequate if you have unusual requirements.


Joomla is an appropriate system for those who run larger sites or who need to deal with large numbers of pages. It’s suitable for things like corporate intranets, group sites, and the like.


Joomla is fast. Very fast. Its caching system whips the pants off of pretty much all competitors. If you run a large site and you just need it to be fast, fast, fast, Joomla is a good choice.

It also has quite a few plugins, and I’ve found it tends to have a greater variety than WordPress. On the downside, however, since Joomla is more popular with companies, many plugins cost money. There are also a lot of free ones, though, so don’t let that be a deterrent.

Joomla is also pretty easy to set up. Installing plugins is about as straightforward as it is with WordPress.

I’ve also never experienced a “white screen of death” with Joomla, even with some plugins installed incorrectly or with fatal errors in them. It’s a very robust, powerful system.

Many older Joomla plugins are also compatible with later versions, thanks to a built-in legacy mode. It can cause some problems, but I have rarely experienced issues with it.


With Joomla’s focus on speed and survivability, you knew there were going to be downsides.

First off, the template system isn’t nearly as powerful as the WordPress system. While WordPress themes can add an entirely new maintenance area to your admin panel, Joomla themes do not. If you want to adjust the colors or layout, you’ll have to manually modify HTML and CSS files. If you have a good grasp of those, however, you’ll be just fine. It’s just not quite as point-and-click as WordPress users may be accustomed to.

While there are quite a few plugins available, a lot of the free ones are of lower quality than you might find for WordPress or Drupal. Integrating with third-party applications (such as forums) doesn’t work very well. Community-oriented plugins are not very mature for Joomla. It is definitely more of a content-driven, rather than user-driven, system.


If you need to manage a large site comprised mostly of your own content and that of other members, rather than building a hugely-interactive community, Joomla is a great choice. It’s fast, it’s powerful, it’s extensible. You may have to do more of the heavy lifting to get it fine-tuned to do what you want, but it will be rock-solid and stand up to high traffic.


Drupal is quite possibly the most powerful CMS out there. It’s also the slowest. For this article, I will refer exclusively to Drupal 6, which is the current production version and the one with which I am most familiar.


The default installation of Drupal gives you a simple site with news, blog, content page, and forum functionality. If you have more specific needs and don’t want to dig through the plugin directory, you can try one of the installation profiles, too. It’s easy to get up and running.

However, the real power of Drupal is in its vast array of plugins, called modules. There are thousands of modules available, for almost any purpose you could imagine, and many you never would have considered.

Essentially, while WordPress and Joomla are primarily blogging/news engines, Drupal can be turned into just about anything you want. Its social networking features are the most developed. I built a creative writing community out of off-the-shelf Drupal modules. If you don’t like the content types that come with Drupal, you can build your own with the Content Construction Kit. You can add modules to control user access based on social networking user relationships, page-specific access rules, or even use a point system. You can also use a combination of them, as I have done.

Modules are updated regularly with new features, and new ones are coming out all the time. If there isn’t a module to do what you want, it is often possible to request it, or get it added to a module that’s close to what you want.

It also has a very nice theming system, and you can allow your users to choose from the themes you have installed, if you so choose. User permissions can also be controlled on a very fine-grained basis.


Such power and versatility doesn’t come cheap. Drupal is easily the slowest of the major content management systems. While it has a powerful page caching system, it is essentially useless if you use any kind of dynamic page generation. This means anything that controls page access or generates dynamic content is going to bypass your cache system and not give you a performance advantage.

Modules (and Drupal itself) are updated constantly, and it can be a somewhat arduous process to update your Drupal installation. While it is straightforward, there are many steps involved and things can go wrong. It’s crucial to always do a backup just before any upgrades. You never know how two modules might interact and hose your database. This is a rare occurrence, but I’ve seen it happen.

Security flaws are found on a regular basis, too. While I have never seen one exploited in the wild, Drupal’s rapid pace of development means you need to stay on top of your updates.


If you need power with no regard for speed, Drupal is your best bet. You can build virtually any kind of site you want with it, no matter how special-purpose it is. Maintenance is more of a hassle than with other systems, and there are significant performance tradeoffs, but if you absolutely must have that level of power and extensibility, you can’t beat Drupal.


Just a few words about PHP-Nuke. It is more similar to Joomla than the other systems. Like Joomla, there are pre-customized versions out there, my favorite of which is Nuke Evolution Extreme. If you want a stable, robust system that isn’t exactly bleeding edge, something like this will suit you just fine. Nuke Evolution Extreme, in particular, has phpBB built into it–in fact, the entire user system just piggybacks on top of phpBB, so there’s only one database to maintain. I’ve found it very suitable for environments such as “clan” sites, which just need to be able to communicate easily and have a simple interface for adding pages and so forth.

It’s not nearly as bleeding-edge as the other systems, but it is very capable and featureful on its own.

Finally, I would stress that you carefully evaluate your needs before choosing a content management system–and whether you actually need one at all. Depending on what you want to do, static pages might serve you better. Or, none of the above will suit your needs and you might require something more purpose-specific. Wikipedia has a handy list of CMS software, which is worth digging through if you want to find something for a particular niche.

As always, it’s best to choose the right tool for the job. I use all the above systems in one way or another, depending on my needs. Some are heavily customized, some aren’t. No system is perfect for every environment and situation! That is the key point I’d like you to take away from this article.

So, good luck!

CentOS, yum, and ImageMagick suck!

I admit I am still something of a Linux novice. Nevertheless, I have always preferred my web servers run on the LAMP stack. My solitary experience running a Windows web server was a nightmare I’d not wish to repeat.

However, today was one of those days where I would have liked that same ease-of-use. For a program I wanted to use, I needed to install ImageMagick. No big deal, right?

I ran “yum install ImageMagick”, and what do you know, I got 404 errors on every last repository. Nice! It didn’t take me long to figure out that the packages for my operating system (CentOS 5.2) had been moved, but it did take some time to determine just what I would have to change in order to make it work.

Basically, I had to alter my yum repository definition to use “$releasever” instead of a hard-coded “5.2”, which is how it was originally set up. At that point, though, everything was fine. I got ImageMagick installed.

I screwed something else up along the way, though, and I just wanted all my processes restarted correctly, so I rebooted. Tried to SSH into it after that, and got the lovely message, “Server refused to allocate pty”. Very helpful, right? I’m not exactly someone who knows squat about SSH beyond how to login and mess with the shell, so it took some looking to find the problem. Evidently, when I installed ImageMagick (which brought with it a ton of dependencies), it killed some file system entries that were required by SHH. Yay!

To fix, I had to run:

/sbin/MAKEDEV tty
/sbin/MAKEDEV pty

Then, I could get back into SSH. Fortunately, lxadmin was working, and I finally found a use for its primitive and otherwise worthless “Command Center” tool, which lets you execute arbitrary shell commands.

I also wanted to add a few options to my system startup. Just some plain ol’ shell commands, nothing fancy. No services or anything of that sort. This is not as obvious a thing as you might suspect. I knew it had to go in one of the rc.d scripts, but I had no clue which one.

The answer: rc.local. Specifically, /etc/rc.d/rc.local. You can add whatever commands you want to execute there. Be sure to add an ampersand (&) to the end of any command that might take a while, so it’s run in the background.

So, I am learning. It’s a frustrating and often annoying process, but now I have everything working the way I want it to. It does expose one of my lingering gripes with Linux, though: nothing is obvious. Who would think installing a program would break something completely unrelated, like SSH? It doesn’t make any sense. SSH worked fine from day one, until I installed ImageMagick. For that matter, I don’t see why ImageMagick requires 38MB of dependencies, including most of Gnome and X11. I realize it’s just using them as libraries, but still, I do find it a tad aggravating to see space getting used up by chunks a windowing system I won’t even be using. Windows has “DLL hell,” and Linux has “dependency hell.” Six of one, half a dozen of the other, I guess.


In honor of the 10th anniversary of the computer game Homeworld, I am reposting an essay I wrote on December 27, 2006. Enjoy!


Released in 1999, it is still probably the best 3D real-time strategy game set in space ever made. Others have come and gone, but I always go back to Homeworld. Aside from being a good game in general, its story and atmosphere really sell it. I would dare say that without its intriguing, mystical ambiance, it would not be nearly as interesting a game.

As someone who creates worlds and cultures for fun, I appreciate the hard work that goes into the process. People who don’t do world-building (also called geofiction and subcreation) might assume it doesn’t involve much more than assembling a patchwork of cultural traits and drawing a crude map or two. While some projects never get past that stage, many go much further. A world with any amount of effort put into it won’t be a poorly-constructed synthesis of disparate elements, but a consistent, believable place.

That brings me to Homeworld’s universe. Some say it exhibits “aesthetic completion,” meaning its various parts, though abstract, fit together into a consistent whole. Homeworld achieves this by portraying all its graphics in an abstract fashion: battles are fought from a third-person perspective, where you view the ships participating. Because the ships are deliberately alien, there is no “right” way for them to look–as time goes on, they do not appear dated, because they have no real-world counterparts to make a valid comparison.

Naturally, most games also include cutscenes, which are either rendered in the game engine (a la Half-Life) or show up as interstitial CGI sequences. The problem with CGI is that it is expensive and dates quickly. If you don’t believe me, look at the opening sequences for any game made around 2000, and compare it with a new game. Chances are, even the in-game graphics look better than the 5-year-old cutscenes.

Homeworld avoids this issue, again, through abstraction. Instead of expensive and quickly-outdated CGI cutscenes, animatics were used. An animatic is essentially a storyboard that uses simple techniques to illustrate motion: panning over an image, or moving parts of it. Homeworld’s animatics are black-and-white, adding to the epic, historical feel of the game itself. Like the rest of the game, they do not illustrate people (with one understandable exception), but ships, cities, and technological artifacts. Once again, because everything illustrated is intentionally alien, the images never appear dated or incomplete.

The aesthetic cohesion doesn’t stop with the graphics. The sound also refuses to recall a particular era. Ships sounds are fairly generic–bullets, beams, explosions. Radio chatter is calm and serene. The music is ambient, often with a Celtic or Middle Eastern motif. Wordless vocals enhance several of the tracks. In fact, my favorite is the song played when the Kadeshi confront your fleet. It’s hard to explain how a song with a man humming can actually be ominous, but it is.

The developers of Homeworld originally wanted to make a Battlestar Galactica game. When they failed to secure that license, they came up with Homeworld, which has a similar story, but a completely different tone. The music and imagery, as well as some of the missions, conspire to lend a mystical feel to the proceedings–a sense of history being fulfilled. One of the designers discussed how the mysticism implied in the Homeworld games helps give them their timeless feel, and I am inclined to agree.

Even with all this talk of aesthetics and artistic themes, we’re still talking about what is a really good game. If the story doesn’t intrigue you at all, you would do well the pick up the game anyway, especially if you’re an RTS fan. There are copies you can find via Froogle, or you can try Homeworld: Cataclysm (which is a “standalone expansion”) or Homeworld 2, which is a lot like the original. If you can appreciate a game more because of its gameplay and story than because of its graphics, you should give this one a shot. And hey, it’s a bargain title these days…