What was so revolutionary about Chrome again?

I just had flash cause Opera to have a conniption fit. And you know
what? The only thing that crashed was that one tab. The entire rest of
the browser went on working just fine.

I don't know what happened in the few years since I last used Opera, but
they sure have injected a lot of awesome into it in the meantime.

(And try using ctrl-tab and ctrl-shift-tab in Opera sometime. It sure
seems like Opera has beaten Google to the punch with the whole "you've
got some of your OS in my browser" thing)

Mini Note 1000 actually released

HP has released the new Mini Note 1000. It actually looks pretty nice, and has an Intel Atom in there as well as an Intel graphics card, so it should be pretty easy to get running with Linux. They also made it available with a 10" screen, which is a big improvement. Yes, it's still only 1024x600, but that's not all that bad, especially in something that weighs 2 pounds. I'd like to see what reviewers say about its battery life, and how it stacks up against the Dell offering. (Though it probably makes more sense for me to snag the HP one, since I actually get a discount on that. =)

According to a couple of news sources, they will be releasing a version with some HP custom Linux on it. That's pretty cool, but I'd still have to pave it and put Ubuntu on it. Which means that the one that comes with a Windows license might end up being a better deal, especially if the Linux one is only available with low end hardware.

HP Mini Note 1000 leak

Apparently, pictures of the new Mini Note 1000 accidentally ended up on the HP shopping site. I'm still intrigued by the possibilities of getting a nice tiny laptop, and if this one uses the Nano as rumored, it'll make it higher up on my wishlist than the 2133 did. Hopefully it will also have better Linux compatibility, my coworker spent a good amount of time searching and recompiling before he got X working in Ubuntu. (And if I can't run Ubuntu, I don't want it. ;)

Linux Firefox Fonts

Firefox on Linux has never felt quite right to me, and I've recently
discovered what it was. There's something different about the way
Firefox renders fonts for webpages and the way all my other (GTK+ and
Qt) applications render fonts. It's especially strange, since the
buttons and other form widgets render fonts like the rest of the GUI,
but the web page text is different somehow, and thus seems a bit

I actually discovered this because the laptop that I've been provided by
work has an insane native resolution of 1920x1200 on a 15" screen. Thus,
in order to actually be able to read all my fonts, I've raised the DPI
to 120. This works great in everything, except Firefox, which
stubbornly refuses to use the systemwide DPI setting for anything other
than UI elements. This wouldn't be too bad, because I could just zoom
the pages or raise the font size for webpages, but since form elements
use the system fonts/dpi, they are a completely different size font than
the rest of the webpages, causing no end of rendering weirdness.
Searching for ways to solve this problem was fruitless, since it seems
that there is no way to set the DPI for the web page text, and trying to
customize fontsizes to match everything else via CSS seems to be an
exercise in futility (and pain).

In desperation, I installed Konqueror, and found that it properly
respected my DPI settings, but didn't quite feel enough like a dedicated
web browser for my tastes. So I remembered that Opera exists, and I've
installed that. So far, it's as polished and fast as I remember, and it
seems to work on more sites than it used to. They also removed all the
ads, so I'm a happy camper so far. It's amazing what consistent text
rendering across the entire UI can do for a person. (As an aside, I
think this may be why Evolution feels better than Thunderbird for
reading mail, despite Evolution's somewhat fragile network layer and
lack of proxy support)

Anyways, we'll see how this Opera experiment holds out. We'll see how
long it is until I miss the del.icio.us plugin and Firebug.

Info on Linux Flash crashes

A couple of nights ago, the flash plugin crashed yet again on me, and I decided to look into it. Here's the details of what I found, in the hopes that it may help others. This is a bit Ubuntu specific, but the information might be useful to those running other distributions.

I found ubuntu bug https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/192888 which describes what is happening in great detail.

For those that don't want to click on the link, the short of it is that the flash player has an interface so that you can write an library to make it support audio output libraries that it doesn't natively support. There is a bug in the flash player that makes the player very unstable when this interface is used. Modern Linuxes all tend to use this interface to support modern sound servers, since flashplayer doesn't have any support for sound services.

Apparently, flashplayer 10 does support the sound correctly, so I ended up following the instructions here: http://ubuntuforums.org/showpost.php?p=5587712&postcount=472 and that seems to work. We'll see how my milage fares.

Note that I tried installing the flashplayer manually from here: http://labs.adobe.com/downloads/flashplayer10.html. But I couldn't get the sound to work, so there is still something wrong with ubuntu's sound packages, and one really does need the backported packages from Intrepid to get player 10 to work.

For those of you not on Ubuntu, you can try removing libflashsupport and installing flash player 10, as that might work just fine for you.

This link here: http://ubuntuforums.org/showthread.php?p=4928900 is the manual steps that one can do to get the Ubuntu audio configuration to be sane (and also has instructions on how to install a wrapper for mozilla plugins so that when they crash, they don't take down the browser), but I couldn't get everything to work right with player 10 with those instructions, and I then noticed the link at the top which redirected me to the other forum post that I mentioned earlier.

Phew. Hope this helps.

Network Manager is a flaming pile of crap

Note: This was originally written at least a month ago, and somehow, It never got posted. I started up Evolution this morning after not using it for a while, and apparently it had this unsent message in it's queue. I guess my network setup wasn't working very well at all when I wrote this.

I've generally been annoyed that Network Manager in Ubuntu doesn't give you the option to save a dynamic DNS configuration when you save a network configuration that uses DHCP. Also, I'm unhappy that Network Manager doesn't save the Gnome proxy configuration as part of the configuration. But these are minor gripes. I have recently found out that while Network Manager will let me configure my wireless for a static IP, the resulting configuration will not actually work. At all. I can get associated with the access point, and the routes and other network configuration looks fine to me, but I simply cannot send or receive anything. (And in troubleshooting this, I found that Network Manager doesn't save your WPA password between invocations (when you have a static setup), so if you do something like change the configured IP address, you need to remember to also re-enter the WPA password, otherwise, it will happily forget it.)

Anyways, I ended up having to figure out wpa_supplicant (which is surprisingly straightforward), and reconnect to the access point manually. Now things work, but with the general amount of polish Ubuntu has been showing lately, I really didn't expect to find something this integral to the system as this unfinished. It just makes me sad. I've seen some reports that Network Manager 0.7 fixes the static IP issues, and that's coming in Intrepid Ibex.

Anyways, that's enough pointless complaining. I'm going to do something productive. And perhaps after I move, I'll find enough free time to see if I can help fix some of these problems with Network Manager, because it really is my biggest pain point in Ubuntu these days.

Logitech Alto Notebook Stands

I just discovered these thanks to this ArsTechnica article. They have to be the neatest laptop stands I've seen (not that I've ever really looked for a laptop stand), and the ones with the built in keyboards seem especially nice, assuming that the keyboards don't suck. Oddly enough for something that's basically a USB hub and a keyboard, all of these claim that they require windows, however, Apple sells an Alto stand, and a quick Googling shows at least one person has it working in Linux. I'll bet Logitech is just being lazy with the OS requirements. Maybe I'll get one when I figure out where I'm going to put a desk in our current place.

Timeout::Error in Ruby (Warning, language rant!)

There are bad design decisions, and there are horrible design decisions. The exception class Timeout::Error in Ruby's stdlib is one of those horrible things.

Ok, let me start from the beginning. In Ruby, the standard way to catch any recoverable error in your program is to catch StandardError. Anything that doesn't inherit from StandardError is generally the type of thing that you want to have crash your program. Now, Ruby has a library for having an exception thrown after a timeout. (We'll ignore for a second that this library is implemented in a provably unsafe manner as far as threads are concerned.) You just call the timeout method, and pass a number of seconds and a block. If the block doesn't terminate after the number to seconds, it is forcibly terminated, and the Timeout::Error exception is called. This would be all hunky dory except that Timeout::Error isn't a subclass of StandardError, it's a subclass of Interrupt. "So," one may say, "why even use this thing at all?" Well, because you kinda have to. Want to do something with HTTP? Well, the standard HTTP library happily uses the timeout library to do it's timeouts. And as a result, so does pretty much every other library that has to do something with HTTP. So you're going along in your nice, happy application, when you suddenly find out that even though you're rescuing StandardError so that a network failure doesn't bring down your application, well, that isn't quite true: the minute a network timeout happens, your entire application comes crashing down. The only answer I can find on the internet is that one should always just rescue Timeout::Error when doing anything that might call the timeout library. (rant from a developer that found this way before I did)

What I don't get is how this is still in the standard library. Why not do the obvious thing and just make Timeout::Error a subclass of StandardError? (Of course, the aforementioned problems with the timeout library should be fixed, but I can see that taking a long time) While I forsook Perl in favor of Ruby because of Perl's many gotchas, at least Perl's evil tends to be in my code, not hidden deep in a library that I'm using. And I still miss Perl's copious, usually well written documentation. (Even CPAN modules tend to be rather well documented)

Sometimes, the land of Python seems like it might be nice... (The grass is always greener on the other side, and there is always something hidden in the grass waiting to bite you.)

(I also have a whole rant about the stupidity of Java's properties object inheriting from Hashtable, but that's a lot less insidious.)

(Yet Another Parenthesized note: maybe I just need to go back to my warm, fuzzy, Perl security blanket.)

Stack Overflow

Joel Spolsky just announced the launch of Stack Overflow, which is free a question and answer site for programmers. As one of those that has tried to search for programming questions on google, only to get mostly useless answers most of the time (and half of them behind some stupid pay gate), this sounds like a totally awesome idea. (And you should read Joel's blog post, it does a much better job introducing the site than I.)

Sudo to edit files from within vim

Often, I find myself wanting to edit a file that is owned by root, and many times in these instances, I already have opened the file in vim for reading. It is rather annoying to have to close the file in vim and run a new vim with sudo in order to edit the file. Thanks to a recent post to the vim-mac mailing list, I found the sudo vim plugin.