Pair Disabled the Cafes

Tuesday, September 15th, 2009

It really is time to switch to a more reliable host. Last night as I was at the vet with my cat (sadly, for the last time) Pair Networks turned off The Cafes with little to no notice. They sent a form e-mail with no useful information:

Due to problems it was causing on the server, we were forced to disable the
following script located in your account:


For future reference, please take a look at our script usage policies:

Please take a few moments to look over your script for any obvious problems
before using “chmod 755” (via ssh) or using your FTP client to reenable
the executable permissions of the script.

If you have any questions about this script, please contact our friendly
support specialists at or 412-381-7247 (option 2).

The message is inaccurate. /usr/www/users/elharo/cafe isn’t a script. It’s the complete web site.

I’ve turned the site back on, but since they didn’t tell me what the problem actually was, I have no way of knowing if the problem is still there or not. I posted a new article on Friday, and it hit Hacker News yesterday, so there’s been a spike in traffic but still in the 10,000 hits a day range, nothing serious.

Upgrading WordPress to 2.8.4

Thursday, August 13th, 2009

If this blog goes dark, you’ll know why. This always scares me. I wish WordPress had reliable XML export and import, not SQL.

All done. Automatic upgrade failed, but manual upgrade seems to have succeeded. Holler if you notice any problems.

Chase Incompetence

Friday, June 19th, 2009

I think it’s time to look for a new local bank. WAMU was marginally competent at best. Chase isn’t even that. I login to my account this morning and here’s what I see:

Choose a new User Name to get started. Your online security is always a top priority with us. 
			That’s why we are taking steps to increase the security of your account. 
			With that in mind, we need you to change your User Name. Please create your new User Name by using the criteria we’ve detailed below. 
				(Note: There’s no need to change your Password.) 
					Must be 8 to 32 characters in length. Must include at least one letter and one number. Cannot include special characters (@, &, %, *, etc) Cannot be the same as your Passwor

They say they want this for security, but I call bullshit on that. The real problem is that Chase’s system doesn’t allow the e-mail addresses that WAMU used for its usernames. Rather than upgrade their systems, they decided to inconvenience millions of customers.

And on top of that, the form doesn’t actually work. As I type this, it’s been “Transferring data from….” for many minutes. And the final result?


Wednesday, April 22nd, 2009

Attempting to install Lord of the Rings Online for the first time on a fairly stock Vista system, and the installer fails while updating some Visual C++ runtime library. When are we going to learn that we should not depend on the latest versions of every single library? Software should simply not require users to upgrade their libraries. (I say this having just shipped a product that fails on Java 5 on the Mac but succeeds on Java 6, so I’m hardly blameless here. The bug is really Apple’s fault, but we should have worked around it. Update: looks like a colleague fixed that a few hours ago. Cool.)

However, the real WTF is this error message I got while the installer was updating the files:

An error occurred while installing Microsoft Visual C++ 2005 Redistributable Package (X86). Please download and install 'Microsoft Visual C++ 2005 Redistributable Package (X86' from ''

Naturally, I can’t copy and paste that URL. I’m supposed to type it into my web browser. More likely I just won’t play the game and try Warhammer instead.

Data Constructors and Readability

Thursday, February 5th, 2009

I think I’ve put my finger on one reason I’m finding Haskell hard to read. Consider this algebraic data type definition from Real World Haskell:

data Doc = Empty
         | Char Char
         | Text String
         | Line
         | Concat Doc Doc
         | Union Doc Doc
         deriving (Show, Eq)

There’s no distinction between the value constructor and the components of the type. This is especially critical when the constructor and the components have the same name as in the Char constructor above. It also doesn’t help that they have the same naming convention (mixed camel case, initial uppercase letter).

A Java class with multiple factory methods or multiple constructors would be much more verbose, but much more readable. Humans need redundancy, even if it’s logically superfluous.

I suspect a language that retained Haskell’s semantics, but completely replaced the syntax with something more usable, legible, and familiar would have a much greater chance of success.

unlines with fold

Tuesday, January 27th, 2009

Real World Haskell, Exercise 10, p. 99: This was an easy one:

myUnlines :: [String] -> String
myUnlines xs = foldr (addLine) "" xs 
    where addLine c acc = acc ++ c ++ "\n"

It’s pretty much straight down the path of exactly what folds are meant for, though the inferred types still managed to surprise me, and my initial implementation was about twice this size.