Dec 142016

I’ve recently switched from Firefox to Chrome, but I don’t care for the default Chrome “New Tab” page. The Firefox version was never quite what I wanted either, so I decided to make an extension for Chrome to work the way I wanted: a grid with giant buttons for my most visited sites. Here’s my requirements:

  • Extremely simple layout
  • No extraneous features (like weather, todo lists, etc)
  • Easy management of the sites that appear on the page

So here’s the result: Spartan New Tab. I have a few features to add, but it’s usable as it is.

Spartan New Tab page

Spartan New Tab page

Jan 032015

I ran across a unique guitar stringing technique today at a pawn shop. Somehow they managed to run all the strings backwards. I don’t know how they’re attached at the other end. I wonder what they thought those little circles at the end were for. It’s a left-handed guitar, so maybe someone told them they had to string it backwards relative to a right-handed guitar and they misunderstood “backwards”?


Sep 022013

When I was in Brazil last year, I took a bunch of pictures of the view from Cristo Redentor and stitched them together into a panorama.

View of Rio de Janeiro from Cristo Redentor

It was a clear day, but the image gets a bit cloudy in the distance. It’s still fun to search around for interesting details. It’s like a giant Where’s Waldo.

Oct 062012

I ran across this artifact from a bygone era the other day, and went searching for the story behind it. Surprisingly, I could find no pictures of it, so I decided to record it for posterity. Now future generations will know that terrible computer jokes existed long before facebook, when cavemen had to physically pass the jokes to one another like the very floppy disks the DiskProtek was made to defend.

The only reference to the DiskProtek that I’ve found at all is this trademark registration. It looks like it’s expired and is available for the low price of $159 if you’d like to enter the lucrative Archaic Computer Novelty business.

It hasn’t held up very well, but it’s probably close to 20 years old, so it’s a wonder it isn’t a bag full of dust at this point. Obviously the DiskProtek corporation produced a quality product.

Read on for the text from the back.

Continue reading »

May 102012

If you search for instructions on cropping in Audacity, you’ll get a lot of people explaining how to do two things that you don’t want to do:

1. Remove a selected section (that is, cutting, the opposite of cropping)
2. Save a selection to a file

If you just want to select a range and remove everything on both sides, neither of those pieces of advice help. The confusion is caused by people answering questions they don’t understand, and the fact that Audacity uses the term “Trim” instead of crop. Of course, if you read an article like this one, you will be even more confused, because he uses the term “Trim” to mean Cut!

Anyhow, all you have to do is select the range you want, then Edit -> Remove Audio -> Trim. Or just hit Ctrl-T.

Update: Newer versions of Audacity moved Trim to Edit -> Remove Special -> Trim Audio.

Apr 272012

If you’re annoyed with the startup chime of your Mac, my friend Dan Tullis has developed an app that will cool your rage: Start Ninja will disable the startup chime so you won’t have to remember to turn your volume down before you shut down your machine.

Sep 242011

Recently, I needed to implement a minimal web server in C#. The .NET HTTP classes worked great, but there’s nothing built in to provide MIME types (other than looking in the registry, which I don’t trust to be complete/consistent). So I extracted the data from the Debian /etc/mime.types file for anything with a file extension and created a simple static class to do lookups for them.

Usage examples:

// do a lookup
String mimeType = MimeType.Get(".jpg");

// the dot is optional
String mimeType = MimeType.Get("jpg");

// non-existent extensions will return the default application/octet-stream type
String mimeType = MimeType.Get(".foo");

// you can also provide an explicit default type
String mimeType = MimeType.Get(".foo", "text/plain");

You can download MimeType.cs or view it in-line below.

Continue reading »