Recently in geek Category
I'm doing something pretty goofy today: I'm leaving Google. My tattered old employee badge goes back to HR during my exit interview at 4:00 this afternoon. After that I'll be an ex-Googler.
Working at Google was as amazing as everyone says it is. Sure, the perks were nice. I'll miss the delicious meals, the ski trips, the commuter shuttle, and TGIF. But any company could provide such benefits, given enough free cash flow. What makes Google unique is its culture of respect. The tough interview process means that engineers are treated with respect from their first day. In such a supportive environment, even the most timid person works with self-confidence, which is marvelous to witness. This element of the company's culture was the biggest difference between Google and every other place I've worked in the past. I hope to take it with me throughout the rest of my career.
Which brings me to the future. What's next? I'd originally intended to take a year off and bang on a few software ideas that have been rattling around my head. I'd then pick the most promising one, find some friends, and start up a new venture. As it turned out, things went faster than I expected, and not exactly in the order I'd expected, but the result was the same.
My new venture is a software startup called FSX. I think of the company as a mashup of eBay, Charles Schwab, and American Idol. FSX will use a highly accurate, simulated brokerage to identify skilled stock portfolio managers. For the majority of participants, the fun of FSX's community and fantasy stock exchange will be its own reward. But there will be a tiny number of managers who we find can consistently outperform the field. For those newly discovered stars, we'll provide a market of investors willing to entrust real investment funds to their management.
The business idea is risky, no doubt. The Random Walk Down Wall Street crowd has seen all this before. But the premise that stock-picking is a legitimate, repeatable skill also forms the foundation of the hedge fund and mutual fund industries. If you (or your pension plan) have any of your money in a managed mutual fund or hedge fund, then you believe the premise, too.
The technical challenges are less risky, but to me they're even more fascinating. The uptime and integrity demands are arguably higher than those of a real brokerage. A slow trade in a real brokerage might cost one customer a certain amount of money. In fact, depending on how the ticker goes, the mistake might even earn the customer more money. But every complaint about FSX's performance damages its status as a faithful brokerage simulation, and that in turn damages the value of its entire community. Building a top-tier brokerage website would be hard enough. Our goals are much higher than that.
eBay built a global marketplace out of Pez dispensers and Elmo dolls. They made it possible for you to find that one guy out there who wants to buy your dusty old deluxe chartreuse dinglehopper. He completes his dinglehopper collection, you get some cash and some extra space on your shelf, and the world's a better place. FSX will do the same thing for investments and investment managers. If you think you have management talent, we'll prove it for you. If you want hedge fund-level talent cheaper than the cheapest mutual fund, we'll find it for you.
If you'd like to see a preview, add the Fantasy Stock Exchange application to your Facebook account. If you're a smart software engineer in Silicon Valley and want to join something big while it's still small, .
If life were Hollywood, I'd be typecast as The Guy Who Understands AMT As It Applies To Your Company's Stock Options. I get asked certain questions often enough that it's time to write up my answers. But remember, I'm not a tax lawyer or accountant; I just play one in movies. So get real tax advice from a professional.
Two questions are popular. First: "I just joined a company and got some stock options. There's something in the agreement about early-exercising. I understand how options work, but I don't understand why anyone would exercise early. What's the deal?" Second: "Oh boy, we're going public in six months, and the lockup expires 6 months after that! Should I exercise my options now to get the long-term capital gain rate on my zillions in profits?"
There are two considerations when you exercise ISOs (Incentive Stock Options): capital gains, and alternative minimum tax.
If you sell an asset more than a year after you acquired it, you're federally taxed on the profit at 15%. Less than that and it's the same as your ordinary income tax rate, which is probably 28%. So if you exercise your options, that means you buy the underlying stock, and that starts the cap gains period running, and you might cut your federal tax on the profits in half. Note that there are some funny rules for ISOs that effectively change this period for early-exercised stock to two years; either way, it's beneficial from the cap gains perspective to exercise as early as possible.
However, AMT can really screw you over. AMT is like an alternate universe that's even weirder than the normally taxed universe. You're potentially taxed on imaginary income, for example. In our case, the imaginary income is the difference between so-called fair market value of your stock on the day you exercise, and if that amount is large, you have to pay AMT on it, even if your stock ends up worthless by the time you're actually able to sell it.
Here's an example.
- On 1 Jan 2008 Joe gets 10,000 options of ABC Corp. at strike price of 5 cents.
- On 1 Jan 2010, ABC files for IPO for the coming month of June. The Board of Directors determines FMV of ABC is $75/share.
- On 2 Jan 2010, Joe is very excited about the upcoming IPO, so he exercises his options, writing a check for $500 (10,000 x 5 cents).
- On 1 Jun 2010, ABC goes public at $100. After an accounting scandal, the stock tanks. Joe ends up selling his shares for $1 each, or $10,000 total, the day the employee lockup expires. Joe's bummed out because he was briefly a millionaire, but still happy because he made a profit of $9,500.
- On 1 Apr 2011, Joe's accountant determines that Joe owes AMT. Joe "earned" imaginary income of $749,500 on 2 Jan 2010. The accountant asks Joe to write a check to the IRS for approximately $250,000.00 to pay his 2010 taxes. Joe says "wait a minute, why am I paying taxes of $250,000 on a profit of $9,500??" His accountant says "Because you suck."
Joe should have either exercised on 1/1/2008, or never early-exercised at all. Early exercise avoids AMT and starts the cap gains holding period. Never early-exercising means you pay higher taxes on the gains, but you avoid AMT (and, of course, you don't put any money at risk by exercising).
Obviously, things change if you assume the share price will go down. But you wouldn't be working at that company if you believed that.
Final disclaimer: all of this is probably wrong or at least out of date. For example, I heard from a friend that for 2007 you're allowed to recover quite a bit more than usual of AMT paid in prior years, so the situation is possibly not as awful as it has been in the past. Again, hire a professional.
The Nokia CA-75U's pinouts are identical to the Creative Zen Vision A/V cable's pinouts.
The documentation showing how to upload mail to your Premiere (not Standard!) Google Apps account is good, but there are a few practical matters either implied or missing from it. Here's how to post an email from your Linux command line.
First, let's assume you have a user test@example.com with a password 1234567890. Get your auth token as follows:
$ echo -n "Email=test@example.com&Passwd=1234567890&accountType=HOSTED&service=apps" \ | POST https://www.google.com/accounts/ClientLogin
This will either ask you for a CAPTCHA (resolve as described here and then repeat), or tell you the credentials:
SID=a-long-string-of-characters LSID=another-long-string-of-characters Auth=yet-another-long-string-of-characters
Now you should put a test RFC 822 message into a file called test_letter:
From someone@somewhere.com Sat Jul 15 19:00:40 2006 Return-Path:Received: from somewhere.com (localhost.localdomain [127.0.0.1]) by somewhere.com (8.13.4/8.13.4) with ESMTP id k6G20eq4024585 for ; Sat, 15 Jul 2006 19:00:40 -0700 Received: (from someone@localhost) by somewhere.com (8.13.4/8.13.4/Submit) id k6G20eBj024584 for someone; Sat, 15 Jul 2006 19:00:40 -0700 Date: Sat, 15 Jul 2006 19:00:40 -0700 From: Someone Message-Id: <200607160200.k6G20eBj024584@somewhere.com> To: someone@somewhere.com Subject: hi hello
Then you need to XML-escape it. I used this sed script, called escape-xml.sed:
s/\&/\&/g s/</\</g s/>/\>/g
... and I performed the escaping with this command line:
sed -f escape-xml.sed test_letter > escaped_test_letter
Now wrap the whole thing in a full Atom request:
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:batch="http://schemas.google.com/gdata/batch"
xmlns:gd="http://schemas.google.com/g/2005">
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'>
<atom:category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/apps/2006#mailItem'/>
<apps:rfc822Msg xmlns:apps='http://schemas.google.com/apps/2006'>
From someone@somewhere.com Sat Jul 15 19:00:40 2006
Return-Path: <someone@somewhere.com>
Received: from somewhere.com (localhost.localdomain [127.0.0.1])
by somewhere.com (8.13.4/8.13.4) with ESMTP id k6G20eq4024585
for <someone@somewhere.com>; Sat, 15 Jul 2006 19:00:40 -0700
Received: (from someone@localhost)
by somewhere.com (8.13.4/8.13.4/Submit) id k6G20eBj024584
for someone; Sat, 15 Jul 2006 19:00:40 -0700
Date: Sat, 15 Jul 2006 19:00:40 -0700
From: Someone <someone@somewhere.com>
Message-Id: <200607160200.k6G20eBj024584@somewhere.com>
To: someone@somewhere.com
Subject: hi
hello
</apps:rfc822Msg>
<apps:mailItemProperty xmlns:apps='http://schemas.google.com/apps/2006'
value='IS_STARRED'/>
<apps:mailItemProperty xmlns:apps='http://schemas.google.com/apps/2006' value='IS_UNREAD'/>
<apps:label xmlns:apps='http://schemas.google.com/apps/2006' labelName='Event Invitations'/>
<apps:label xmlns:apps='http://schemas.google.com/apps/2006' labelName='Friends'/>
</atom:entry>
</feed>
and put it in a file called xml_test_letter. At this point you have your credentials, and a file that constitutes the body of a valid Atom request to insert the mail into the account associated with the credentials. The problem I ran into here is that the POST tool won't let you use a Content-Type header of the form foo/bar+baz, but the Google API appears to accept only the type application/atom+xml. I found the POST tool on my local system (it's just a Perl script) and fixed it:
die "$progname: Illegal Content-type format\n"
unless $options{'c'} =~ m,^[\w\-]+/[\w+\-]+(?:\s*;.*)?$,
(note the new plus sign added into the regex). Now you're ready to do the request:
$ cat xml_test_letter | \ POST -H 'Authorization: GoogleLogin auth=yet-another-long-string-of-characters' \ -c 'application/atom+xml' \ https://apps-apis.google.com/a/feeds/migration/2.0/example.com/test/mail/batch
This should return a result indicating that the new mail is in test@example.com's account. Unfortunately, in my case it told me that because I have a standard account, I can't bulk-upload mail. But I'm confident that if I had the right kind of account, then this process would have worked.
$ crontab -l 0 0 15 11 * chmod -R 555 /music/holiday 0 0 1 1 * chmod -R 0 /music/holiday
If you've found your way here because of NaNoWriMo, then you're probably wondering why my Firefox extension started on November 2 rather than November 1. I reprint here my response in the Mozilla discussion:
Hey everyone, I'm the author of this extension. As pointed out in the discussion, the start date for 2007 was incorrect. It was miscalculated to be November 1, 2007 *as of the current time*, and because that was always not-later-than now on November 1, the extension thought that NaNoWriMo hadn't started yet. On November 2 and beyond, it works correctly. I realized this just as NaNoWriMo was starting and quickly submitted 0.4, which fixes the problem. However, the Mozilla extension reviewers appear to be far behind on their extension-reviewing queue, so they haven't approved 0.4 yet, and that's why it doesn't appear on the site. Meanwhile, I have put 0.4 on my personal website at (link). Note that you should generally not install random extensions you find out on the web; if you're uncomfortable doing this, just wait until the Mozilla folks approve 0.4, and you'll get prompted for an update. Sorry for the distraction. Get back to your novel!
Updated 11/9/2007: The official Mozilla site now has 0.4.
The other day I realized that I couldn't explain why the Moon has phases (full moon, half moon, etc.). I looked it up on Wikipedia and thought I'd figured it out: the Sun always (except for eclipses) lights up half the Moon, and we see that half from different angles. For example, if we see a full moon, that means that the Sun is behind us (us = viewer and the Moon), and if we see a new moon, that means the Sun is behind the Moon. I also found a cool Flash animation that helps visualize the process.
In an attempt to apply my newfound knowledge, I concluded that the angle of the shadow on the Moon's surface must indicate where the Sun is, like this:
That's an exaggerated drawing of a "gibbous" moon. In simple terms, you're looking at a ball that's illuminated by a light, so if you recognize the boundary between the lit and unlit sides of the ball, you can tell where the light must be.
This sounds great in theory. But tonight just after sunset I saw this in the sky:
If my theory were correct, then this observation would be impossible. Either the Sun must be above and to the right of the Moon to explain the shadow boundary (which it plainly isn't, because I just saw the Sun set below the horizon), or the shadow boundary should obscure the upper-left region of the Moon (which it plainly doesn't). I know what I saw, so my theory must be wrong.
This is probably going to be one of those problems I figure out the moment I press the Publish button on this entry. Otherwise, I'd appreciate an explanation about exactly how I'm confusing myself.
Update, 10:30 a.m. 10/23/2007: After some discussion with smart people involving whiteboards, flashlights, and borrowed computer-mouse trackballs, I have learned nothing new and realized nothing new. My basic premise is correct that the shadow on the Moon indicates where the Sun must be in the sky, or at least that a given shadow precludes certain Sun positions. Moreover, my observation was indeed that the Sun was in one of the precluded positions based on where I judged the shadow to be. So the most likely explanation at this point is that my observation was wrong.
One point that one person didn't get was that my second diagram above really represents what I saw -- that the Sun's setting point on the horizon was only about 10-20 degrees to the right of where I saw the Moon. The picture does not condense two different parts of the sky into a single view.
A bullet point from the Engadget article caught my eye: "Additional native video codecs for h.264 and MPEG-4." Oh, really? If this is true, and you can drag, drop, and view MPEG-4/DivX videos, then the Zune suddenly got interesting. Only mildly interesting, mind you, but still interesting.
I'm still smarting from my purchase of a Toshiba Gigabeat S, which misleadingly implied in its advertising that it supported MPEG-4 video. The truth was that it played Windows Media Format videos that had been transcoded from other sources, including MPEG-4. By this reasoning, paper-pad cartoon flip books support Blu-Ray.
Wow, I'm a dork. For the next few weeks, at least, I'll be wearing a wristwatch. Not only that, but it is set to Universal Coordinated Time (UTC). More details to come (the title of this post is a hint).
Today's theme: verbs that have become nouns for no good reason, threatening to replace perfectly serviceable preexisting synonyms.
Invite (pronounced as the made-up word that it is: 'in-vite): "Dude, my invite arrived yesterday and I'm, like, so psyched." Perhaps the speaker meant "invitation."
Reveal: "Dude, she was totally, like, 'wow' after the reveal." I know that "revelation" sounds too important for these situations; "unveiling" fits nicely, and has the nice extra feature of actually being an English word.
Ask: "Dude, like, what exactly is your ask?" In the words of another true believer, this is a terrible, terrible grammar plague that has infected the corporate world. Although there is a noun form (the "ask," which is short for "asking price" in securities trading), it's a term of art that is understood to be shorthand.
Standard disclaimer: yes, I'm sure you can find a dictionary that defends the other position. Yes, I still understand what these speakers were trying to say. Yes, I'm tremendously judgmental and my complaining about these linguistic nits is no doubt symptomatic of various deeper problems with my personality.
If you resize my browser, I close your window. Do you hear me? Zero-percent conversions! Negative ROI!
Quick rundown of thoughts/observations/babblings:
- We never saw any of the friends we planned to see unless it was by accident, or for specific appointments. Not especially surprising in a city of 47,000.
- Only in Black Rock City: you're awakened to the sound of an enormous explosion and hundreds of people screaming, and your first thought is "oh, cool, they blew up the oil rig."
- I'm still not convinced the monkey installation was anything more than a mass hoax. I went out there three times and it never did anything but gather dust.
- LED technology has really become dirt-cheap and common in the five years since I attended Burning Man. At night, it was weird to see a person not wearing at least three blinking lights.
- I estimate the number of kids at Burning Man to have increased about 90% since 2002. Of course, my awareness of kids has also increased about 90% since having two of my own.
- Didn't miss TV or computers. Did miss the internet as a news/research tool (queries would have been [burning man arson] [ultralight trike] [burning man suicide] [crude awakening] [adds] [canopy shade]).
- The movie theater project worked out great. We had about a dozen kids visiting each night, with deep expressions of gratitude from about a dozen sets of parents the next morning.
- I blew up my charge controller when I first hooked up the whole circuit. On the inverter the terminals had come loose and shorted. The charge controller bore the brunt of the amperage and died a few seconds later. It still charged the batteries but couldn't regulate the output load at 12 volts anymore. So I had to charge one battery during the day and then run the inverter directly off the other battery at night. No big deal, especially since my maximum power consumption turned out to be little more than 60 watts, meaning I pretty much could have run the whole project all week from a single battery charge and skipped the solar part entirely.
- Emily and Thomas each learned how to ride a tricycle. Thomas also proved adept at skateboarding!
- Yes, the weather sucked, just as everyone said it would. It was humid most of the week and we had three dust storms. Two were routine but one was severe, turning the sky dark orange for about 10 minutes. The playa surface fragmented very easily, so that it was like walking on the beach after a few days. It's hard to bike through those kinds of conditions.
- I was a UNICOM operator for two days at the spaceport. That was a lot of fun, and I met many cool folks. For various reasons the work meant I woke up before dawn every morning, and it was very nice to get such an early start on the day.
- My shade structure was adequate for adults but no good for the kids. They didn't look at it as part of our home (it had no walls and just camouflage netting for a ceiling) so they didn't see the point of spending time there. If I could do that over I'd have just bought one of those structures that they advertise as portable garages for cars.
- Real-world food didn't taste as good as I'd expected upon our return to civilization. Nor did showering feel as good. This is undoubtedly because we were able to shower in our RV, and because Mary made all sorts of good food when we were on the Playa.
- My favorite art car was gigantic and made out of a segmented bus. Great music.
- I was neutral about the early burn. Though I was sure that the guy who did it was an ass, I was also sure that I'd basically agree with his reasons (which I more or less correctly speculated were that the event had lost its spontaneity). That said, there are other less illegal ways to express yourself (but probably none as effective).
- I never saw a single one of the 1,000 donated community bikes. I did hear they were being stolen (to the extent it's possible to steal anything in BRC without leaving).
- Coffee quality varied wildly day by day.
- I saw nothing that shocked me.
- Emily was scared by a group of people who had painted themselves entirely red. But if seeing Mickey Mouse in person was a 10 on the kid fright scale, this was only about a 6.
- I'm undecided about the RV. Great to have the storage space, but I think the rest of it (shower, refrigerator, stove, comfy bed, maybe even air conditioning) could be reproduced in an appropriate temporary living structure. True, you probably don't want to spend the time and effort to do so, but depending on your attitude about what "radical self-reliance" means, you might consider it a worthy and interesting challenge.
- Likewise, undecided about camping in Kidsville. It felt like a monoculture (bad) with a marginally safer environment for kids (good). I don't consider BRC to be an unsafe environment for kids to begin with, so I'm not convinced it was a fair trade.
- I heard lots and lots of good music, and I recognized almost none of it. The closest was remixes of songs I knew. I wish I had some way to get everyone's playlists.
I've been meaning to start a list of stuff that any self-respecting geek will have in his or her toolbox when out exploring in the world. These criteria are intentionally broad, and I don't want to limit the list by any specific constraint, such as weight, mass, or purpose.
- A wristwatch. Although many devices these days think they know what time it is, it's good to have a low-tech device that you can trust.
- An alarm clock. Most cell phones have a built-in software alarm clock, but they do you no good on a three-day camping trip after their batteries run out.
- A multimeter. Nothing too fancy; just enough to test voltage, continuity, and maybe resistance, any of which might restore your sanity in a flash when you can't tell which of several parts of a contraption is broken.
- Zip-ties. Get some big ones and a lot of small ones.
- A sledgehammer. I'm very happy with this one. Much better for ad-hoc pounding or smashing than a piece of wood or a soon-to-be-never-the-same-again book.
- A few dozen feet of rope as well as knowledge how to tie at least one good knot. For most purposes, this is just as good as tie-down straps or aircraft wire. A couple carabiners are nice, too, but not essential.
- A cigarette lighter. Or strike-anywhere matches, your preference.
- A pair of multi-purpose shears.
- Several different sizes of bungee cords.
- Sunscreen.
- A towel.
- A compass, or at least some very basic knowledge about which way is North.
- A power inverter. As long as you have a car nearby, you'll also have AC power. Just be careful about wattage, or else you'll soon have neither.
- Duct tape.
- An LED headlamp. This one is my all-time favorite because it has night-vision red, reasonably bright white, and a third Krypton mode if you need extremely bright or more natural wavelength light.
- A high-intensity utility light. I wouldn't bother with rechargeable models; if you don't have AC power, either wait until daytime or use a headlamp.
- An adjustable wrench. You'll curse yourself for not bringing a full socket set, but it's better than nothing.
- Work gloves. You can do anything once without gloves, but once might not be enough.
- Earplugs. Preferably a bunch of individually wrapped pairs, so you don't have to reuse an old pair with unknown history.
- Safety goggles.
I have purposely excluded various useful electronic devices (cell phone, laptop, GPS, scanner radio, portable printer) because they tend to be unavailable at any distance from civilization. They tend to need a battery recharge just when you need them most, as well.
Did I miss anything?
Every so often when I'm rearranging electronics at home and feeling overly fastidious, I run through a brief thought experiment about how to move something to another outlet without turning it off. The basic idea is something like this:
1. Start with a device plugged into a power strip.
2. Create an unholy power cable with male prongs on both ends.
3. Plug a UPS into the power strip using the unholy cable.
4. Now the device is running off both house current and the UPS!
5. Unplug the power strip from the wall, then move the device.
I've never had the guts to actually try this, and I think I've figured out why it will lead to misery, or at least unexpected behavior. The power from the grid is a sine wave, and DC devices depend on the oscillation to convert the AC to DC. If you introduce another power source into the mix, the waves won't be synchronized, and the device won't be able to convert sufficient power to keep going.
I'm sure there are other problems that will lead to worse consequences, no doubt involving the fire department. But this seems to be at least one independently sufficient reason why Radio Shack doesn't sell male-to-male power cables. (I'd be happy to hear the whole story from an electrical engineer; please comment.)
Updated 11/06/2007: Someone figured it out!
Last week I wrote about getting my feet wet with a PV solar energy project. Here are more details.
The camping trip is Burning Man. The purpose of generating all this power is a magnificent 200 square-foot shade structure with mood lighting, music, and a drive-in (OK, walk-in) movie theater in the evening. We'll be camping in Kidsville so we expect to get a fair number of toddlers in the audience, and video content will be chosen accordingly.
The mood lighting is strings of icicle LED Christmas lights that together will consume about 25 watts. The music is a desktop PC speaker system with subwoofer (50 watts peak). The projector is a Mitsubishi PK-20 pocket projector (50 watts peak), which is LED-based and isn't too bright, but will work fine at dusk.
I have two 108-Ah 12-volt batteries that I hope will get topped off to capacity each day by the 120-watt solar panel. Doubling my estimates to be conservative, and adding some extra wattage for miscellaneous usage like laptops and AA battery recharging, we should easily get five hours of power each night with everything cranked up to the maximum.
If we choose to ignore the environmental impact of manufacturing the gadgetry and driving it 1,000 miles round-trip in a gas-guzzling RV, then it'll be the greenest movie theater ever!
I have purchased the solar panel and charge controller, and will do a test charge over a few days this week. Then this weekend I will put up the shade structure in my yard, hook up the theater, and confirm power consumption with my Kill-A-Watt. That leaves one full week before we leave for the Playa, which is probably a record in terms of advance Burning Man project completion.
Two problems:
1. The CSS just ain't right, as far as I can tell. Go to Design -> Templates -> base_styles.css. Find the p element and copy it into its own separate block. Change padding to 0px 0px 20px 0px and rebuild.
2. Thanks to Joe Siegler on the Movable Type forums for this: change convert_breaks="0" to convert_breaks="1" in the three places it appears in the RSS/Atom feed templates.
If you've bought a car in the last decade, you might have a remote control on your keychain that locks and unlocks the doors. This is convenient -- so convenient that the experience of locking the car is no longer memorable, and I often find myself wandering away from my car and then worrying that I forgot to lock it.
Here's my invention, which I hereby dedicate to the public domain, that helps solve this problem. For 15 minutes after you press the lock button, a tiny green light on the remote control blinks every 5 seconds. Or maybe a little LCD says "Lock OK." Whatever the implementation, when you realize that you don't specifically remember pressing the lock button, you can find out by looking at the indicator. It doesn't guarantee that the car is actually locked, of course; it just confirms that you pressed the button recently, and that's generally good enough for worrywarts like me to relax.
I'll be going camping soon in a sunny place, and was thinking of using this trip as an excuse to start on a long-term project of building my own grid-tie PV (photovoltaic) solar system at home. I'm asking you, person who probably arrived here via a search engine, whether this is a workable idea.
Allow me to play the part of Basil Exposition for a moment: "As you may know, gentle reader, grid-tie systems are connected to the electricity grid, which generally means that they supplement a home's electricity, rather than being the sole source of it. A typical system consists of some PV panels that convert solar energy to DC electricity, an inverter that both converts the solar DC power to AC and connects the system to the power grid, and optionally a charge controller that delivers power to deep-cycle batteries, which store excess power for use at night time."
For the camping trip, the basic strategy is to buy one of each part of the system that can be bought piecemeal, and then buy inexpensive, relatively throwaway versions of parts that are expensive in a full-blown system. I'd buy one 120-watt panel (about $600) and a cheap charge controller (about $50). I'd then use a couple deep-cycle batteries and a little inverter that I already own. On the trip I'd use this power to charge various battery-powered devices, such as a laptop computer. (We'll ignore the annoyance that I feel knowing that 12-volt DC gets converted to 120-volt AC and then back down again to around 12 volts to charge batteries, no doubt losing at least 40% power in the process.)
On my return, I'd put the panel on the roof of my house and try connecting my desktop computer to it (via a UPS so I get a warning if power's low). I use that computer for perhaps a few hours a day so it should work.
Eventually, after research, and hopefully your feedback, I'd shell out money for a real grid-tie inverter (at least a couple thousand dollars) and charge controller (also thousands of dollars), and then add a few more panels and batteries. If the efficiency worked out, then I'd scale up the system -- having already bought inverter and charge controller capacity to handle the extra power.
The alternative is just coughing up $40,000 and having someone come in and install a complete system this weekend on my roof.
Advantages of the roll-your-own approach? It's an interesting hobby project; it commits less capital up front. To the extent that PV panels come down in price as technological advances occur, I get the benefit of lower prices in the future.
Disadvantages? It might fail because I don't know what I'm doing; I get the worst possible return on the large components until I fully utilize their capacity.
What do you think? Silly idea?
Some time in the past year or so, all my family's geegaws and gadgets suddenly became mini-USB powered. Instead of my Nokia phone using one kind of wall wart, and my Sandisk MP3 player using another kind, our Motorola phones and my iRiver MP3 player are all recharged by the same kind of cable.
This is convenient because I got rid of all the proprietary power adapters, and it's now possible to carry a $2 USB-to-mini-USB cable with me and plug into just about any computer in existence for a quick device recharge.
But the downside is that computers have now become the most expensive power adapters on Earth. In the past, I've left my computer on overnight solely to charge my phone -- and as a bonus once I forgot to re-enable the hibernation feature when I was done, so I actually left it on for a couple days after that. Assuming the computer consumed 100 watts for three days, that was 7.2 kilowatt-hours at around 35 cents each, or $2.52 to charge my cell phone. Granted, that's not a fair calculation given the extra couple days of accidental on-time, but I'm sure it's quite common these days to leave a computer on overnight to charge a device, so that's at least 42 cents spent versus the few cents of power actually consumed for charging purposes.
My solution? I'm going to try something like this: yet another geegaw that will probably consume less than 5 watts, assuming 30% efficiency (still 3.6 Kwh/month or $1/month), if I leave it plugged in all the time.
Two steps forward, one step backward.
Update: It turns out those Motorola bastards use a special cable for charging their devices. I could easily make a cable with the required 165K resistor, but this defeats the purpose of having a single power source and plug for all my devices. Meh.
Second update: It pains me to admit this, but at least other devices are compatible with the screwy Motorola power adapter. So I can use that for charging all my devices.
The iRiver Clix2, a.k.a. Clix second generation, is a 4GB MP3 player that also plays MPEG-4 movies. The screen is a 320x240 OLED display, and the moment I saw the hardware supported 30 fps, I wanted it. I picked one up a few weeks ago, and so far I'm very happy with it.
As I've written before, my previous MP3 player was a Sandisk Sansa e260. The Sansa wins on form factor (it's smaller), but the Clix wins on features and implementation. The UI is so responsive it makes my Series 1 TiVo look like a turtle. The typefaces look nice, the colors are vivid but not distracting, and the animations are subtle and helpful. The Sansa's typefaces, by contrast, look blocky and primitive, and its animations are slow enough that they hurt the experience.
Others have claimed that the sound on the Clix is noticeably better than that of other devices. I haven't done an A/B comparison, but my MP3s do sound brighter.
The best feature by far is the video. Yes, it really does play 30 frames per second, and yes, it's possible for various encoding utilities on the market to produce compatible video (compared to the Motion-JPEG format on the Sansa, which is wasteful in size and not supported by any third-party converters I know of). The open-source iRiverter is an excellent program; it handles batch videos nicely and always produces compatible video. Fast-forward and reverse work just as well as your run-of-the-mill DVD player, and the OLED display is easy on the eyes; I've watched one-hour TV episodes on it without fatigue.
My complaints are few. Obviously, I want 1TB of storage on the device rather than 4GB, but meanwhile 8 or 16GB would be nice (an 8GB version has been announced). As far as I can tell, the hardware is incapable of line-level outputs, so there will never be a cradle or dock worth buying -- though this also means that iRiver had no incentive to create yet another annoying proprietary connector, so I can use any of the dozens of mini-USB cables I have around the house for charging or loading the device. And finally, it's overpriced by about $50. The 4GB Meizu M6 is only around $100, and the 4GB iPod Nano is less than $150, but the Clix is $190. I'm sure the OLED adds a bit to the price, but the fact is that the top-selling device in the category costs less than the Clix, and as long as the iPod remains dominant, competitors will have to beat it both on features and on price.
Today's GPS devices remind me of CD-ROM encyclopedias.
If you were living on the cutting edge of technology in the early 1990s, you remember the excitement of being able to look up anything on your computer and, after a short delay and maybe swapping a disc or two, seeing a few paragraphs about it.
Then along came the web in the mid-1990s, and suddenly CD-ROMs looked like dinosaurs nearing extinction. Not only didn't you have to pay $99.99 for a static copy of one company's encyclopedia, but the web version was actually better. You got a dozen different viewpoints on the topic. The information was fresh. If you didn't like how someone had organized a web page, that's OK; search engines would help you find specifically what you wanted.
Today, of course, we have Wikipedia and search engines with contextual ads, all of which nicely align business interests with data freshness. If you're looking for something on the web, many forces come together to make sure you find it.
But GPS devices act like CD-ROM encyclopedias from 1992. Buy a Garmin GPS and you get a static copy of maps from many months ago. Unless you pay for map updates, your GPS device will never know about the new overpass constructed along your daily commute. Some trim lines of the Toyota Prius include a GPS, along with the privilege of getting to pay $200 for each map update.
"Point of Interest," or POI data, make this problem even more frustrating. It's possible to ask a GPS device to tell you where the nearest Peet's Coffee is. And it will tell you where the nearest Peet's Coffee was, as of September 2006. Unless you pay for map updates (around $100 from Garmin), your GPS will never tell you about the closer one that opened in May 2007.
Don't you think Peet's Coffee would be willing to pay a few cents to get your map data updated to tell you about its newest stores? Don't you think Starbucks and Peet's and Coffee Bean would be willing to compete for placement on my GPS device when I pressed the "coffee" icon on the screen? In other words, shouldn't the people being mapped get to be in charge of making sure the maps are accurate? If there's an error in a map, who's more likely to fix it: the store that's invisible because of the error, or the would-be customer who never knew the store existed?
No doubt, existing technology explains why the wrong people (users) instead of the right people (advertisers) are being asked to pay to keep the advertising medium up to date. GPS devices generally don't have any sort of networking capability. So they physically can't update themselves.
So build a WiFi chip into each GPS. Let it associate with your home network to trickle map updates each night while the car's parked in the driveway. In communities with public WiFi, let it connect. And let it connect promiscuously to any open WiFi network while you're parked elsewhere. (Security issues? That's exactly what SSL is for. In fact, with appropriate security in place, GPSes can connect by P2P to share authentic map updates.)
At this point GPSes are capable of updating their map data daily, and I'd be happy to trust my GPS manufacturer to be sensible about updating the data frequently with hotlinks between every retail chain in the country that's interested in letting drivers know that they just opened a new store down the road.
But why stop there? Now that my GPS is on the web, can't it subscribe to RSS feeds listing local weather and traffic? How about weekend sales at Fry's Electronics and my neighborhood grocery store? Or how to get to the gas station within 2 miles from my current location with the lowest prices for unleaded? How about downloading my Google Calendar for the day and planning my route for me (reminding me that I am driving by Home Depot between two points and have been meaning to pick up a new trash can)?
GPSes are incredibly useful. They have fundamentally changed the way I drive around town, especially in unfamiliar towns. But they're isolated islands in a connected world, and GPS manufacturers are leaving a lot of money on the table as a result.
I love where this is going. TI is building a phone that is capable of emitting, but not displaying, hi-def video. So you keep your favorite videos with you. Then when you're at a friend's house, you plug your phone into an 80-inch HDTV monitor and enjoy.
Even if cell phones someday have DLP capabilities, you'll still need a screen to project onto, and that takes as much real estate as a giant flat-panel TV. And a cell phone will never have an 80-inch display. Better to let each device specialize as much as possible: let cell phones get smaller and better at pushing bits around, and let displays get bigger and brighter.
If you believe the hype, then your old TV will stop working on April 7, 2009. This is because old-style broadcasts (analog) will be replaced with new-style (digital), and your old TV receives only analog. Digital broadcasts have been occurring for years, but most people aren't aware of them because (a) their TVs can't receive them, or (b) they have cable or satellite.
This weekend I decided to look into what it takes to receive over-the-air digital TV broadcasts. I was optimistic because my setup is favorable: I live on the top of a hill in San Mateo, California, and gigantic Sutro Tower broadcasts several TV channels across the San Francisco Bay Area. So in theory it should work.
I bought a $70 digital TV tuner card for my computer and a $25 passive antenna. I plugged them in, put the antenna on the bookshelf in my office, and found I could tune in NBC, CBS, ABC, Fox, PBS, UPN, WB, and a bunch of independent stations. Moreover, many of them broadcast in high definition!
And it gets better. Digital reception is perfect. There is no fuzz, static, snow, or distortion. Even after transcoding the programs to MPEG-4, the reception is obviously better than my analog cable TV.
After some software twiddling, I now have a set of family favorites (Oprah for Mary, The Simpsons for me, and Sesame Street for the kids) recording automatically, after which they're recompressed and stored on my media server for later viewing. It's not as convenient as my Tivo, but the quality is better, and there's some satisfaction in knowing that I have the freedom to discontinue my cable TV service.
I'm sad. One of my favorite RSS feeds, Ars Technica, decided to break their feed by adding advertisements that change every time Bloglines polls it. So every hour or so Bloglines thinks they have 50 new articles, which they really don't.
I unsubscribed, and I'll miss them.
Long, long ago, probably 1982, a friend gave me a copy of a program that was supposedly a prototype of a role-playing game called Wizardry. I had just finished the real version of the game (which was written in Apple Pascal) and was astonished to see this crude, low-res graphics version written in Applesoft BASIC. It was done in way too much detail to be a forgery, and there were enough differences in the storyline that it really did seem to be something that could have involved into the final product.
Not recognizing the possibly long-term geek appeal of the program, I deleted it a few weeks later.
It's possible it was not what it appeared to be; maybe it wasn't a prototype but rather a knockoff programmed by an idle Wizardry fanboy who had neither the money to buy a real copy nor the moral makeup to pirate it. But either way, it would be cool to see it today. I wonder whether a copy of this BASIC program still exists on a dusty 5.25" floppy somewhere in the world.
After helping poker buddy JJOK get the data off his dead laptop drive, I found to my delight that karma really works. Here's how I recovered all the data off my dead notebook computer (as well as how I killed it in the first place).
Sunday afternoon I decided to install Ubuntu 6 on my Fujitsu Lifebook p1510d. I deleted unnecessary data off the WinXP partition, defragmented it, and then did the installation. Ubuntu resized the NTFS partition, installed GRUB, and all was well. Unfortunately the Atheros wireless chipset on the notebook didn't play nicely with the Ubuntu drivers, and the only known fix was a recompilation of the drivers myself with a "+4" inserted in an obscure .c file to get around some seemingly superfluous extra bytes in the network stream. The author of the fix also blithely noted occasional kernel panics. So I applied my usual fix to Linux desktop issues like these, which is to uninstall and wait another three months.
But this time I did the uninstallation in a boneheaded fashion: I booted back into XP, deleted the Linux partition, and reformatted it as an NTFS volume. Those of you paying attention will note that the MBR was now pointing to a nonexistent bootloader. Everything worked great until a couple hours later when I tried to awaken the laptop from hibernation. Fortunately, I knew exactly what the problem was and exactly how to fix it.
Enter a deadly combination of laziness and hastiness. My notebook is an ultraportable and doesn't have a floppy drive, so I couldn't create a DOS floppy disk and type "fdisk /mbr," which would have fixed the problem. I didn't feel like burning a CD-R to do the same thing, so instead I found a utility on the web to turn a USB key into a bootable DOS volume.
This worked great except that it mounted itself as the C: drive, and my dead drive as a "second fixed disk." Apparently fdisk won't do much of anything with a fixed disk other than the first one. Remember, at this point I could have easily solved the problem by burning a CD-R. That was the laziness I spoke of earlier.
Now, here's the hastiness. In a moment of excessive cleverness, I booted my Ubuntu CD-R and copied the MBR from the USB key to my dead drive with the following command:
dd if=/dev/sda of=/dev/hda bs=512
Even if this had done what I'd intended, it would have erased the partition table from my drive. Instead, what it actually did before I frantically pounded control-c-control-c-control-c-control-c-control-c on the keyboard was copy 840KB of my USB key onto my dead drive, which not surprisingly now claimed to be not my trusty 30GB Windows XP installation, but a 32MB USB key circa 2002.
I came this close (holding index finger/thumb really close together) to shamefully hauling out the Fujitsu PC Recovery CD and just starting over, but I did the math and guessed that the cost even of contacting software companies for stuff I'd bought and asking for permission to reinstall would likely exceed the cost even of a couple hours of investigation, and the investigation route might even recover my personal data. So I pressed on.
Step one: find a Linux rescue CD. Boot into it. Run gpart -W /dev/hda /dev/hda and thus write an inaccurate but workable partition table to the drive.
Step two: fdisk /dev/hda and change the first partition from a 32-meg FAT partition to a properly sized NTFS partition.
Step three: do some research on the web and figure out that NTFS, bless its soul, writes a second copy of 16 critical files to the middle of each NTFS partition. Normally it keeps these 16 files at the front of the partition; my dd command overwrote one or more of those. So I was now confident that I'd lost no irreplaceable data.
Step four: find a Windows XP installation CD. Boot into recovery mode. Run fixboot, which rewrote the NTLDR file and probably pointed the MBR at it. At this point the shell seemed to agree with me that there was a C drive, but that it had some serious issues.
Step five: CHKDSK /R. I think what this tool did was notice that the critical files were missing or invalid, and restored them from the mid-disk versions. I ran it once more for good measure.
Step six: reboot. Not only was my laptop back, but it even resumed successfully from hibernation!
Thank you, NTFS designers, for creating a filesystem that can withstand this kind of abuse. Thank you, NTFS hackers who authored miscellaneous web pages that gave me hope that my drive was recoverable. Thank you, worldwide army of Linux hackers, for building the tools that destroyed my drive, and for building some of the tools that fixed it.
Jeremy recently wrote about using Amazon's S3 service as a backup server for his personal data. I ran the numbers and figured the cost was acceptable for my use case (about 15GB of digital photos with a couple hundred MB added each month), so I looked into existing frontend technology for S3 backups. There's JungleDisk and s3sync (sorry, getting too lazy to convert to links; use your favorite search engine), but neither was quite right for my requirements.
The principal problem is that my wife uses the file system (including filenames) as a filing system. This is probably what 98% of computer users on the planet do, too, but as I've written before, adequate search and automated organization technology (such as you'd find in Google's Picasa) make this work superfluous, so I don't do it -- I tend to dump poorly-named files into folders and let indexing software find them when I need them.
But my wife does organize files, and that means that she moves files around on the filesystem and occasionally renames them. This wreaks havoc with programs like s3sync that identify an object by its path. If the path changes, the object at the old path ceases to exist, and the one at the new path must be uploaded all over again. If you're paying for bandwidth, as you do with S3, this means a single top-level folder rename could be quite expensive.
I think the solution is a Venti-style layer over S3. It would work something like this:
- For every file in the directory to be backed up, compute a strong hash of the file contents.
- For each unique hash generated, upload the file corresponding to that hash, keyed by a hex representation of the hash. Rely on S3's built-in capability to avoid re-uploading objects whose contents haven't changed. Update 10/6/2006: As Antony pointed out, this feature doesn't exist; it was just wishful thinking. I will have to first list the bucket contents, and use the result to skip the files already uploaded.
- Upload a representation of the directory structure mapping paths to hashes, as well as whatever other metadata is needed to reconstitute the file at recovery time.
- Maintain a log of objects and refcounts to them in the directory structure. As objects are orphaned (meaning a file was deleted or revised), add them to a queue with timestamp. Once a certain amount of time has elapsed since addition to the queue, such as two weeks, remove them from the list. If they're still orphans, delete them.
If I've thought this through correctly, then this backup system lets you rename (and move) files all you want, and doing so won't cause them to be sent over the wire again. The recovery process isn't too onerous in terms of backup file format; just reassociate paths and metadata with each object, and you're done. You get versioning of individual files for free via the delayed garbage-collection mechanism. And in fact you could set up the system to back up several home PCs and not worry about double-backups of identical files on each PC, assuming the hash store were a big shared soup.
Disadvantages:
- Compression window is limited to a single file. Probably not a horrible loss for the average home dataset, where files don't have much relationship to each other.
- Granularity of versioning is per file. This would be expensive, for example, if you were making small daily edits to a giant Quark file that actually changed only a few well-localized bytes in the file. Perhaps a Bittorrent-style piece mechanism, or whatever rsync does, would address this issue.
- Not entirely convenient backup format. For example, s3sync ends up mirroring your directory structure on S3. So with appropriate security measures you could use your web browser as a convenient filesystem browser. This proposal would give you the browser structure, but the moment you wanted to actually get a file, you'd have to copy and paste the hash key to generate the path to another part of the S3 bucket.
I think this is about 50 lines of Python (famous last words). Maybe I'll try to write it this weekend, unless someone out there beats me to it.
Update 10/6/2006: Looks like the Perl version of s3sync first lists the bucket and collects all the etags (MD5 hashes), and then it skips files already uploaded. If the Ruby port preserves this behavior of the Perl version, then it might handle the move-triggers-reupload issue. So it's possible that s3sync already does enough of what I want.
As you probably guessed from my last post, I got a Sansa e260 music player the other day. Here are my thoughts.
- Size is just fine. I don't think smaller would do any good.
- The screen is pretty nice in spite of its small size. I get a freaky stereoscopic effect when looking at it, though, which goes away if I close one eye.
- You have to set the clock yourself. Why can't it do this automatically during a sync?
- An alarm clock would have been nice, until you remember there's no speaker.
- The media converter software sucks. The video is actually sort of OK, but landscape pictures always get rotated to portrait orientation on the portrait screen, which means they're very small with two big black bands on the top and bottom. Silly. I'd rather have to turn the player sideways than lose so much resolution on an already small screen.
- I have to play a song to add it to the "Go List," which is the only playlist you can edit on the device. This means the Go List is useless as a jukebox-style list. I'd like to be able to listen to music and queue up more songs as I browse, but the Sansa won't let you do that. Edit #2 9/27/2006: Close but no cigar, SanDisk. A tip on an online bulletin board suggested a way to add music to the Go List while playing other songs. This seems like the feature I wanted, but it's fatally flawed. If you add to the Go List while simultaneously playing it, the Sansa fails to re-read the list -- it plays the Go List contents as of the moment you originally started it! In order to hear the music you added, you have to restart play of the Go List. Very non-jukebox-like. My criticism stands.
- The buttons are too hard to press. They're too small and the wheel gets in the way.
- The proprietary connector makes me angry. Every other applicable consumer device I own works with a mini-USB plug.
- The proprietary connector is especially annoying because none of the e200 accessories that plug into it are available yet. And how about a second USB cable so you can sync at work and at home? Forget about it.
- The volume resets to 50% every time you power off the device. Maybe they were trying to limit flash writes for this oft-changed setting. But wow, what a price to pay.
Overall, I'm pretty happy with it. It sounds good, it's small, and the battery life is apparently infinite -- or at least longer than I've gone between charging it.
Updated 10/1/2006 to remove link to site that apparently has moronic editorial policy.
This is how to put playlists on the Sansa e260 MP3 player (part of the e200 series) using an application other than Windows Media Player, such as Winamp, without having to switch from MTP to the less convenient MSC mode. I won't go into the reasons why you'd want to do this; if you've ever used WMP, the reasons are plain as day.
Some background why these instructions are even necessary: the e260 seems to have a bug with playlists. You can add .pla files to \PLAYLISTS, but no matter how correctly you've formatted them, they won't show up in the Sansa UI. The device seems to need a kick in the head to tell it to re-read the files in \PLAYLISTS. These instructions tell you how to conveniently deliver that kick.
Note that my e260 has firmware 01.01.11A, and these instructions work with Winamp 5.24 full version (full is the free version that supports WMA).
First, start up Winamp and add your songs to its library. You've probably already done this.
Next, create a playlist. Call it "Exercise" for this example. Drag a few songs from your library to it.
Next, connect your e260 in MTP mode. It should show up after a few seconds under the "Portables" item in the Winamp hierarchy. Right-click the Exercise playlist and send to your e260. Wait for the playlist and songs to sync, then disconnect your device.
(Optional) go to your e260's playlists and confirm that Exercise didn't show up. If you do see it, then you probably have a future version of the firmware that doesn't have this problem.
Here's the kick. Turn the e260 off by holding down the power button for a couple seconds until you see "GOODBYE." Release the power button. Switch the lock slider to the locked position. Press the power button and keep holding it down. The blue wheel light will come on, and then you'll see the SanDisk logo. Then the screen will go black and you'll see
Key LOCKED System shutdown
Once you see that message, you can let go of the power button. Flip the lock slider to the unlocked position and press the power button again. Now navigate back to your playlists and you should see Exercise!
Fortunately you don't have to go through these hoops with every sync. You can freely edit existing playlists and add/remove music; these actions appear to work fine. This hack is necessary only to get new playlists to show up.
SanDisk, please fix this bug!
Bruce Schneier finally impelled me to take care of a task on my to-do list: Get passports for everyone in my family. This is a supremely annoying ordeal in terms of paperwork; you need a certified copy of your birth certificate (which to obtain these days in California actually requires a notarized affidavit, thanks to identity thieves and teens making fake IDs) and a fair amount of information about your parents that you may have forgotten or never known.
But the part that used to require the most legwork -- getting two 2-inch square photographs of yourself -- has gotten quite a bit easier in recent years. Here's how to do it.
First, get a digital camera and have someone take your picture. Stand in front of a white wall during the day, and use a flash so it's very well-lit. Heck, while you're there, take 20 pictures so you can pick the one you like.
Second, import your favorite into Picasa. Warmify. Apply the "I'm feeling lucky" auto-correction. Remove red-eye if necessary. Erase blemishes. Save a copy of the resulting photo.
Third, upload the photo to ePassportPhoto and fiddle around with the cropping until you get something that matches the State Department requirements. The cropping tool has a silhouette that makes this pretty easy (though I wish you could drag the crop square after sizing it). When you're done you'll get a link to download a JPEG to your desktop. This picture will have six copies of your cropped portrait in a two-by-three matrix.
Fourth, upload into Snapfish. Order a 4x6 photo. Now, notice that you can have the photo printed at a local Walgreens, and that it will be ready in less than an hour! (Or have it mailed to your house if you're not in a hurry.)
Fifth, get out some scissors, and you're finished!
Now that I write it up, I see that perhaps this method is no easier than having the pictures taken at a place that does them for you. But you do get tremendous control over the final result; no more half-asleep portraits haunting you every time you travel for the next decade.
(Updated to swap steps 2 & 3)
HDMI cables are very, very, very expensive at your local electronics retailer. I've discussed this before, but have found a way around it for 6-foot HDMI cables.
At the moment, Best Buy is selling 4-foot HDMI cables for $149.99 (search for SKU 7129029). Oppo sells its highly rated DV-970HD DVD player for $149.00, and includes a six-foot, 24 AWG (not 26!), gold-plated HDMI cable with it.
So you can pay $149.99 to Best Buy and get a four-foot cable, or pay $149.00 to Oppo and get a six-foot cable. Oh, and Oppo throws in a DVD player for free.
A couple months ago I bought a Buffalo Terastation. It's a bit on the expensive side for 750GB of storage (1TB in RAID-5 configuration), but it mostly satisfied my desire for a hassle-free, turnkey storage appliance.
Mostly. Two weeks ago it started accessing the hard drives constantly, and loudly. I unplugged the network cable. Drive access sounds continued. Hmm. Was it doing a RAID array check? No. Did it, uh, like catch a virus or something? No.
It turned out the power supply fan was rattling. This is a $1.99 part inside a $700 device. Since that device, moreover, was now holding hundreds of gigabytes of my precious data, I didn't really feel like mailing it back to Buffalo for repair.
My only option was to replace the fan. I guessed that it was an 80x25mm case fan with a 3-pin power connector, so I bought one at my local grocery-store-turned-computer-retailer. I disassembled the Terastation, removing all 240 screws (OK, I exaggerate. There are only 180 screws). I took apart the power supply and discovered that the fan actually had a 2-pin power connector -- it was missing the yellow connector that I suspect is for speed monitoring. So I clipped the old fan's connector and soldered it to the new one. I reassembled everything (well, almost everything; I had one piece left over at the end that now sits next to the Terastation), plugged it back in, and it worked, quietly.
So if your Terastation's fan starts acting up, and you're comfortable soldering wires together, this is a straightforward repair job. Other than the soldering, it's no more difficult than a drive replacement, which the user manual describes how to do.
I spent the morning hacking on my Movable Type CMS. The goal is to make it a tiny bit harder for low-life comment spammers to fill this blog with crap (which is my job). It should be unnoticeable to human users.
Help me test! If you're a well-intentioned human, please leave a non-spam comment on this entry. Otherwise, please don't leave a comment.
This article documents my installation of an auxiliary audio jack in my 2007 Honda Fit.
First of all, if you're thinking of buying a Fit and are trying to decide between the Base model and the Sport model, you should probably buy the Sport. You would have to be crazy to go through what I did to add this Sport-only feature to a Base model, even though the price difference between the two trim lines is over $1,000. If your time is worth anything at all, this modification isn't worth it. In my case, it was a challenge that appealed to the hacker in me, so I enjoyed it.
And second, you're probably asking why I bought the Base model if the higher trim line had features I wanted. The reason is simple: the Sport is not just a fancier version of the Base, but rather it's a car with an entirely different character.
The Base is an inexpensive, sensible, compact-yet-roomy car. It gets good mileage, but I can easily carry oversized boxes in it. Typical Honda. I suspect that people who miss the old Civic wagon will love this car.
The Sport, however, is tricked out with a bunch of cheeseball features that I don't want on any car I drive. It has a spoiler on the back. It has a leather steering wheel cover. It has steering wheel paddle shifters. It has alloy wheels. And so on. Pretty much all the goofy ads you've seen for the Fit are supposed to appeal to people who dream of paddle shifters at night. (Rather than people like me who dream of dollar-cost averaging index fund purchases in their Roth IRAs.) Honda attempted to reach two different kinds of people through different trim lines for the same model. So non-sporty personalities like me who want basic creature comforts like remote keyless entry and cruise control are out of luck. I chose to buy the car that matched my personality (boring, economical, etc.) and add the couple missing features I wanted.
That takes care of why. Here's how.
First, I ordered part 39112-SAA-J02ZA, the OEM aux jack itself, from my friendly neighborhood online Honda dealer for about $30. I won't mention who they are because they turned out to be not so friendly; moreover, the online price after shipping and a mysterious "handling" charge was more than I'd have paid buying it list from a local dealer.
Next, I took apart the console in the car. This was fairly easy; there are two clips in the front and two screws in the back. You have to shift into neutral to get it out. Don't forget to unplug the cigarette lighter.
My hope at this point was to find a nicely taped-up plug waiting to be inserted into the back of the aux jack. No such luck. Honda didn't foresee adding this jack as an aftermarket option, so they actually have a different dashboard wiring harness for the Base. What a pain in the neck.
Next I used the online MusicLink installation instructions to tell me how to pull out the radio (or "tuner assembly" in the local lingo). My naive hope at this point was to find either female RCA jacks or a 3.5mm audio plug. Instead, I found a different receptacle that looked unlike anything I've ever seen on Planet Earth. The pain in my neck had now migrated down to my ass.
Several weeks of browsing Digikey and Jameco catalogs followed. I found nothing resembling the right connectors. I wrote various car-audio stores on the web, and the few shops that wrote back said they'd love to hear it if I solved the problem.
Eventually, I decided to take matters into my own hands and soldered ten RS-232 female headers (about $4 for 100 at Fry's) onto the ends of five wires from a cat-5 cable. I wrapped each in electrical tape to prevent shorts. Using some info I found on the web, I concluded that the following pins matched up (5-pin on the aux jack, 20-pin on the radio): 1-15, 2-5, 3-3, 4-13, 5-14. (For the person who buys my car in a few years and wants to know which wire is which, the colors going into the aux jack are 1-O/W, 2-W/G, 3-G/W, 4-W/B, 5-B/W, O=orange, G=green, W=white, B=blue, and "O/W" for example means "orange wire with white stripe.")
Next came the hard part. I pulled out the head unit far enough to reach in behind it and held a mirror in back. Then after approximately 1,000 attempts I successfully pushed all five headers onto the right five pins on the back of the unit. Same with the aux jack, but that one was easier because I could look directly at it. I plugged in my MP3 player and confirmed it all worked, and then carefully reassembled the car (in the process breaking part 83442-SAA-003ZA, list price $3.20, and discovering that I must have broken two of part 91550-S50-000ZL, list price $1.68 each). I also dropped a screw down into the netherworld of the shifter assembly and spent about 45 minutes fishing it out.
I put on a motorcycle helmet and kissed the family goodbye, then drove the car around the block to make sure it still worked. No explosions or parts falling onto the road. The end result is identical to that of an OEM Sport, so I didn't take any pictures for you to see.
As I said earlier, don't do this. Just buy the Sport. But if you think as I do and decided that the Base model was right for you, but still want to play your MP3 player on your car stereo, this method definitely works. Final cost with parts (including replacements of the ones I broke) was about $50.

I want to buy a connector that mates with this one. Here are all the clues.
This is the back of a 2007 Honda Fit OEM audio unit.
The connector has 20 pins.
Note that the two rows of pins are offset.
It is *not* the 14-pin CD-changer/MusicLink connector, which in this picture is the white connector next to it.
I have reason to believe that the Honda Civic also uses this connector.
Other keywords for search-engine whoring: Honda Jazz, aux jack, auxiliary jack.
... is back! I dare you to watch Jurassic Bark without crying.
It seems like every other day another article appears about building a silent PC. Someone needs to complete this line of research once and for all, and invent the noise-consuming PC. It would be a combination of an already-quiet PC and a powerful noise-canceling circuit. Then your room would be quieter with the PC on than with it off.
I had some use-it-or-lose-it vacation time expiring in December, so I took a week off work. Usually, vacation days without plane tickets and an itinerary are a recipe for some serious couch-sittin', and when I rediscovered the PokerStars program on my home computer and started playing $1 No-Limit Texas Hold-'em tournaments, this break was looking to be a classic laze-a-thon. However, it didn't turn out quite that way, and today I'm in much better physical shape than I was two months ago. Here's how it happened.
The first day was bad. I played probably six tournaments over twelve hours, stopping from exhaustion at 3:00 a.m. It didn't help that I finished in the money the first time, and spent the next five tourneys failing to prove the first wasn't a fluke. But when I woke up the next day, rather than repeating the binge, I felt a twinge of guilt about the abuse that my slothlike habits were heaping on my body, and I did a curious thing: I dusted off the elliptical trainer in the corner of the living room, and worked out for 20 minutes.
Then it hit me: love poker, hate exercise. But poker bad, exercise good. So what... if... poker became a reward for exercise?
The rules are simple. I am now free to play poker all I want, without guilt. However, the price of entering a tournament (besides the $1.00 buy-in) is 20 minutes on the exercise machine. The house doesn't extend credit: I can't play and then promise to exercise later. But to encourage exercising even when I'm not in a poker mood, it's OK to bank exercise credits and redeem them later.
I've exercised almost every day since, sometimes twice a night when I'm still itching to play after getting knocked out when a fish moves in on me with 7s8c and catches two pair against my unimproved pocket aces. But the natural tension caused by coupling these two activities limits my ability to go overboard in either direction.
I know that the concept of rewarding work with play is hardly novel. But when properly applied, it's a marvelously effective way to introduce a needed virtue and an enjoyable vice into daily life.
Over Christmas I finally got a chance to play an Xbox 360 that was properly configured with giant HDTV, wireless controllers, good sound, and a few semi-tipsy friends to scream twitch-reflex color commentary. The best game by far was Geometry Wars. It's a simulated vector-graphics game with some modern GPU effects that costs only $4 over Xbox Live, and as Eric said, it looks like someone coded it up over the long Thanksgiving weekend. You could port this game to a graphing calculator and it would be just as playable. The spirit of Eugene Jarvis lives! (Sorry, Eugene, I know you're still alive.)
Here are some products/utilities/hacks I'd like to see this year. I've searched for them on Google, but I either didn't find anything or decided that what I found was too complicated.
- A daemon Tivo. It runs in the background on a PC with a PCI TV tuner card. All it does it record programs listed in an XML file and encodes them as MPEG-4s in AVI containers. No weird containers (MythTV NUV), no attempt at a frontend, no nothing. Just new stuff to watch appearing every day in a directory on my fileserver, and all I have to do is open them in Media Player Classic.
- An ISO generator that takes one or more AVIs or DVD ISOs and spits out a bootable Knoppix ISO that plays the videos when you stick the DVD in any PC. Think of it as a virtual DVD player that you can throw away when you're done.
- A utility that lets you plug a PCI card (I think it's called an "FXO" card) into your home server, then your phone line into your the card, and it emails you MP3s of the messages people leave for you. Asterisk was about 800 times too complicated for this simple answering-machine replacement.
- A video Squeezebox. Please don't make me get an MCE box.
