Gradual Ephiphany

Kubuntu vs. Gentoo (Round 1)

I’ve been using Gentoo for my desktop machine for the past 3 years, and have grown to love the distribution. Source-based distros make it easy to patch/customize your applications and get exactly the functionality you need. Over years, I’ve had to patch X11 (missing PCI ID for my video card), Gaim (I don’t like the 2.0 tabs) and a few other apps. It’s generally pretty straightforward (if you are familiar with creating diffs/patches) and you’re guaranteed to get a nice “fit” to your system. Unfortunately, that ability to get a custom fit is a double-edge sword. Installing new software takes a while, due to compilation times. Getting everything configured on a new machine can be challenging, since you have to find just the right mix of packages, USE flags (ugh) and kernel options.

So, when I recently traded my work desktop for a Dell D620 laptop, I decided to give Kubuntu a try. Getting Gentoo working on desktop hardware is one thing – a laptop is a whole different class of esoteric hardware. Kubuntu has a reputation for being easy to install, particularly on laptops, so I grabbed the latest version (Edgy Eft) and started the process. The install went quickly and required no interaction after providing the initial information.

Initial impressions:

  • With the exception of my external monitor, everything just works. Bluetooth, WiFi, sound, hibernate – they all function as expected. No custom kernel needed.
  • Setting up an external monitor (at least, for my laptop) involves editing xorg.conf. As a veteran Linux user, this isn’t too much of a hardship, but I was hoping to avoid it.
  • Installing new apps is fast and easy with the provided GUI (Adept). Unfortunately, Adept is a little buggy and crashes more often than I’d like. It also has some interesting usability “challenges”.
  • Ironically, it’s harder to install some applications, such as djbdns and VMWare Workstation. If an application is non-free, or licensed in a such a way that Debian and/or Ubuntu don’t package it by default, you have to install it manually. This is one area where source-based distributions are handy – they don’t have to worry as much about licenses, since they don’t redistribute compiled code.
  • Being so removed from the packaging/installation process leaves me with a case of vertigo. When something gets installed on a Gentoo box, it comes with a warm fuzzy that you know exactly what was installed. It’s less clear what goes on when you install apps on Kubuntu. This isn’t a bad thing – just different.

My experience to this point with Kubuntu has been generally positive. It’s going to take a while before I’m used to the idea of having less control of what’s going on in my Linux box. We’ll have to see how it goes.

Blizzard 12/06

I’ve posted some pictures on Flickr of the recent blizzard that came through. It made for a beautiful, white Christmas. The forecasters are saying that another major storm is on headed towards Denver, but it’s too early to know for sure.

Other than the shoveling, I do enjoy the snow. I’ve spent the better part of my life in tropical regions, so having solid cold, snowy winters is still a wonderful experience for me. I suppose that when I get old(er), I’ll want to return to the mono-season of summer, but for the moment I’m making the most of these four seasons in Colorado.

Now, I just need a good pair of snowshoes. :)

Monarch Computers Is No Butterfly….

You would think that a company with a name like “Monarch Computers” would have a light and airy reputation – let me dispell that myth.

I ordered a motherboard from this company about a year ago – they have decent prices and I’ve bought parts there before with reasonable success (though never a CPU or motherboard). Knowing that motherboards occasionally go bad, I purchased their 3 year warranty to cover any issues that might arise (mistake #1). Roughly 15 months later, I start experiencing data corruption and after some lengthy testing, figure out the Northbridge controller is dying. So, I proceed through Monarch’s RMA process and eventually (32 days later!) get a new motherboard back from them.

Only problem is, the motherboard they send back to me isn’t new (it’s a return from someone else) and chirps like a cricket on speed when it’s on – which is just a little annoying. I’ve tried emailing the RMA address about this issue and also tried calling the support line. No response from the RMA email address, and adding injury to insult, I hold on their 800 support line for 2.5 HOURS…and never get a human.

So, I give up. I’m going to start saving for one of those spiffy MacBook Pros and get rid of my desktop altogether. I’m going to be a one computer sort of guy (which is possible now that Apple uses Intel).

That said, if you need computer parts, don’t ever buy them from Monarch. Well, I suppose you could if you don’t care about warranties or other such obscure things.

Switching to nginx…not

Over the Thanksgiving holidays, I’ve been looking into switching over the RimuHosting VPS to the nginx webserver. nginx is a fast little webserver that has a smaller memory footprint than lighttpd – this is an important attribute when you are running on only 96M of RAM.

Unfortunately, getting nginx going can be challenging. The available English docs are pretty sparse, as nginx was developed in Russia. Even with the sparse docs, I was able to get a basic configuration working on my VPS. However, once I wanted to start integrating with PHP, particularly with FastCGI, the configuration got out of hand. Basically, nginx doesn’t provide virtual-to-physical mapping of FastCGI paths, so for each virtual location that you want to use FastCGI (or PHP, in this case), you have to provide an explicit mapping to the location of the PHP script. Now, I’m sure there are security people out there who might say that’s desirable, as it requires specific enabling of the functionality for each virtual location. However, from a management standpoint, I hate having to duplicate configuration. A decent webserver should (IMNSHO) ensure that you don’t repeat yourself when it comes to configuration, particularly if it’s possible for the webserver to sort it out.

So, that’s my experience with nginx. I will say that I successfully deployed it at work for an internal dev server where we needed a reverse-proxy into some Java apps. It worked great for that. It’s just not yet ready for those of us who need to use PHP/FastCGI integration.

Count of Monte Cristo

If you’re looking for a great (longish) book to read over the holidays, consider the Count of Monte Cristo. I’m reading it for the second time and enjoying it immensely. Dumas has a way of creating interesting characters and then washing them through a series of tribulations and trials to render their personalities in stark bas-relief. Of course, he also has a good mix of action, so it’s not all dull character-based drama. :)

Botnet Annoyances

The past few weeks, the Xen VM that stpeter and I share has been inundated with spam from a botnet. A few times it’s taken postfix out, or caused other services to die via second-order effects. When the botnet is active, we’ll see 5-10 spam (or rather, attempted spam) a second. Of course, with spam originating from all over the ‘Net, there is no way to simply IP block the source.

It’s a troubling trend, as noted here. One possibility to deal with this problem (specifically bot-spam), is to use a “tar pit” and slow down the SMTP processing drastically. The theory is that by doing this, most bot-spammers will not bother to keep spamming your domain, as the opportunity cost increases drastically; i.e. if they are getting paid by the number of spam sent, slowing down transmit time will cause them to make less money. A good writeup of this approach can be found here.

Closures for Java

I saw a proposal this morning for Java closures (or some form thereof). For me, closures and list comprehensions are the two things that I could really use from the functional world. As it stands, I use functionalj when I want functional goodness in Java – it’s not perfect, but it much better than constantly declaring anonymous classes for callbacks.

I wish I could program in Python (or some such language) all the time, but the bottom line is that Java has a lot of advantages when one is building a shipping product. So, I plug along with it and wait for the crossover of language concepts from other languages.

Invest

I’ve taken an interest in the stock market lately. Not really sure where it’s originating from – it’s not like I have a load of cash to throw at such things. Even so, I’ve been using a couple of simulators and just learning about what’s involved. I’m also reading a few books – Contrarian Investment Strategies and A Random Walk Down Wall Street. Both of them have appealed to the pragmatic programmer in me – but they’ve also surprised me. Chief among those surprises is that neither the technical (chart-based) analysis nor fundamental analysis (i.e. studying a company’s financial statements) are as effective as one might imagine. When you consider how often charts/plots of stock prices are encountered in most people’s exposure to the market, it’s jarring to be told that those charts are pretty useless for any meaningful predictions.

Ultimately, all of my reading has reinforced my belief that humans are extremely poor information processors – at least when it comes to correlation of multiple variables. We like our data fed in sequentially, not in parallel. Furthermore, we (at least, most of us) build judgements about data iteratively, so it’s easy to find relationships between previous variables and current information where no such pattern exists. So, we need computers; more critically, we need to learn how to teach computers to do the parallel correlation for us.

At least, that’s my $0.02. :)

Comments

I was cleaning out my spam queue in my blog this evening and was pleasently surprised to see a few posts actually had some comments. Even though this blog is public, I never really expect to get feedback – so thanks. :)