Distance Debugging Logo

Apple recently released an upgrade to OS X, version 10.5 ("Leopard") to much acclaim. It certainly appears to have some excellent new features, in particular the Time Machine capability that gives you a version control-eque view of your file system, allowing you to see what your system looked like at any previous point in time. As with any major upgrade, there have been a wide variety of reported problems, particularly the "Blue Screen of Death" upgrade issue where the machine refuses to restart until manually rebooted. Whether these problems are more or less than a typical upgrade is for others to decide, but it got me thinking about what happens when I upgrade to a new version of Linux, or try out really any new piece of open-source software: what my expectations are for how smoothly it will go, and what the outcome will be.

To put it bluntly, as a long-time user of Linux on the desktop, I have lost any concept of technical support. I never have a phone number, email address, or in some cases, even a forum to which I can go complain or get assistance with my problems. When I install the latest version of Fedora, or a new version of the kernel, or get a new video driver, I can expect a wireless card not to work, or the system to hang on boot, or my laptop to fail to suspend and resume properly, or worse. While Linux has made huge strides from the early days of endless handholding to even bring up a graphical environment, a few glitches are still par for the course. This isn't a complaint at all; to me, the process of fixing these things is half the fun. I have argued before that users have developed a kind of learned helplessness from Windows (and Mac) hiding information from them, and needing to learn something to get my system fully functional is a great opportunity to acquire new skills.

With Linux, it's not just that there isn't a help line or a dedicated user support forum (and certainly there are many places to get help; learning how to research a technical question is a valuable skill in-and-of itself), it's that there isn't a company that you can ultimately force to do anything about your problem. If my laptop isn't booting, my choices are to try to fix it myself, try to get a more knowledgeable person interested (which usually works!), or give up and switch to something else. I am owed nothing by the Linux community in the way that Microsoft owes me a working machine because I dropped some amount of $ on the license.

I think that notion is what scares most people, and businesses, off of Linux. The arguments that it doesn't run needed applications, or doesn't have the driver support, or is not user-friendly are all slowly eroding, but I think there is still a deep-rooted psychological fear of removing that safety net. Some companies, like Red Hat or Novell, have stepped into that void with support contracts aimed at businesses, but I look at friends and family who all are very smart and capable people, but still pay the "Microsoft tax", and I can understand not wanting to have to give up that feeling of having someone to complain to, or at least blame when something goes wrong. When I take a cross-country car trip, I have a gnawing fear that something strange is going to go wrong and I will be stuck in another state with an inoperable vehicle, and no way to judge the validity of what a mechanic is telling me, nor any faith that their solutions will be the right ones. So I compensate in the same way as people in the computer world: I buy a comprehensive warranty package that makes sure that I can always have my car towed to a dealer who will pick up the tab for the vast majority of problems.

As a "computer mechanic", I feel sorry for computer users who have so little knowledge of what goes on in their system and who are beholden to a faceless software company, in the way that car mechanics probably feel a little sorry for me, but I can still understanding it. For developers though, I have more trouble accepting it.. The large upside of living without technical support is that it has given me a level of confidence that I will be able to resolve any problem, and this has spilled over into my work as a developer on a variety of projects. This benefit is yet another reason that I encourage young software engineers to begin using and learning an "unsupported" system like Linux as early in their training as they can. The sooner you start living without technical support, the better you will be able to effectively tackle the problems you encounter in your professional career.

Spam, in all its forms

Once upon a time, businesses actually tried to find customers by doing market research, and actively tried to retain them through quality service and attentiveness. I now find it rare to encounter such a company, with most businesses utilizing the physical equivalents of spam to create business. We focus a lot of attention to preventing it in our inboxes, but think little about how the pervasive and accepted the practice is in general.The core principles are incredibly simple:

  1. Invest as little as possible in both the process of locating customers.
  2. Use the money saved to blanket as large a population as possible with ads and other marketing materials.
  3. Treat customer relationships as commodities, from whose sale a profit can also be made.

Here are a few examples of the kinds of practices that these business engage in, besides the obvious spam email messages:

  1. Home renovation and alarm companies staking out the registry of deeds to look for new home sales so that they can begin mailing materials about their services to newly purchased homes.
  2. Business products companies such as credit card processors, branded merchandise sellers, and invoice printers watching for new business registrations to being frantically mailing their marketing materials.
  3. From my own life recently - a purchase of diapers online leading to the sudden receipt of a blizzard of mailers for formula, picture packages, and other materials for new parents. Unfortunately for them (and for me) my kid is 2.

In each case, the company is relying on the low cost to obtain information and some likely statistical correlation between the activity and their business, rather than having any clear sense of who a likely customer would be. For instance, I just opened this business a few months ago and received a steady stream of materials for credit card processing companies, despite the fact that I am not a retail business (which is clear from my business registration info), have no need to process credit cards, and even if I did I would just use Paypal, so they were just throwing away money.

We are seeing the result in our mailboxes and transactions every day: junk mail from companies that either captured a public event such as a home purchase or bought a name from a partner institution that has little or nothing to do with anything we'd ever be interested in. Unfortunately, consumers are very much to blame for this result, in two ways. First, it must be effective, otherwise companies would not continue through money at bulk mailings. Second, we are too willing to part with personal information for littler or no cost. Think of how you casually give out your zip code or email address to a retailer when asked. We feel significant social pressure to do so, despite the fact that it is totally unnecessary.

I believe that if consumers wise up to spam marketing practices in all forms, it will no longer be cost effective to do it, which would be great in many ways. Here are a few rules I try to follow:

  1. Never give out any personal information for free. If they want my zip code to complete the purchase, I'll need at least a 10% discount.
  2. Never purchase anything from a company from whom you have received an unsolicited mailing. Not only does it encourage the practice, but chances are, they are going to continue to treat you as a statistic, giving you as much attention as they did in finding you in the first place.
  3. Whenever you buy anything that requires you to hand over personal information, make sure to indicate that you would not like your name or personal information sold or turned over to any other party. In most cases, they have to abide by your request, although sometimes they will simply refuse to complete the transaction.
  4. Terminate business with any company that sells your name. Sometimes, it's impossible to tell who was the source of a sudden torrent of junk, but other times it's all too obvious.

Of course, occasionally it can work in your favor: after the diaper company sold our name to a couple dozen other retailers, we eventually were given a free subscription to "parenting" magazine by one of them. My wife, who is ultra diligent about calling and cancelling unwanted subscriptions and junk mail flows, immediately called the publisher to cancel this one. A few weeks later we got a check for the unused portion, for a little over $15. I tried to figure out exactly where that $15 ultimately originated from, but it just made my head hurt.

I have once again signed up for NaBloPoMo to get myself back in the regular blogging habit. I've joined the DreamInCode and Midwestern bloggers groups, so I'm looking forward to seeing what others are writing about. This year, instead of being hosted on a private website, it is being hosted on Ning, the do-it-yourself social networking platform. That's interesting to me in and of itself as I read and enjoy the blog of one of the founders of Ning (and several other big companies), Marc Andreessen, so I am also curious to see if all the nice things he says about it are true.

Yet another great thing about NaBloPoMo is that it gave me an excuse to finally undertake a project I have been putting off for months: migrate this blog from WordPress to Drupal such that it fits in with the rest of the Distance Software site. Drupal is a general content management system, so I can host my main site and articles, plus have a blog, a file sharing area, project maangement, and what have you, which I couldn't do (easily) with WordPress. However, I didn't want to just use the default blogging feature, which leaves much to be desired, so I've been frantically installing modules and configuring the system to begin to approximate what you'd get with a normal blog. Here are some of the steps I took:

  1. First, I needed to import all the content from WordPress into Drupal. That proved to be very straightforward using the fabulous converter tool found here. One oddity: when I entered my database settings, it didn't like "localhost" for the hostname, but it happily accepted 127.0.0.1, so a word to the wise.
  2. Next I removed all the posts from the front page (this is the default for some reason), and decided I wanted to have a nice paged series of posts instead of one huge page, so I created a new view using the Views module that filtered to show nodes of type "blog" and status "published". I set it to be at the URL /shoutingdistance so that people looking for the old blog would be redirected to the new page.
  3. I wanted my posts to show up with nice URLs like /this-is-my-latest-post instead of node/124, so I used the ever-popular pathauto module to set that up, and created nice aliases for the existing and future posts.
  4. I needed syndication to be set up correctly. This turned out to be a breeze with Views, because they already offer an RSS argument option. A search for the concept quickly turned up this page, which explains how to set it up. I switched feedburner to use that new URL, and then I installed the feedburner module to redirect all accesses for the existing feed to the FeedBurner feed, which seems to be working, but we shall see.

So now I have something that approximates a blog, but I have quite a few things left to do:

  1. It's using my default page template so it ends up laying out all weird (this is mostly my fault for making a screwed up CSS template in the first place), but I want to override that with a new format.
  2. There aren't any archives or anything. I need to create another view that can be added as a block on the blog page so that people can see older posts in a simpler way.
  3. Turn on goodies like Akismet and Bad Behavior to block spam and spam attempts, so I can turn comments on. Right now folks, you are SOL.

I will continue to post on the various improvements as they happen, but I hope this helps others who might be considering transitioning from traditional blogging software to Drupal. It's definitely doable, but it's definitely not out-of-the-box ready for blogging, in my opinion.