Reducing Chrome Power Usage in Linux
I'm running ubuntu maverick on my ASUS U35F. It's got a couple problems (LCD screen viewing angle is right out of the 1990s, no nvidia graphics because they only offer the jury-rigged and linux-incompatible "Optimus", no CDROM drive -- I used to care about this; somebody remind me why) but it's fast & quiet, has plenty of RAM and hard drive space, and it has phenomenal battery life. Like you can use it during the whole flight ... to Korea.
That is, it will last the whole flight if you're careful. What's the best way to manage power usage in linux? Powertop. What causes the most problems for a web browser tab-addict like myself? Unsurprisingly, Adobe's flash player ("npviewer.bin") and the resource-hungry applets people create therein. So how do I track down the obscure pages where flash is doing nothing but wasting battery? (the AWS login page, anyone?!?) Press shift-escape to open chrome's awesome task manager, then scroll down to "Shockwave Flash" and click "End Process". Any tabs running flash get a little message bar at the top and battery usage falls to a tree-hugging 8-watts-or-so.
Speeding up Google Chrome in Linux
Google-chrome was getting slower and slower on my otherwise-performant-seeming EeePC laptop. Sometimes it would take 10 seconds to open a page. And, after opening a page, while further assets were loading, the browser would become unresponsive and Chrome would offer to kill them.
Why? Well, I'm running ubuntu karmic, with a luks-encrypted ext3 home directory on the EeePC's cheap SSD. Somewhere in that stack, I believe Chrome's disk cache writes were beginning to bog down, as evidenced by kcryptd's appearance in "top".
To prove that disk performance was the culprit, I copied ~/.cache to my ramdisk /tmp/ directory and symlinked it back to my home directory. This instantly made chrome feel faster than a flying potato.
So how do I get that level of performance while still storing my cache on a persistent storage medium? After mucking around in /proc/sys/vm/ for a while to no avail, I tried ext3's "data=writeback" option. Works like a charm. The occasional fsck seems like a small price to pay. And, of course, it speeds up every app on the machine -- not just Chrome. This is life-changing if you have a cheap SSD.
Helped build CrowdPhoto this weekend at Startup Weekend LA.
What was fun for me: Doing another project with the talented "ShareMySpot" gang from last year's SWLA, attracting a couple developers willing to learn the Android platform (in 48 hours!) and able to launch the mobile app that makes CrowdPhoto push-button simple, learning about the power of realtime PR (Twitter), learning about Amazon SimpleDB, working with the new ubuntu "lucid" release, barbecue on the roof of an Ocean Ave apartment building, a third customer for filter.to, and meeting a bunch of smart people from the LA startup world.
CoLoft graciously hosted the event and sponsored a 1-month free membership for the 2nd-place team, so I look forward to taking advantage of that over the next 4 weeks!
ZipRecruiter (previously named StarterView), is a new site we launched that helps hiring managers find candidates. ZipRecruiter is already delivering value for its closed beta customers, so we figured it's time to open it up to the world. Come on by, create a free account, and start receiving qualified applicants in your inbox. We'd love to hear your feedback.
Firefox Search Tool for Google
Lost your Firefox Search Tool (aka "search plugin") for Google? I did. Here's how to get it back without reinstalling firefox.
Right click this Firefox Google Search Tool link, select "Save Link As..." and save it in the "searchplugins" subdirectory of your profile folder. You may need to right-click in the "save as" dialog and tick the "show hidden files" checkbox. Restart firefox and you'll have your google search plugin back.
What I Do When Android Is Slow
When my HTC G1 (running android) gets slow, I have a simple, free way to speed it up (for a while). Eject the microSD card. Remember to unmount it first (Home -> Menu -> Settings -> SD card & phone storage -> Unmount SD card).
Plug the card back in, and life is good.
Unfortunately, the first google result for "android slow", has been marked read-only ("archived") by T-Mobile and its upshot is "buy a new SD card". Here's hoping this blog post climbs high enough in google to save a few people some money.
I converted each of my CDs to a single FLAC file for online access
and backup. See earlier post about abcde.
Here's my recipe for using ubuntu hardy to convert them into small
audio files with id3-style info available, for use on my android phone
or Michelle's Sansa Fuze:
your Sansa Fuze to the latest firmware. Settings > SystemInfo >
Version should be at least V01.01.32A . If you don't have a
"SystemInfo" section, I think you need to upgrade.
- sudo apt-get install mp3splt
- oggenc file.flac
- mp3splt -c file.flac.cue file.ogg
That's it. Mp3splt extracts artist, album, track information from the
cue file and puts it in ogg comments, which are read by both the Sansa
Fuze and the android music player.
Economizing yesterday, I went to Subway for lunch. With my order, they gave me four of those scrach-and-win type cards. The first three yielded nothing, but the last one showed I was the winner of a BOGOF Reggae Chicken Sandwich. Exciting! I've never had bogof reggae chicken before.
Normally, I wouldn't eat Subway two days in a row, but I recently read about a study that shows people tend to put off appealing tasks just as much as they put off unappealing tasks. And, while I'm savvier and more diligent (not to mention more handsome) than the average punter in a psychology study, in this respect I'm afraid my propensity for ruts leaves me on the other end of the bell curve. So today, I went to another Subway to cash it in ASAP.
I can almost taste the delightful bogof reggae chicken as I stand in line and the manager congratulates me as their first winner! Even better, my golden ticket curiously didn't specify whether I was to be the recipient of a free 6" sub or a free 12" sub. But guess what... she's preparing the full 12-incher for me. Truly, today is my lucky day.
At the end of the line (No thanks, no sauces on that; I wouldn't want any superfluous flavors that might compete with the delicate mixture of bogof reggae herbs and spices) she taps at the register a bit and demands £2.99. Excuse me? That's more than a whole sandwich at the Subways back home. And what about my golden ticket?!?
"No," she says, "that's the price of a 6 inch. You see, this here means 'Buy One Get One Free.' So I gave you one 6-inch sandwich for free and you have to pay for the other one." I'm not sure what the penalty is here for pelting the cashier with those obnoxious little pound coins, so I thanked her, took my sandwich, and left.
So today's recommendation to heal the economy is: Let's not give our tax dollars to the !@#$% marketing department.
One Small Step for Crisiskind
Here's my contribution to fixing the financial crisis: Any bank that gets more than a billion of my tax dollars must abolish ATM fees. That would encourage people to spend more money, right?
The Solitary Basics at Parque Nacional Puyehue
We are sipping a cup of wine-from-a-box at a roofed picnic table in
campsite 23 at Camping Chanleufú in Aguas Calientes, Chile. The night
is damp and chilly but we have warm clothes. There's a light under the
roof, so Michelle is reading her book, and I have the laptop plugged in
so I can blog and do a little computer programming. We plan to break
out the MSR stove in an hour or so to cook instant risotto.
There's nobody else in the campsite. So far, we haven't even seen a
ranger to collect the alleged $20 fee. Maybe has something to do with
the car barrier at the entrance, but of course we just walked in from
It's kinda bizarre, but we have everything we need. Another day well
below our target budget...
The procedure I followed to get ghc 6.10, cabal-install, and happs-tutorial 0.6.5 working in ubuntu 8.10 (intrepid) or ubuntu 8.04 (hardy)
cat <<EOF >~/bin/cabal-install-this
runhaskell \$setup configure --prefix=$HOME --user &&
runhaskell \$setup build &&
runhaskell \$setup install --user
chmod a+x ~/bin/cabal-install-this
sudo apt-get install libgmp3c2 gcc libc6-dev g++ zlib1g-dev libgmp3-dev darcs
tar jxvf ghc-6.10.1-i386-unknown-linux-libedit2.tar.bz2
sudo make install # installs in /usr/local/ by default
tar zxvf HTTP-$httpv.tar.gz
tar zxvf zlib-0.5.0.0.tar.gz
tar zxvf Crypto-$cryptov.tar.gz
darcs get http://darcs.haskell.org/cabal-install/
cabal install happs-tutorial
happs-tutorial 5001 True True
Tab Mix Plus Session Management
Tab Mix Plus' Session Management works better for me than either Session Manager or Firefox 3's built-in session management features. In particular, the crash recovery features of the latter two don't work well for me. Tab Mix Plus' crash recovery works great. Important now that I'm using Adobe's alpha and crash-prone 64-bit Flash plugin.
ripping to flac + cue for slimserver using abcde in ubuntu hardy
Ubuntu Hardy Heron erased my mp3 collection. OK, I was a little reckless in assuming that, if I installed it over my existing ext3 partition, it wouldn't overwrite /usr/local/mp3/.
Photorec actually was able to recover over 15,000 mp3 files. Unfortunately, I don't own 15k mp3s. It had recovered 15k mp3 fragments. Fun to listen to on shuffle play (sounds like somebody fiddling with a radio dial in a city full of people exactly like me) but not really "recovered" in any useful way.
My take-away from this experience? Store files like this (not sensitive, but expensive to reproduce) on a partition that has good undelete support. Ext2 supports undelete; ext3 does not support undelete.
On the bright side, this is a perfect excuse to re-encode my entire collection in a lossless format. I'm still trying to decide whether to pay $1-2 per CD to have an outside service rip and encode my CDs or just feed CDs into the machine myself. In the meantime, I'm at least trying to identify the perfect format. I think I've found it: FLAC + cue seems like the best "copy of the CD" approach. Slimserver plays them gaplessly and you can burn a FLAC + cue file to a CD directly, if necessary.
In the past, I've liked abcde for ripping CDs, so I used the following command to rip the CD and the cue file in ubuntu hardy:
abcde -1 -M -p -o flac
This worked fine, except that slimserver wouldn't read the FLAC file. It just showed 10 tracks, each with the title of the album. After a little fiddling, I found that changing the "FILE" line allowed slimserver to read the file. So here's a messy litte script to fix up the cue files after ripping:
find . -name '*.cue' -print | xargs perl -pi.orig -e 'my $flacname = $1 if $ARGV =~ m#/([^/]+\.flac)\.cue$#; s/^FILE "dummy\.wav" WAVE$/FILE "$flacname" FLAC/;'
Firefox Search Plugin Selection
Using a firefox search plugin has some advantages over a custom keyword:
- Firefox will suggest searches based on what you've typed so far and (I assume) what other people have searched for. This actually often helps me search better.
- Firefox keeps a history of my past searches.
- Search plugins are easy to create so I probably don't have to write my own firefox keyword.
- All searching actions are reachable in one place, using Ctrl-K.
One thing that took me a long time to figure out: You can scroll through your search engines using Ctrl-Up and Ctrl-Down (while the cursor is in the search field). This is a little worse than typing "Ctrl-L g g " because it requires you to look at the search box (the latter can be done with your eyes closed). But given all the other advantages of OpenSearch, it's how I search nowadays.
A couple months ago, my office moved near my apartment. Not only are we now located in a vibrant, scenic, progressive, beachside community, but we are also close enough to my home that I can bike to work. And, four days out of five, that's what I do.
I knew driving in Los Angeles made me frustrated. It just seems like such a tragic waste of everyone's time. But I had no idea how happy I would be commuting by bike. Well, the jury is in.
What do I like about biking? The smells. The unobstructed panoramic views (OK, maybe a convertible would work for that). Sneaking right past lines of stopped traffic. Free parking. No time spent in the parking garage, waiting in a line of cars behind the Escalade that just has to have the parking spot currently occupied by the world's slowest person. Free exercise. Food is cheaper than gas. I can bike home after three beers.
Keyconfig for Mouseless Mozilla
I've spent a few hours over the past few weeks getting my ubuntu postfix installation configured to support SMTP AUTH. After screwing around with Cyrus SASL for far too long, I found this suggestion in the postfix SASL README: Use Dovecot's SASL support instead.
Since I had already switched from courier to dovecot as my IMAP server, modifying its configuration to serve SASL for postfix was a breeze. Dovecot rules!
Today I smelled something that reminded me of preschool. Someday I'd
like to go find all the smells that remind me of various phases of my
childhood: all the schools I attended, everyone's home I visited, all
the foods I ate.
Then, if there were some way to make my own scratch-and-sniff book...
Family That Walks on All Fours
I saw a touching and educational Nova episode tonight about a family
in Turkey, many of whose members are afflicted with a genetic disease
that interferes with their ability to walk upright.
It's fascinating how our genome leads to our actual morphology. It's
as if our genes were designed for evolution. I wonder if other
organisms (viruses?) or ecosystems fail because the way their genotype
encodes their phenotype doesn't lend itself to stable mutations like
ours does. Perhaps this trait could be defined and measured as a
reduction in the percentage of possible mutations that yield
catastrophic (unsurvivable) failures.
There are lots of ways to encode (compress) information. Some just
seem to be more useful (meaningful?) than others.
Blinking VCR Light Rant
Everybody loves to make fun of the luddite who slaps a piece of masking
over the incorrect, blinking time displayed by their VCR. Granted, in
this age of DVDs and PVRs, only a luddite would still own a VCR. But
these infernal, blinking, green, epilepsy-inducing, referenceless
non-clocks are installed in everything these days, including radios,
microwave ovens, and cars.
The masking tape user does not deserve our scorn. It's the VCR
designer who is to blame. He assumes the user wants their VCR to know
the correct time. Now, some people
use their VCR as a clock. Some people ask their VCR to record a
specific channel at a specific time, and this requires that the clock
be accurate. But nobody else, luddite or technophile, needs
their VCR (or radio or microwave oven or car) to know what time it
Setting the time on your VCR isn't trivial. Even if the buttons
are clearly labeled, first you have to find an accurate clock and then
you have to press your clearly-labeled buttons in one of the
seemingly-infinite combinations and permutations on which all the
different manufacturers have failed to standardize. Power outages are inconvenient as it is. Why must our presumptuous
appliances hassle us further? The VCR should be able to figure out
whether I need it to know the correct time. Only show me the blinking
clock if I have a program scheduled to record.
While I'm defending the luddites, I gotta make a case for the VCR
too. Its superiority lies in its comprehensible user interface. The
DVD menu is, possibly excluding Brad Pitt, the most-annoying invention
of the movie industry. What made them think I wanted to solve a
goddamned choose-your-own-adventure game just to watch my Star Wars 2
DVD? Which button is highlighted? Do I go "right" or "down" to get
to the next button? Did my remote control's infrared command not make
it to the DVD player, or did it receive the command and is it just
waiting for steam to come out of my ears before actually performing
it? I long for the "play", "rewind", "fast forward" simplicity of the
VCR. The DVD gives me nothing in exchange for the simplicity it
A few weeks ago, my friends and I walked past an illuminated, temporary road sign. It had a solar collector at the top to charge its battery. We speculated that it would be more efficient to redirect the light from the sun out through the pixels in the sign.
Likewise, if fully-optical computers become practical, perhaps I can power one by just setting it out in the sun.
Yeah, yeah: peripherals, nighttime...
Here's a fun way to make linux system administration more like first
I took the "Personal DNA" test today. There are 20 minutes of my life I'll never get back. The results were pretty accurate. But that could just be because they're parroting back all my answers to their questions.
I really appreciate the word "plurality". It's the word that, at a
glance, tells you you're reading a patent and not, say, a useful
document that actually explains how to do something.
Gnome "Run Application" Dialog
To bring up the "run application" popup in gnome (on ubuntu dapper,
anyway), use "Alt-F2". If you just want to run some X program (like
xmag), this is quicker than opening a whole terminal.
GMailUI and Courier IMAP
I am very pleased with Ken Mixter's GmailUI Thunderbird extension. My #1 favorite feature is that it lets me use the "Y" key to yank the message into my archive folder. But it took my a while to figure out how my IMAP server (Courier) organizes its namespace. All the folders are under "Inbox.". So, in order for the "Y" key to work correctly, I need to configure GMailUI to point to "Inbox.Archive".
If I get a free hour, I'd like to extend GmailUI to move the message into "Inbox.ConfirmedSpam" (for input to spamassassin's Bayesian classifier) when the "Y" key is pressed on a message that's marked in thunderbird as "Junk".
Tab Mix Plus
I just started using Tab Mix Plus. It's great. I'm a fan of these features:
- when closing current tab, focus last selected tab
- open new tabs next to currently one
I disabled these features that came enabled by default:
- "close tab" buttons
- "new tab" button
I'm not so sure about these default features, but I'm going to give 'em a try for a while:
- Ctrl-Tab navigates tabs in the most recently used order
Building HAppS in Ubuntu Dapper
Took me a while to figure out how to build HApps under ubuntu dapper. Here's what I did:
# build fps (seems to be no ubuntu package for this)
darcs get http://www.cse.unsw.edu.au/~dons/code/fps
# HAppS calls breakFirst:
darcs obliterate --from-patch "we kill breakFirst/breakLast"
runhaskell Setup.hs configure --ghc --prefix=/usr/local
runhaskell Setup.hs build
sudo runhaskell Setup.hs install
# build HApps
darcs get --partial http://happs.org/HAppS
darcs obliterate --from-patch "we kill breakFirst/breakLast"
runhaskell Setup.hs configure --ghc --prefix=/usr/local
runhaskell Setup.hs build
sudo runhaskell Setup.hs install
TwinView vs Xinerama
When I set up my dual monitor workstation, I was in a bit of a
rush. I cobbled together an xorg.conf file for my ubuntu breezy
workstation, got it so it looked right and didn't think much about it
for 5 months.
Over that time, I noticed that window drawing was surprisingly slow
for my state-of-the-art workstation. OpenGL screensavers -- which I
expected to run reasonably fast with my modern-if-not-gamer-quality
Nvidia Quadro NVS 280 PCI-E card -- ran at a pace reminiscent of Mesa.
So yesterday, I did some googling and came upon TwinView. I set it up with a simple device section in xorg.conf:
Identifier "NVIDIA 1"
Option "TwinView" "1"
Option "MetaModes" "1600x1200,1600x1200"
and, suddenly, everything is snappier. Most importantly, my screensavers look better. Now does anyone know how to convince xscreensaver to display 1 hack across both screens?
Get Rid of Silly Colored Bars in Mozilla Thunderbird
I got a plaintext email newsletter today that included some headers
that look like:
Of course, thunderbird thinks it's clever and wants to render this
as a 14th-level blockquoted citation with a large pyramid of stacked
colored bars. I decided I'd like to do without the eye candy and
finally found a forum posting that tells how. Since it's not so easy to read that forum, here are the distilled instructions:
Add this to ~/.mozilla-thunderbird/*.default/user.js:
Add this to ~/.mozilla-thunderbird/*.default/chrome/userContent.css:
padding-bottom: 0 ! important;
padding-top: 0 ! important;
padding-left: 0 ! important;
border-left: none ! important;
border-right: none ! important;
Setting gnome-terminal Default Profile
After creating a few gnome-terminal profiles to set different
foreground/background colors for different types of terminals, I found
that newly-created gnome-terminals would use the profile I created
last rather than the original one now misleadingly named
My friend showed me how to fix this: This is one of the gnome-terminal
commands that is only available through the menubar. Right-click in
window, select "Show Menubar". Under the "Edit" menu, select
"Profiles...". Then you can select from the pulldown titled "Profile
used when launching a new terminal". Whew.
Spam Review Autoscrolling Viewer
Somewhat obsessive as I am, every week I review my spam folder. These
are messages spamassassin has scored as spam. I don't want to miss
any ham and, more importantly, I don't want to mess up spamassassin's
I couldn't find a way to convince mozilla thunderbird to sort by
spam score, so I wrote a perl script to read my Spam Maildir and
display it in an 80-character-wide format with the columns [score,
from, to, subject], sorted by "score" and "from". Then I use "less
-m" to view review this report.
So far, so good. But the way I review it is to scroll slowly in
the beginning and quickly toward the end. It's fairly unscientific.
What I'd like to write is a program that scrolls through the entire
list in X minutes, giving each message review time inversely
proportional to its spaminess score. And I think it would need a
I've added another weapon to my anti-mouse arsenal: XBindKey. Here's a quick cheat sheet:
- xbindkeys --defaults > $HOME/.xbindkeysrc
- xbindkeys --key # press a key to learn its syntax in .xbindkeysrc
- killall xbindkeys; xbindkeys # The manpage says "killall -HUP" works, but it doesn't for me.
I'm a big fan of operating my computer using the keyboard (as opposed to the mouse).
The advantages include:
- I can type without looking at what I'm typing.
- I have to type a lot anyway, so time spent moving my hand from my keyboard to my mouse and back is time spent, well, moving my hand.
- I put my keyboard in my lap and let the arms of my office chair support my elbows to reduce strain on my wrists. I have not found any similarly-comfortable way to arrange my mouse.
Unix used to be very keyboard-friendly. Now that so much of what we do on the computer is graphical, Windows' integrated OS and graphical toolkits generally put the X-gnome-gtk mishmash to shame in terms of consistent keyboard navigability. Emacs remains a paragon of super-efficient keyboard navigability [I just pressed alt-slash to autocomplete the word "navigability". There. I did it again. :)], but many of the other programs I use on a day-to-day basis require me to reach for the mouse. The worst offenders are firefox and thunderbird.
Once upon a time, I thought the best way to deal with this problem was to read mail and browse the web from emacs. Unfortunately, w3, w3m, and gnus, while having some serious strengths are just too slow, unable to display graphics, and difficult to configure. So I'm stuck with firefox and thunderbird which, despite their lack of obvious shortcuts, boast thousands of developers who make them the leading networking applications of our time.
If you want to learn how to save some miles on your mouse while browsing the web, first go read Adam Pash's Mouse-less Firefox article and the thunderbird keyboard shortcuts page.
That's a nice start. But there are still a lot of common tasks for which I've found no reasonable keyboard shortcuts. Here's my wishlist. I'll post solutions as I find (or create) them.
- (delicious) bookmarklet shortcut: Write a firefox keyword that takes the url of the current page as an argument? Use the delicious firefox extension?
- "search for button" shortcut (like using "'" to search for a link)
- emacs keyboard shortcuts in textareas: Perhaps mozex together with emacs can fulfill this wish and more.
- copy url of current page to X clipboard
- deselect url bar (after pressing ctrl-L): Shift-tab almost works, but it jumps to the bottom of the page.
- thunderbird: move currently-selected-message to my "Done" folder
- display page history and allow me to navigate forward or back more than one page at a time
Charles Schwab fails to provide sufficient transaction history
It is frustrating, in this day and age when I have a $20 USB key in
my pocket that holds a gigabyte of data, that Charles Schwab, with
their millions of dollars and thousands of servers, can't show me a
single transaction I made more than four years ago.
They say they're "working on it". Well I'm working on transferring
my account to Etrade. Let's see who finishes first.
Interactive Brokers APIs
Looks to me like the only game in town for automated stock trading for individuals is Interactive Brokers. Sure, you could write a WWW::Mechanize script to slog through your broker's frame-filled web site, hoping you don't someday accidentally purchase 1000 google puts just because your broker changed the order of the items in the pulldown list, but I would feel a lot more comfortable entrusting my transactions to a broker that has given some thought to a simple online API.
Interactive Brokers seems to provide a Java API that they claim works in unix. Getting java working on my debian box and then programming in it sounds like the kind of pain I would not enjoy. But the Interactive Brokers TWS API Wiki also mentions C, Python, and Perl APIs that have been crafted by community members. Hmm...
[updated 2006-03-15] There's an application called Medved QuoteTracker that has a stock trading API. It, in turn, passes the requests on to one of the ~14 brokerages they support. Sounds like a jury-rigged solution that involves keeping Windows running on a computer or a virtual machine. But it just might work...
Postfix 1, Exim 0
A few weeks ago, the exim installation on my ubuntu laptop stopped using SMTP AUTH to communicate with its smarthost. I wrestled with it for a few hours over the intervening time and never made any progress.
Tonight I thought "maybe I'll see if postfix can do it." I did an "apt-get install postfix", then followed these instructions) and, less than 15 minutes later, it was working.
Running 32-bit applications under ubuntu amd64
If you try to run a 32-bit application under ubuntu's 64-bit amd64
distro, you get the following error:
unable to execute <program>: No such file or directory
The Debian AMD HOW-TO describes how to configure a debian-based system to run 32-bit apps. Below is my ubuntification of those instructions.
sudo apt-get install debootstrap
sudo debootstrap --arch i386 breezy /var/chroot/breezy-ia32 http://us.archive.ubuntu.com/ubuntu/ # this takes a while
sudo chroot $ia32root file /bin/ls
sudo chroot $ia32root /bin/ls
Dictionaries in Ubuntu
If you're looking for /usr/share/dict/words (which seems to be
missing from my ubuntu breezy installation), You may want to install
"scowl" instead. It has contains a number of comprehensive,
easy-to-parse word lists.
Xmodmap for Sager NP5720 keyboard in linux
The default keyboard layout for my new Sager NP5720 laptop had
some problems. The numeric keypad's PgUp and PgDown keys almost
worked except, when the shift key was depressed, they would output the
numbers 9 and 3 even though Num Lk was off. This is a pain because
linux terminals use shift-PgUp/PgDown to scroll.
After an hour of research, twiddling, and trial-and-error I found
that this fixed the problem:
xmodmap -e "keycode 81 = Prior Prior KP_9 Prior"
xmodmap -e "keycode 89 = Next Next KP_3 Next"
I used "Prior" instead of "KP_Prior" because the gnome app evince
didn't understand ctrl-KP_Prior. I'm sure this will come back to bite
me someday when I'm playing a game or something.
This approach also has the drawback that it breaks the 3 and 9 keys
when num lock is on. But I never really use the numeric keypad, so
this isn't a problem for me.
Y Combinator Brain Pain
Joel Splosky's recent article about The Perils of JavaSchools mentions fixed point theory. Despite the fact that my CS degree required nothing so advanced as a true understanding of a fixed point theorem, I wanted to feel that I was the kind of person who, if he put his mind to it, could wrap his head around the concept. Besides, it's related to the Y combinator, and my friend Ben and I had taken the time to understand that a few months ago. Right?
When I was a kid, lying in bed trying to sleep, sometimes I would play a game with myself where I would visualize a golf ball rolling into a hole. The particular image is fairly irrelevant (Freudian analysists start your notepads) but the point is that I often couldn't get the ball to roll in the hole. I would try to push it in and it would slip away. An inability to command one's own mental visualization is disconcerting.
Anyway, visualizing why or how the Y combinator finds a fixed point of the function that's passed to it is giving me that same feeling. I get this close to understanding how it all fits together and then <poof> it slips away as I lose track of the pieces.
How bad form is it to post a fortune fortune on your blog? As an entire entry? Hopefully the blog police will overlook this transgression. Enjoy:
Take time to reflect on all the things you have, not as a result of your
merit or hard work or because God or chance or the efforts of other people
have given them to you.
I've lived in rented apartments for over 10 years. But now I'm getting to the age where I think I would really like to invest some of myself and some of my money in a place.
Unfortunately, I live in one of the most expensive cities in the country. And real estate prices have been rising quickly over the past five years so I don't want to risk losing a lot of money when the market inevitably cools.
I often wonder whether commune-style living could work for me. I don't need a lot of private space -- pretty much just a bedroom and a refrigerator. The rest of the space I'd like to invest in -- a big yard, a living room, a bathroom, a kitchen, an Internet connection, a garage, even a car -- could theoretically be shared, given the right arrangement. I actually like having people around. And, while there are inevitably conflicts among people who have to share spaces, the built-in community, the shared destiny (if 10 people depend on the Internet connection then ~10 times as many resources can be dedicated to fixing it when it's broken), and the diversity of skills might make up for the work required to resolve conflicts.
Last night I finally did a little googling and reading and found that the modern, PC term for a commune is intentional community. It looks like people have done lots of thinking about and experimentation with various models. Parameters include: work affiliations, how income is shared, religious affiliations, decision-making style, and much more.
I think I'd favor a fairly capitalistic arrangement. I'd like to save money and build community by sharing big, expensive things, but I would like the freedom to work and spend the rest of my money how I please (entertainment, travel, food) without these private decisions being subject to community review. I also might be willing to pay others to do community chores I'm not interested in doing.
Old personal web page (further) retired
My old home page is
so 1996. Back in those days, web pages were largely static.
Accordingly, I guess I felt the need for a single page that described
"me". I'd edit it as friends created web pages or I wanted to publish
some new source code or pictures. But the page was all presentation
and no semantics so changes to it weren't easy to discern.
Recently, I've come to realize that the aspects of myself that
change are more numerous and maybe even more important than the
aspects that remain constant. It looks like this blogging/RSS thing
is here to stay and, while I still find the notion of polling for
updates absurd, at least RSS acknowledges that change is important
enough to be a first-class citizen of the web. I'm sure that when
there are so many RSS producers and consumers out there that the
Internet grinds to a standstill, people will migrate to a more
scalable system like FeedTree or something.
In the meantime, I'm a-bloggin and I'm so embarrassed of my old
home page that I just changed my
four-letter domain to redirect here instead of there.
My grandmother needs a laptop computer. Since her needs are simple
(web browsing, emailing, viewing digital photos sent by her adoring
grandson) I thought I'd install linux on an older laptop and give her
that. Over the past few months, I've tried to refurbish two different
laptops. The first, my Dad's old Gateway 400 MHz P2, worked OK until
I tried to get the PCMCIA (Cardbus, actually) port working so she can
get 802.11g wireless access from her room. At this point I don't
remember the exact problem, but it was a no-go. The Gateway had a
flaky power switch and a pretty annoying keyboard layout to boot.
So this weekend, I dusted off the old Dell 400 MHz P2 laptop that
served me well for years after I bought it from my previous employer.
I tried to install ubuntu on
it. It failed repeatably with some vague error message like "could
not install base packages". So I tried debian and noticed some funky hard drive noises accompanied by an extremely (brokenly) slow formatting process. Remembering that this laptop also has a jenky power cord and that the value of the time spent on this project was climbing into the hundreds of dollars and that I really like new gadgets myself, I began to investigate a new laptop for myself. Here's what I found:
I've gotten lazy in my old age. Nobody ever got fired for buying
Dell and they've come out on top in many of my own past comparison
shopping exercises. So I went through a navigational hierarchy that
was obviously designed by a large committee of people who profit from
you making the wrong choice at any turn (Wouldn't it be nice if the
page you go to when you click the word "Notebooks" at the top of their
site went to a page that showed you all of their notebooks?),
and eventually found Dell's uber gaming laptop (I'm sure that link will break next time the committee decides they want to redo their entire site in pink). Nice. Looks good, has a higher resolution than any desktop machine I've ever used, and is undoubtedly faster than any desktop I've ever used. They say gaming laptops are here and I believe 'em. But once you select the GeForce Go 7800 GTX and the 7200 RPM hard drive, Dell's XPS M170 costs more than $3200!
On the off chance that there might be somebody out there who could undercut Dell, I did a little googling and found the Sager NP5720. Wow. This can be configured with all the features of the Dell for just $2300. And it has a nifty built-in camera and a built-in 4-in-1 card reader. It doesn't look like a pair of Nike sneakers (the Dell does), but for $900, I'll buy myself a few pairs of Air Jordans.
Fun with userspace filesystems (FUSE)
Userspace filesystems have a high gee-whiz factor. I expect
a filesystem to be a simple, clunky, old repository of data that
changes infrequently. Sure there are filesystems like procfs, udev,
sysfs, usbfs, and tmpfs. But I don't know what half of those are and
the other half are just little read-only or write-only windows into
But FUSE lets you write
your own filesystem as a user-level process in less than 100
lines of code.
In fact, there are 37 different filesystems built on top of FUSE. These include a versioned filesystem, a versioned filesystem built on top of cvs,
a way to mount a relational database as a filesystem, a simple bluetooth filesystem, a gmail filesystem (maximum filesystem size 2.6 GB and counting :) ), a bittorrent filesystem, and more.
Sony PFM-42X1 transformer buzzing
I just recently noticed that my Sony PFM-42X1 plasma TV makes a 60Hz buzzing noise when it is displaying a bright image. It's as if drawing all that power makes the transformer noisier. Annoying as it is less than 1/60th of the way to its expected half life.
I found that putting it in "power saving: reduce" mode makes the picture a bit dimmer and pretty much eliminates this noise. I suppose it'll probably increase the life of the TV too.
"Google This Site" Bookmarklet
Many web sites have sub-standard or non-existent site search
engines. Fortunately, there's google. I often found myself using my
keyword to search the current site for a page like this: "gg
But I do this so often that I wanted to save a few keystrokes.
This bookmarklet does the "gg site:joeedmonds.com" part automatically,
popping up a dialog to ask you for the search keyword(s).
To add it to your browser,
drag this button into your bookmarks or your toolbar:
google this site
My FICS cheat sheet
xboard -ics -icshost freechess.org -size Average -telnet
examine joeski 0
seek 10 5 f m
match user (to play a specific user)
say Hello (last) opponent!
kibitz Hello people watching this board!
whisper Hello watchers who aren't playing.
Travels in Ireland and London
Michelle and I landed in London over a week ago, on Saturday morning. Though the seats on Virgin were smaller than the seats I remember on Delta a year and a half ago, lack of sleep, earplugs (provided in the complimentary Virgin gift pack), and a sleep mask (ditto) let me get a full four-or-so hours
Since then, we've flown to Dublin, where we rented a car and spent a couple hours learning, the hard way, how to drive on the lefthand side of
the road and negotiate the dreaded European roundabout. A few hours later we made it to the beautiful seaside town of Westport. Here we found the first and nicest of the many B&Bs we would stay at over the next week. After a visit to Matt Molloy's (a member of the Irish band The Chieftains) Pub, we split a doner kabob and chips and then headed for a younger pub where we played cards and watched the locals.
The next day we headed down to the Ailwee cave and through The
Burren -- beautiful and remote.
Then on to Galway, where we had the best (and least Irish; coincidence?) meal of the trip near the Spanish Arch.
I should mention the Irish Breakfast, the source of much discussion among health-conscious travelers: Every B&B serves, for the 2nd 'B', an egg or two and a variety of fried pork products piled on the plate. To soak up the extra grease, some non-Atkins-approved bread is served with butter and jam. On the bright side, that's enough calories to get you through the entire day.
At dinner, we sat next to John Montague and his wife -- on a book-signing tour for his latest poetry collection -- who recommended the Dingle Peninsula as a smaller, more beautiful version of the Ring of Kerry. So, after Galway, we
headed there, cycled around, explored the remote grassy peninsula and beaches, and had a nice lunch overlooking the ocean and some of the ancient beehinve fortresses.
We considered spending the night in this nice little town but decided instead to press on to touristy Killarney. While the town itself isn't very special, we took a spectacular, 34 mile bike ride around the lakes and through the Gap of Dunloe. While a pain in the ass (literally), it has probably been the high point of the trip so far. You'll see when I post the pictures...
Next morning we decided to try to get halfway to Dublin, so we
went to Kilkenny, which the friendly woman who ran the B&B in Killarney had recommended. Turned out not to be quite all it was cracked up to be, but the Butler Castle tour was neat.
Yesterday we drove in to Dublin, dropped off the car, and made
our way to our first and last hostel of the trip. We've sort of been collecting ourselves, doing laundry, shopping, sending postcards, and looking for good nightclubs for the last 24 hours. Tonight: the famous Wagamama restaurant and more nightclubs, no doubt.
Tomorrow we fly to London and catch the chunnel train to Paris, where we can hopefully settle down in one room (with its own bathroom) for a few days before the wedding on Saturday.