Random Thought

The underlying principal of free-market economics is that individual actors will, in the aggregate, make optimal choices. Why should we believe this to be true?

One To Go

Well, I'm done with another semester. That finishes off my third year here in Claremont. One to go. Woo.

New GPG Key

As you may have seen around the Internet, there was a fairly significant break in the SHA-1 hash function, which is used by default in GnuPG. This is worrisome, since GPG/PGP signatures are one of the only things I'd actually trust to verify somebody's identity online. So I've generated a new key with a 2048-bit RSA primary (for SHA256 and SHA512 support) and a 4096-bit ElGamal encrypting key (which took about 15 minutes to generate, so better be worth it). The key ID is CB8AA0FF, and the fingerprint is 5C35 D713 3E10 9A19 FFFC F58A 68E8 3B57 CB8A A0FF I've already gone ahead and signed the appropriate keys with it, and I'll be revoking the old key in a couple of months.

Oh, I suppose I should put in an actual link to the new key. Here's my key transition statement, and here's the new key itself.

The Decemberists - The Hazards of Love

The Hazards of Love album art So, I've been mulling over this post for a couple of weeks, ever since I bought the new Decemberists album, “The Hazards of Love”. I suppose you could label it something of an "indie rock opera". But, after a couple of weeks with it, I personally would label it "The Best Album of 2009". The plot is a bit bizarre, about a woman Margaret, her forest-spirit lover William, the Queen of the forest, and a murderous rake, and it's a bit of a far-out story. The idea of having an album that isn't just a collection of singles is bit out there for these times. And, mark my words, this is not an album full of singles. By themselves, these songs are good, but none of them is great. However, as a whole, the album is amazing. I've listened to it at least five times in the last two weeks, and it really is awesome to listen to straight through.

Musically, this album clearly borrows from a lot of past genres. The second track, The Hazards of Love 1 (The Prettiest Whistles Won't Wrestle the Thistles Undone) reminds me pretty strongly of some Pentangle tracks. The prominent acoustic bass line at about 1:15 into the song could easily fit in with Market Song, Haitian Fight Song, or something else off of “Sweet Child”.

Then there's track 10, The Rake's Song, which is one of the songs from this album that might stand alone as a single. Heavy fuzz-bass, a fairly simple acoustic guitar line, and the powerful voice of Colin Meloy give this song a folk-rock-ish feel. The lyrics make it disturbingly memorable.

Let's see, what else? I suppose that no review of this album would be complete without talking about The Queen's Rebuke/The Crossing. The instrumentals on this song provide such a powerful wall of sound that it almost elicits comparisons with Led Zeppelin, Pink Floyd, or some other 70's heavy-rock band. Shara Worden's vocals on this song remind me a bit of Sandy Denny in Fairport Convention, but with a darker twang.

Track 15, The Hazards of Love 3 (Revenge!), is a bit of an oddity. It opens with the main Hazards of Love/The Wanting Comes in Waves melody, then abruptly transitions to a harpsichord and vaguely chromatic childrens' voices. Combine this with screeching strings and chopped synthesizers, and it's a seriously creepy song. Which is appropriate, I suppose, for a song about the ghosts of murdered children coming back to take revenge via patricide.

The album ends on a completely different tone, of course. The Hazards of Love 4 (The Drowned) has laid-back New Wave-y rhythms with a melody that could almost be... country? Or maybe that's just the pedal steel guitar giving me that impression. It's a completely different style than the rest of the album, anyway. But it's still excellent, and, having heard it, I couldn't picture the album ending any other way.

Just from these tracks, you can see that this album charts an enormous amount of musical space. I'm sure that it won't be for everybody. But, well, it has my recommendation.

Backgrounds

I've been playing with The Gimp a bit recently, using edge-detection, colorization, and some other filters on some of my photos to make vaguely-abstract desktop backgrounds. I think it's worked pretty well, so I'm posting a few of the things I made here. Well, more specifically, over at Flickr]. Let me know what you think.

*nix Tip of the Day: vim modelines

vim logo{.lfloat} As you may know, in the editor wars, I come down firmly on the side of vim. Vim is a lean and effective modal editor, contrasted with emacs. One of the features of Vim that I enjoy using (but did not know about until recently!) is modelines. A modeline is a small piece of text that you can put at the end of a file to give your editor an instruction. It is generally placed in a comment. For example, if I'm editing Python, I never, ever want to use soft tabs (well, I generally don't like soft tabs anyway), so I might put something like the following at the end of a file:

# vim:expandtab ts=4 sw=4

When vim opens this file, it will parse that line and pass the space-separated arguments to "set". So this is equivalent to my typing in :set expandtab ts=4 sw=4.

Another great usage of these is for setting syntax highlighting. Vim is generally good at guessing the file type for syntax highlighting from the stuffix of the file. For example, file.py will be detected as a Python file and highlighted appropriately. But what about a file like /etc/apache2/vhosts/default.conf? It should be highlighted as an Apache configuration file, but the suffix .conf tells Vim nothing. The solution here is to use a modeline. My Apache configuration files end in the line

# vim:syntax=apache filetype=apache

which makes it a lot easier to read them.

Formats

There are a few different formats. The first (and simplest) is what I have shown above: a comment character, a space, the text "vim:", then a space-separated list of arguments. There may not be any non-argument text on the line. This means that the following is invalid:

/* vim:expandtab ts=4 sw=4 */

Obviously, this is a bit annoying, because there are lots of comment-formats that require both an opening and an ending (C, Pascal, and SML come to mind immediately). There is, thus, an alternate syntax:

/* vim: set expandtab ts=4 sw=4: */

Note that the set statement is now delimited by colons on both sides. This is important! If you leave off the trailing colon, Vim will get very unhappy with you.

Another handy feature of modelines is that you can limit them by version. For example, if I want to use something that was introduced in Vim 6.0, I could use the following:

# vim600: set expandtab

The vim600 means "any version of Vim 600 or later", where 600 in Vim versions translates to 6.0.0.

Caveats

  • Modelines are not generally enabled for root. Since they're possibly-sketchy code that runs automatically when you open a file, it's considered (wisely) a security risk to run them as root
  • Modelines might not be turned on in your default config at all. To turn them on, add set ml to your ~/.vimrc

Enjoy! If you want to learn more, I recommend reading the Vim documentation section on modelines or the Vim Tips Wiki article Modeine magic.

awesome window manager

First, some background for the non-technical among you. A window manager is a piece of software that controls the windows on your computer. It will do things like placement, drawing, keybinding, et cetera. If you're on Windows or Mac OS X, you have a window manager built-in to your operating system and cannot easily change it. However, if you're on a more traditional *nix (Linux, Solaris), you are free to select your window manager. In this post, I'll talk a little about what I use and why it's awesome.

read more

Summer Employment

Offer letter Well, my job search is over. As of today, I've accepted an offer from Google for a summer internship. I'll be in New York City from June 1st through August 21th, working at Google's 9th Avenue office. I'm not sure where exactly I'll be living (I'm looking to apartments, student housing, etc., but haven't settled on anything yet), but I'll try to keep you, my loyal readers, up to date.

It was a hard decision (I had a few offers, including DreamHost and DirecTV, plus more interviewers interested), but, I mean, it's sort of hard to say no to working for Google. It also didn't hurt that they offered me the most money. :-)

Anyhow, whee! Now I can go back to worrying about work now, instead of three months from now. For the time being, though, it's back to spring break with me.

minus

So, I working on my algs problem set just now; which is to say, I was browsing the web and trying very hard not to think about amortized runtime analysis. Anyhow, I found this awesome webcomic called minus. I know, I know, I'm years behind the curve, and it's a little... odd. But it has a persistently beautiful surrealism to it. Anyhow, you all should go read it. And, of course, all of the other webcomics I read are listed under "Links" above.