me

Running Windows Production Activation

If you dismissed the Activation dialog box after installing Windows, but now want to go through activation without waiting for the dialog box to nag you again, just run "oobe/msoobe /a" via "Start -> Run".

Nexus One hardware key shortcuts

I couldn't find these listed online anywhere, so here they are for reference:
  • Reboot: <Power>-<Volume Down>-<Trackball>
  • Boot into bootloader: Hold down <Trackball> while powering up/rebooting.

Getting GNOME to recognize your Nexus One as a portable music player

Programs like Banshee and Rhythmbox will automatically recognize when a portable music player (e.g. an iPod, a cell phone that can play music, or one of the many flash-memory music players) is plugged into the computer and let you manage the music on the portable device and synchronize it with your local music library.

On Linux, all of this magic happens via HAL. Specifically, the file /usr/share/hal/fdi/information/10freedesktop/10-usb-music-players.fdi (on Ubuntu 9.10 Karmic) contains the rules to recognize portable music players and define their capabilities. Since the Nexus One is quite recent, it's not listed in that file.

T-Mobile G1 Requires Data to Make Calls and Send Texts

A cautionary tale: I took my T-Mobile G1 (aka HTC Dream) on a trip abroad recently. As I didn't want to pay exorbitant data roaming charges, I turned off all data access on the phone[1] before I left for my trip. While abroad I did make a few phone calls and sent and received some text messages. However, upon returning I discovered that my T-Mobile bill did have data roaming charges, in addition to the expected voice and text message roaming charges. The data roaming charges were minor—it was quite obvious that the phone wasn't pulling down its usual smorgasbord of daily data—and surprisingly regular—each of the handful of line items on my bill was a multiple of 0.0244 MB. After much polite arguing with a T-Mobile representative, an explanation emerged: If a data connection is available, the G1 will use it when establishing phone calls and sending text messages. It will do so even if all other data access is disabled on the phone. The T-Mobile rep claimed that this is an optimization that allows the G1 to make a "better" connection to the cell tower. As proof she pointed out that each data roaming line item on my bill matched up with a voice call or text message (this was generally true but did require a bit of squinting with one eye closed for the data to actually match as she claimed). I'm still a bit skeptical of the explanation I received from T-Mobile. But, while I haven't heard of GSM-based phones sending/receiving data while dealing with voice calls or text messages, it sounds plausible and somewhat matches the tiny amount of data that my phone actually consumed.
[1] Uncheck "Settings > Wireless controls > Mobile networks > Data roaming". For good measure I also turned off background data usage, "Settings > Data synchronization > Background data", and disabled automatic refresh in all installed apps that gave me the option to do so.

Numbers everyone should know

"Numbers everyone should know", courtesy of Jeff Dean:
* L1 cache reference                              0.5 ns
* Branch mispredict                               5 ns
* L2 cache reference                              7 ns
* Mutex lock/unlock                             100 ns
* Main memory reference                         100 ns
* Compress 1K bytes with Zippy               10,000 ns
* Send 2K bytes over 1 Gbps network          20,000 ns
* Read 1 MB sequentially from memory        250,000 ns
* Round trip within same datacenter         500,000 ns
* Disk seek                              10,000,000 ns
* Read 1 MB sequentially from network    10,000,000 ns
* Read 1 MB sequentially from disk       30,000,000 ns
* Send packet CA->Netherlands->CA       150,000,000 ns
Similarly (and courtesy of Jeff Dean and Sean Quinlan), "The Joys of Real Hardware" lists the typical problems a new cluster will experience in its first year:
  • ~0.5 overheating (power down most machines in <5 mins, ~1-2 days to recover)
  • ~1 PDU failure (~500-1000 machines suddenly disappear, ~6 hours to come back)
  • ~1 rack-move (plenty of warning, ~500-1000 machines powered down, ~6 hours)
  • ~1 network rewiring (rolling ~5% of machines down over 2-day span)
  • ~20 rack failures (40-80 machines instantly disappear, 1-6 hours to get back)
  • ~5 racks go wonky (40-80 machines see 50% packet loss)
  • ~8 network maintenances (4 might cause ~30-minute random connectivity losses)
  • ~12 router reloads (takes out DNS and external vips for a couple minutes)
  • ~3 router failures (have to immediately pull traffic for an hour)
  • ~dozens of minor 30-second blips for dns
  • ~1000 individual machine failures
  • ~thousands of hard drive failures
in addition to "slow disks, bad memory, misconfigured machines, flaky machines, etc.".

Getting out of a full-screen Citrix session in Linux

If you're running the Citrix ICA client under Linux and your Citrix session runs in full-screen mode, you can press Ctrl-F2 to pass the following keystroke to the host Linux desktop rather than the Citrix session. For example, if the Citrix session is connected to a Windows desktop, then pressing Alt-Tab in full-screen mode will normally send the Alt-Tab to Windows. Pressing Ctrl-F2 followed by Alt-Tab will send the Alt-Tab to the Linux desktop instead.