Recent Readings

The Historian, Elizabeth Kostova; Back Bay/Little, Brown & Co.

**** A wonderfully paced horror novel marred only by the discovery that Dracula is a big nerd.

*** Boy finds more than he bargained for in a dusty old library (a book to be exact).


**** Journalist perseveres through cooking lessons, Batali’s drunkenness.

*** A pun-filled glance at the crossword industry that can be completed in less time than the Monday puzzle.


***** Exceeds industry standard woe quotient.

** A good story about cathedrals, badly written.

**** Surrealism reigns in this book about what, exactly?

*** Never visit India under any circumstances.

*** Like Mutiny on the “Bounty”, but true. Maybe.


* Man stumbles upon Christian dieties in the woods, and they make him pancakes.

Moby Dick: Level 2, Herman Melville ; PENGUIN LONGMAN PUBL

** (e-book) A fantastic, gripping novella about a whale hunt, embedded inside a long, boring treatise on the intricacies of whaling ca. 1847.

Fit to be TIed

The Android G1 phone uses the TI 1251 for Wifi.   This is pretty useful for when you need an internet connection for the laptop and there are no alternatives: you can bridge the wifi and the 3G connection and then connect to the wifi device using ad-hoc mode.  However, I normally keep the wireless off because it sucks down battery like mad.

But Kalle Valo from Nokia is working on a driver for the chip called wl12xx, and he is putting a lot of effort into making sure it uses power conservatively (presumably some future version of the Nokia internet tablets will be using this device).  This driver is SPI, whereas the G1 uses the same chip in SDIO mode.  So I started writing the SDIO port for the driver — hopefully it will be ready when wl12xx is included in mainline.

The TI reference code that actually runs on the G1 is, sorry to say, total crap.  It registers an interrupt handler that printk()s a static string.  It has unbalanced sdio_claim_host() calls.  And from a code style standpoint, well, there is none.  I suspect Valo’s driver will be a big step up if and when it can run on the Android.

Oh, and Google’s open source tree for the Android hasn’t built all weekend.  Great job!

Re-opening

Welcome old and new readers to my blog’s new home. This used to be hosted elsewhere on the net, but I eventually grew annoyed with that provider. Most of the old content survived the move (by the way, a rather fearsome and annoying task. I learned more than I ever wanted to know about the wordpress codebase last weekend. Oh, don’t turn on threaded comments, it’s borked.)

So why the title? This blog began without any real theme, just random observations, trivialities of my life, and so on. Lately however it has also been a useful place to discourse on my technical projects and other computer age detritus. So insignificant bits, both the minutia of the day to day, and the rightmost digits in a binary number. Well, it seemed like a good idea at the time.

Anyway, here’s hoping that I at least maintain the same level of awesome that you’ve come to expect from me (.002 milli-awesomes per post).

FiOS

Dear Verizon,

Thank you so much for the thoughtful racial profiling you sent us. However, despite my wife’s last name, no one at our address can read Chinese. Can you send us your ads in English again so that we may more easily peruse and purchase your products? Or better yet, not send them at all? Warm regards, us.

Backup re-revisited

I’ve reconsidered using git as my backup choice du jour. The main problem (and feature) of using git was having a checked out repo in my home directory. I found I was forever worried, given my admittedly horrid muscle memory habit of doing ‘git reset –hard’ periodically inside source trees, that I’d accidentally do it from the wrong directory and lose any recent work. Luckily, I never did that.

Two obvious solutions: don’t use a checkout in the home directory, instead using rsync to the repo; or use a wrapper/custom command name for the git-as-backup program to avoid accidents. Well, I went with the third option: use rdiff-backup like a normal person. It’s packaged by Fedora and Debian, so I only needed a small tweak to my backup scripts to make that happen every night. And someone wrote a FUSE filesystem (archfs) to mount the backups as normal directories, so there’s no real loss of convenience under this scheme.

My RPM database is now corrupted. Just in time.

sizeof()

Renaming your class variables to shorter names reduces your EJB network footprint. Finally, those people who said that removing vowels from variable names improved performance are vindicated! Ok, well they were correct already in Javascript, but that doesn’t count.

Smolt

The stats from smolt are pretty interesting if, like all stats, entirely useless. Some curiousities:

  • i686 still beats x86_64 by a ton
  • A (very) few people change their runlevel
  • Acer is high in the vendor list, I guess they are still killing the netbook market
  • People don’t configure their swap appropriately
  • SMP is now the norm, outside of embedded kit anyway
  • I want a 4+ GHz cpu
  • No one uses omfs 🙁 …I guess I need to submit a profile.

Serial offender

There comes a time in every budding kernel developer’s life that he has to debug a mysterious lockup, and nothing will do but a serial console. Well, for my future recollections, here’s how to set it up:

  1. Get out your handy pl2303-based usb to serial adapter, because chances are good your laptop doesn’t have a serial port
  2. Build your kernel with CONFIG_USB_SERIAL_CONSOLE=y
  3. Add to your kernel command line: console=ttyUSB0,115200 console=tty0
  4. Hook your computer up to the other computer via a null-modem cable (man, these are pricey these days, $30 for something no one still uses?)
  5. Set up minicom to use your serial port, say ttyS0, at 115200 baud, 8N1, and turn off all the modem init strings
  6. Don’t bother futzing with getty, you only need it if you want to also allow logins over serial. For logging, it’s unnecessary


Now, start minicom on computer 2 and reboot your computer under test. If all goes well, you’ll capture a panic on the serial console. If all goes poorly (my case), you’ll have a lockup with no oops. The usual thing to try in this case is adding “nmi_watchdog=1” to the command line, which will use the non-maskable interrupt to break into any frozen code. Also, if you have CONFIG_DETECT_SOFTLOCKUP set, hopefully after 60 seconds or so you’ll get a soft lockup warning.

In my case, I still have a hard lock with no output. Ho hum.