A couple years ago, I wrote a little Firefox add-on for my wife to help her track her progress on her novel during National Novel Writing Month. The add-on seemed useful enough to publish, and sure enough, it ranks #1 in downloads for Firefox extensions... that track writing progress... for NaNoWriMo.
Anyway, I just put the source under GPL on code.google.com. Have fun!
Ask a random person what the American Dream is, and there's a good chance you'll get an answer along the lines of having a house with two cars in the garage and a nicely manicured lawn.
This is not the American Dream.
The American Dream is living in a country where you get to go to school instead of working in a factory through your childhood. It's having someone answer the phone when you dial 911. It's getting a job and keeping it in spite of the fact that your religion, race, place of birth, or last name is different from that of your boss. It's having an impartial court instead of a baseball bat to enforce legal contracts. It's starting a business without having to bribe corrupt officials.
The American Dream is not about having. It's not even about earning. It's about living in a place where earning is even possible. It's certainly not about promising to pay a mortgage of $4,000 a month when you earn $55,000 a year because the "american dream" entitles you to do so.
The Housing Crisis Threatens The American Dream? More like a perversion of the American Dream caused the housing crisis.
Before the end of the year, it'll be possible to download an Android LiveCD ISO for commodity PCs. Soon after that, all netbook vendors will abandon their custom Linux distributions and begin shipping Android instead.
Android is the Linux desktop that the Linux community has been waiting for. It's the chrome around the kernel that makes Linux usable by everyone's kids and everyone's parents. But unlike Apple's OS X (which is also chrome around an open-source kernel), Android will be open source.
Long: cloud computing, Intel, Amazon, Google, and small app development shops.
Neutral: Apple, Adobe, Yahoo.
Short: Microsoft, Symantec, Intuit, Computer Associates. Probably Garmin.
I own only one of the current generation of Atom-based notebook computers, so this isn't the voice of experience speaking, but my decision was the product of a fair amount of online research. I am very happy with my Acer Aspire One. I got the 1GB/120GB/XP Home/blue model.
Pros:
- I can do Java development in Eclipse on it. I prefer using a full-sized workstation, but I am genuinely productive on it.
- It doesn't have the half-sized misplaced right shift key that I never learned to use reliably on my Eee PC from last year.
- The 120GB hard drive is pretty much infinitely large for my cloud-friendly lifestyle (especially now that Dropbox is out).
- The 1GB of DRAM is perfectly fine.
- It feels solid!
Cons:
- Oh dear, the shiny surface collects fingerprints more than any surface I can think of.
- The fan's a little too loud. In a meeting where people are listening intently to a speaker, it's just on the border of being annoying.
- I wish it had Bluetooth so I could easily sync pictures from my phone.
- The buttons on the side of the trackpad make single-hand cursor control difficult. I've gotten better at tapping, but for some operations it's not good enough.
Sad. I've been waiting for it for years, and had it on preorder since June. But back it goes, unopened.
If you congratulate Sarah Palin for her family decisions, then you are pro-choice.
Picasaweb's new face recognition feature got me thinking: if every public sign in the world included a QR code with lat/long info embedded in it, then photo sites could scan for them in pictures and automatically insert geotags into the EXIF data. If geek Good Samaritans carried around combination GPS/label makers, they could obsessively deposit such codes as they walked around -- a sort of beneficial graffiti.
Update: I think this could easily work. I encoded a message in QR code, printed it out, and stuck it on a wall in the house. Then I took this picture of it:
Then because of size limitations on the online QR code recognition site I tried, I cropped the image:
Finally, submit to Google's ZXing site, and it worked.
Looks like some other people have come up with similar ideas (dencity is one). But this approach is a little different: rather than requiring users to run specific software on a cameraphone or otherwise actively try to parse the codes, this software could run automatically on Picasaweb and insert appropriate tags if it encountered QR codes following some sort of compact microformat.
I made a mistake a few years ago. I've since learned that I can hear better than I thought. Thus begins the once-and-for-all CD archiving project. All my physical CDs will be see the light of a laser one last time, and then be put away forever, replaced by album-image FLACs with embedded cuesheets. These archive FLACs will then serve as source files for other audio formats (MP3 high quality, MP3 small size, audio CD ISOs, and so on).
Step one: following Alex Wetmore's lead, find a bulk CD ripper cheap on eBay.
Step two: Get Alex's stuff working. (Yes, it really does work.) What I learned during this step: (1) turn off the Removable Storage service in XP, (2) don't try updating any software from Alex's zip archive; just treat it as a turnkey system; (3) turn off the Windows Update service unless you want to lose 10 hours to an automatic update restart; (4) set your computer's power settings to always-on; and (5) understand that to kick off the whole process, you need to first mount the Slot 0 disc, then launch REACT, then press alt-F5 to start the ripping.
Step three: wait a long time. Excluding the Windows Update incident, I'm seeing about 12 minutes per disc, start to finish. Thus about two ideal days for a 200-CD batch.
Future post-processing steps include adding album art, MusicBrainz tags, replay gain info, and embedded CUE and Vorbis data. I'll update this entry as I get there.
Anyone who's worked with me for more than four hours knows that when it comes to efficient use of time at the office, I have the soul of an 80-year-old curmudgeon. I take time to write up documentation with executive summaries, working hyperlinks, sample code, and FAQs, and in exchange I expect people to read it. But all too often the pattern goes like this:
Imminent Target Of Rage: Hey Mike, so I saw we have a new schema for brillig, and the slithy toves need to gyre and gimble in the wabe, and anyway, I saw you sent out something about how to do this... Mike: Yep, the first FAQ entry I sent out has a cut-and-paste command-line to whiffle the vorpal sword, which gimbles the wabe. Imminent Target Of Rage: Oh, OK. Command line. I uninstalled my shell when the mome raths outgrabe, so I could still use some help. Mike, beginning to seethe: The first FAQ entry also refers to the second FAQ entry, which addresses engineers who prefer a GUI interface. Direct Target Of Rage: Hmm, all right. So anyway, I think I actually deleted your email with the link to the FAQ. Mike: We use Google Apps. Nobody at this company deletes email. Direct Target Of Boiling Rage: (long pause) Can you help me gimble the wabe?
Granted, my recounting of this dialogue is one-sided. But there are some truths in it. Some people read documentation, some people work in a more verbal or visual fashion, and the two groups will not, by definition, be able to communicate with each other without either changing their style or finding a mediator. My usual approach in life has been to demand that others change their style, because (a) spoken communication is inefficient if it can be expressed clearly in writing, and (b) I don't want to become the mediator.
For some reason, yesterday I let two neural paths in my mind cross. I was musing about public speaking and marveling at how much a difference good preparation makes, and I analogized it to my constant efforts at work to document every fact or skill worth sharing with my coworkers. If that documentation is like public-speaking prep work, then at the end of creating it, and at least for the next day or two until I forget what I wrote, I am almost certainly the most prepared person on Earth to present wabe gimbling or sword vorpaling. And if that's the case, why not treat a coworker to the best damn presentation ever on that topic? Why stew about it?
I still need to quell the efficiency and public-policy demons that scream in my head as I write this. What about scaling the organization!?! What about encouraging a culture of independent productivity???!! There's certainly a balance to be found. But I've spent a long time over on one end of the scale, and I'd like to try scooting over a bit toward the other side.
My son turns four in December. My wife thought it'd be fun to have a robot theme for his party because Thomas is into robots these days. I hatched up a plan to turn one room in the house into a spaceship. This wasn't going to be anything near Disneyland-level entertainment; I just thought it would be cool if the entrance into the room looked like part of a spaceport, using some black sheets, a black light, fluorescent paint, sound effects (a low-frequency humming and beep-boop computer sounds), and maybe a logbook that the kids signed before they boarded the ship.
I spent about an hour searching for the perfect sound effects on Amazon -- you know, the occasional burst of random square-wave notes -- and kept getting frustrated when the sounds that claimed to be "computer sound effects" were mostly keyboard clacking and mouse clicks, with a few caricatures of Windows alert messages.
Then it hit me: These are proper computer sound effects; moreover, nobody born after 1980 could possibly understand the kitschy theme I was going for. When I see an old movie showing a refrigerator-sized appliance with spinning tape discs, I have fond memories of the 1970s characterization of computers. But to my kids, there isn't any characterization of computers, whether in cinema or in real life. There are just computers; they're an ordinary part of ordinary life, and there's no need to glamorize or fictionalize them.
I'm now starting to appreciate the allure of dinosaurs and pirates. Giant monsters and guys with swords will always be popular, and they're not subject to Moore's Law.
Soon after my real-time rage hit the web, I saw a few hits in my server logs that reverse-mapped to various dell.com addresses. I knew then that my ploy was working, and sure enough, not more than 20 minutes later I got a very polite email from Larry Robinson, who's a Dell Online Community Outreach Liaison. I also got a ping from Jimmy Parish, also of Dell, on Facebook.
Long story short, the company got a new monitor out to me, and it arrived last night. We hooked it up this morning in the office, and it works great. I'm still waiting for return instructions for the broken monitor, but at least nobody's blocked at this point.
Larry speculated that the original disconnect was that the CSRs were looking at the order date, not the ship date, when they told me to get lost before the 21-day return period. He said the company does take these kinds of incidents seriously, and tries to modify their internal procedures to handle things better. I appreciate that; the last thing I want to hear is that they're making an exception for me just because I complained in a public forum, because that doesn't help me the next time I get into a situation.
Since my blog post I've heard many Dell stories from friends, some unpleasant, but many satisfactory, and a few outright pleasant. If I underweight the part of the experience involving ignorant front-line CSRs and focus on the actual humans who took a few moments to understand the problem, then my experience was slightly on the pleasant side, too. So Dell manages to stay out of my personal Hall of Shame, and I'll probably buy from them again.... especially likely when the mini Inspiron comes out soon. :)
Why do BIOS default configurations specify that the boot process should die if a keyboard isn't attached? Right now, as you read this, I bet there are at least three people driving down the highway expecting to ssh into their new headless servers when they reach their destination. This is how it happens:
1. Spend N hours getting the server just right.
2. Reboot a few times to make sure it works.
3. Unhook the monitor and keyboard.
4. Shut down. Unplug.
5. Put server in its permanent spot. Plug back in.
6. Press power. See blinking light.
7. Leave.
8. #)(#$%*#@!@(!@!!!!!
9. Drive back.
10. Go back to step 1 for a slightly smaller value of N.
350MB file on an Infrant ReadyNAS, copied to a generic Linux box. Same directory, same file, only difference is mounting over NFS vs. mounting over Samba:
$ time cp /mnt/nfs/file.bin .
real 0m2.662s
user 0m0.084s
sys 0m2.504s
$ time cp /mnt/smb/file.bin .
real 0m57.294s
user 0m0.008s
sys 0m0.452s
Update a few hours later: I think caching fooled me. A new test for a different file that is 321MB shows NFS at 10.9 seconds versus SMB's 49.6 seconds. Still an extreme difference, but no longer uncomfortably close (over 130MB/sec) to the theoretical maximum speed of a typical SATA hard drive.
If you have a lot of CDs and have set up a good home system to listen to them online (i.e., on a hard drive rather than having to pop each physical CD into the player to listen to it), I'd appreciate some advice. If your goal were to put the physical CDs in the attic forever, no matter what fancy encoding technology appeared in the future, which format would you choose? Would single-file-per-album FLAC plus embedded cuesheets be sufficient? Or is there reason to drop to an even lower level, such as ISO or BIN?
I don't care about file size; if it takes 747MB per CD, so be it. I do care about the archive format being usable; hence the attraction of FLAC, which my Squeezebox can play, versus ISO/BIN, which are cumbersome as an audio source. I don't care about hybrid data/audio CDs. I definitely do care about gapless playback.
I made a mistake back in 2005 and ripped my collection to a lossy format. My penance is re-ripping the whole batch. Please help me do it right this time.
I'm live-updating my previous blog post with the experience of being on hold. I'm trying to thread this between the work I'm trying to do here in the office, and I have only about another hour of included minutes left on my cellphone this month, so I will probably have to hang up soon. But anyway, thought the entire web would enjoy it.
- Early July: One of our new employees agrees to a start date of August 11.
- July 21: I order a Dell PC and a 24-inch monitor for this new employee.
- July 25: I get an email from Dell saying the purchase has shipped.
- July 31: The package arrives.
- August 11: First day for our new employee. Unpack the box, discover the monitor's broken. It flickers, and when it's not flickering, twisting lines of blue and green pixels shimmer on the display. We swap cables, computers, identical models of monitors, etc. We upgrade drivers. We reset the monitor to factory settings.
- August 11: Navigate through Dell's website and submit exchange request.
- August 12: Nothing happens. Once again, navigate through Dell's website and submit another exchange request.
- August 12: "Sorry, your 21-day exchange period has expired." My response: no, it hasn't.
- August 12: "Hi, sorry you can't figure out how to hook up your monitor. Have you tried our technical support department?" My response: look, it's really broken.
- August 13: "Sorry, your 21-day exchange period has expired." My response: no, it hasn't.
- August 13: "Hi, sorry you can't figure out how to hook up your monitor. Have you tried our technical support department?" My response: hey, we've gone through all the troubleshooting steps. Just give me the RMA.
- August 14: "Oh gosh, we're sorry about all this. We'll be happy to replace the monitor. One question though, was the box damaged when it arrived?" My response: you already asked me that when I filled out the original web form. To repeat myself: no, the box was OK. Their response: "Hi, sorry you can't figure out how to hook up your monitor. Have you tried our technical support department?" My response: RMA, please. Don't make me dispute the credit card charge.
- August 15 (this morning): "Sorry, your 21-day exchange period has expired."
(By the way, yes, I have called their tech support department. Early morning I haven't been able to stay on hold longer than a few minutes, and in the evening they say to call back the next day.)
Dell hardware is fine. But Dell the company sucks.
Update 10:09am Friday: On the phone now for 39 minutes. Spoke to Mark Garcia, an unknown other person, Misha 143497, Virginia 869237, and now on hold for the last 12 minutes being transferred again to a "technical support specialist." Each time except for Virginia I explained most of the story all over again. Verified name 4 times. Verified mailing address twice.
Dell, if you're listening, my incident number is 617570338.
10:14 "Please wait."
10:15 Hey, what a great idea: liveblogging my defective Dell monitor return experience.
10:16 The "Please wait" every 30 seconds for the last approximately 20 minutes has just changed into music, as well as an occasional recording urging me to hang up and figure out the problem myself on the support website.
10:21 Sigh, looks like the switch to music wasn't a sign of imminent human contact. But on the bright side, I now know that Dell's set up a "community" site where people can help each other diagnose their problems with Dell machines.
10:22 "Many times a simple restart will resolve issues. Try restarting and see whether the problem persists!"
10:24: Don't like being on hold? Buy "Dell On-Call Support"! What a great value!
10:25: The Dell community message. Also ensure your virus definitions are up to date. I've heard that one at least three times now. Ooh, but I missed that visiting the site can give you access to free virus software. Wow!
10:26: Now they're telling me HOW to turn off my computer to restart and "see if the problem persists." Buy Dell On-Call Support. "Do you think spyware is an issue?"
10:32 The music stopped for about a minute. Was hopeful this meant I would get someone to answer. Nope, just got reminded about spyware again, then more music.
10:34 I just realized it's been forever since I heard someone say "forward-slash" when reading a URL. But I've heard it probably 60 times in the last 40 minutes. "Visit dell dot com forward slash support blah blah blah blah blah...."
10:38 Searching my Gmail for from:US_CAG_Customer_Care@dell.com returns 25 distinct emails. That means I've gone through 12 and a half email round trips with Dell.
10:39 Ooh, the music stopped again!
10:40 Nooooooooooooooo! "Many times a simple restart will resolve..............."
10:41 On the phone now for at least 1 hour, 11 minutes.
10:42 "forward slash security tips"
10:43 I wonder how many of their users type a space between "security" and "tips" when typing in that URL. Why couldn't they have picked a single word like "security" or "tips"?
10:44 I love how they say "issues" instead of "problems." I know everyone does that in the tech industry, but it's amusing to analyze how thoroughly they've cleansed the language of these recorded messages.
10:47 It looks like the music stops about every seven minutes. It must be a loop. So unfortunately there's no meaning in the fact that it stops.
10:50 Here's a screenshot of the email:

10:51 "Scan for viruses for free!" More music.
10:52 Here's my attempt to transcribe the music into text: doo dee.... doo doo doodly-doo, bwap bwap bwap bwap (repeat verse), boop boop twang
10:54 will have been on for 90 minutes soon.
10:55 "then restart to see if the problem persists." Technically it should be "whether," not "if." Otherwise you're literally saying that you should restart your computer ONLY IF the problem persists. But how would you know, unless you restarted your computer to find out?
10:57 bathroom break. Hope I don't drop the call.
11:01 Hi, this is Mike. I'm totally not brainwashed or anything. I just wanted to ask my loyal readers a simple question. Did you know Dell is here for you 24/7, all year long? doo dee.... doo doo doodly-doo......
11:04 Oh, this was weird. This time the music stopped for 9 seconds. Historically it takes from 5.5 to 7 seconds before the tape loops.
11:05 Thinking of hanging up and redialing.
11:06 I'm also thinking of designing a T-shirt people that people could wear to show their support for my cause during this phone call. I've been happy with cafepress in the past -- any better suggestions?
11:09 So here's the thing about hanging up. Remember that quote from Boiler Room? "there is no such thing as a no-sale call. A sale is made on every call you make. Either you sell the client some stock or he sells you a reason he can't." Does this count as a "call"? Then if I hang up, what have I bought? I mean, besides a broken monitor?
11:12 Oh, wow, must be a slow news day. I'm on CNN! Read the article here: http://www.cnn.com/2008/TECH/08/15/mike.vs.dell/index.html
11:14 Ha ha, made you click.
11:15 Coming up on TWO HOURS ON THIS DELL PHONE CALL. Hanging up now.
11:15 Redialing 800-624-9896.................
11:16 "Welcome to Dell...."
11:24 got someone
11:26 I think he's in the States. Score!
11:27 It's actually possible that he is genuinely shocked that I was on the phone for two hours.
11:28 "You're in the wrong queue" OH GOD NO
11:28 "But since you were on hold so long I can make an exception and process this matter for you..." Do miracles happen?
11:30 Describing the problem, won't fall into previous traps.....
11:31 As I'm fumbling to describe the snake-like flickering pixels, he suggests "like an ink spill"? My goodness gracious, a man who speaks my language!
11:32 "Yeah, that's bad." (His words.)
11:33 I'm "verifying" my shipping address. He wouldn't ask that unless something were being shipped there, right?
11:35 aw, crap, he's doing it to me. I'm going to have to call someone else.
Was it something I said? I thought we had a really good relationship.
11:39 We're still talking. Maybe we can save this thing.
11:40 "I'm picking the part for you now." I am not sure what that means, but it's better than "Sorry, you're 19 days into your 21-day exchange period, which means your exchange period has elapsed."
11:44 Off the phone. "Scott" says they're going to send someone out to replace the monitor. No need to call anyone. He says I should call up "Dell Customer Care" and explain what happened and "I'm sure they'll do something for you."
11:46 I got a confirmation email from him proving the last conversation really happened.
11:48 end of liveblog, for now. Back to work. I have vastly improved my state of mind, now elevated to "F*** you Dell, you f***ing shameful excuse of a customer service organization." Let's see what happens next.
Update 8/22/2008: Happily resolved.
For example, if a script kiddie is trying to ssh from address w.x.y.z as adam, betty, charlie, dan, ed, etc.:
iptables -I INPUT -s w.x.y.z -j DROP
The login attempts are generally harmless (unless they succeed, of course), but they can be distracting if you're debugging something related to processes (e.g., atop or ps).
Lately, when my family buys anything with a user manual, part of my unboxing ritual involves going to the manufacturer's website, downloading the user manual as a PDF, and putting it somewhere safe. Then I throw away (er, I mean, recycle) the paper version. Less physical clutter, and searchable product documentation -- no matter how the manufacturer reorganizes its website in the coming years.
The essential part of the Cheap Eats article is add a little bit of water to the eggs. It's amazing what a difference this tip makes!
If the following are true:
- You have a working Xen Dom0 instance
- You have downloaded the CentOS 5.2 image from jailtime.org
- You can't get the image to boot up as a DomU instance because of missing directories such as /dev and /proc
Then you might be interested in knowing that the jailtime images expect certain Xen modules to be preloaded in the ramdisk. So run something like this on your Dom0:
mkinitrd -v -f --with=ext3 --preload=xenblk --with=xennet /boot/initrd-2.6.18-92.1.6.el5xen-xenblk.img 2.6.18-92.1.6.el5xen
Note that I added "-xenblk" to the ramdisk filename to distinguish it from the standard Dom0 file that came with my distro.
Then put the resulting .img in your ramdisk= field in your Xen config file, and believe it or not, it will work. Here's my complete .cfg:
kernel = "/boot/vmlinuz-2.6.18-92.1.6.el5xen"
ramdisk = "/boot/initrd-2.6.18-92.1.6.el5xen-xenblk.img"
memory = 256
name = "myxen"
vif = [ 'bridge=xenbr0' ]
disk = ['file:/home/xen/myxen/centos.5-2.img,sda1,w',
'file:/home/xen/myxen/swap.img,sda2,w']
dhcp='dhcp'
root = "/dev/sda1 ro"
extra = '4'
