July 2010

The Lexmouse will kill you

When I took my car in for service this morning, they gave me a 2010 Lexus RX-350 as a loaner. It includes their new “Remote Touch” controller for the navigation system, climate control, radio-station selection, etc.

Lexus Remote Touch

This is the dumbest thing I’ve ever seen in a car. It’s a mouse. A five-button mouse. That drives an honest-to-gosh giant hand cursor on the display. Your right hand naturally and comfortably rests on a goddamn mouse that is active while you’re driving. And the “intuitive” user interface it’s controlling? Draws your eyes off the road, because even though the mouse “clicks” when you pass over a button, you still have free X-Y movement that can take you off of the buttons. And the UI has modes. Buttons aren’t in the same place in different modes. Functionality isn’t the same in different modes.

When I first heard about this gadget, and Lexus called it “…as natural to the driver’s hand as a computer mouse”, I just made a joke about car-pool tunnel injuries, but they’re serious, and so is the risk of distracting drivers.

Do. Not. Want.

(and, um, if you see someone driving one of these things, “steer clear”)

Modern humor

I had an amusing encounter in the grocery store just now. I was all set to write about it, and then I realized that the simple, natural, accurate way to describe the other party could lead to accusations of racism. And sexism. And ageism. And classism. And probably a few other -isms under development by a crack squad of victimologists in San Francisco.

So, anyway, “a person of intoxication lacked sufficient funds to acquire three 40-ounce alcoholic beverages and a bouquet of flowers”.

Hope you liked it.

I promise

“I will not laugh. I will not laugh. I will not laugh.”

At this.

I suppose there’s a chance that he’s being deliberately vague about his actual project and the scale of the data involved, but he sounds so earnest.

Urban planning

When life hands you scattered plots of land…


Mystery Object

Something I found on Google Earth:


Usually, if none of the informational layers in GE has something, you can find a nearby picture in the Panoramio layer that will give you a clue, but there’s nothing nearby. A Street View camera on a nearby highway caught it, though, so I knew what sort of thing it had to be.

Not that I really had to work that hard. Opening the area in Google Maps revealed a clear label on a nearby building, for anyone who can read Japanese…


CNET, Slashdot, and Gizmodo fell for it, so it must be true!

Some guy bought some off-the-shelf parts and attached a Canon SLR lens to an iPhone, and without even releasing sample photos from his “iPhone DSLR prototype”, suckered several major sites into giving him traffic. The “tech bloggers” and most of the commenters are excited about the “potential” of this “cool idea”, going so far as to say that even if the initial results are low-quality, surely someone can refine it.

Optically speaking, this is precisely as cool as taping a 50-cent magnifying glass to your camera, just a lot more expensive and clumsy. It’s like putting on a pair of reading glasses: put a prime lens in front of another prime lens, and you get something that can only focus on nearby objects, with some amount of magnification.

Here, watch me turn my Blackberry into a large format view camera, with full movements!


Life with MongoDB

Before I ramble, let me sum up my feelings about MongoDB:

Good: easy to install, easy to start using, easy to dump a metric crapload of loosely-structured data into, easy to write basic queries and indexes, rapid high-quality (free!) support from the core development team, phenomenal cosmic power.

Bad: hard to install some drivers (Perl in particular pulls in an amazing number of poorly-specified dependencies), hard to get a metric crapload of data back out quickly, hard to write advanced queries and indexes, easy to reach “here there be dragons” territory outside the scope of documentation and guarantees and available tools, easy to lock up a server process for minutes or hours with simple operations, easy to lose everything unless you replicate to at least one other machine that has independent power, eats RAM like you wouldn’t believe.

It is, if you like, the Perl of databases, immensely powerful and versatile, but extremely dangerous in the hands of amateurs. And, like early releases of Perl, it is a rapidly-moving target that grows new functionality every time you turn your back on it.

The past few weeks have been a heady mix of excitement, frustration, satisfaction, and annoyance, as my first large-scale use of MongoDB has moved from simple prototype, to initial production version, through major bugs and poorly-documented limitations (often “already fixed in next release”), to what I hope is finally “stuff I can just leave running and go work on other projects again”.


Using MongoDB

Suppose you had a big XML file in an odd, complicated structure (such as JMdict_e, a Japanese-English dictionary), and you wanted to load it into a database for searching and editing. You could faithfully replicate the XML schema in a relational database, with carefully-chosen foreign keys and precisely-specified joins, and you might end up with something like this.

Go ahead, look at it. I’ll wait. Seriously, it deserves a look. All praise to Stuart for making it actually work, but damn.

Done? Okay, now let’s slurp the whole thing into MongoDB:


Context Matters, Part 2

“Congratulations. You’ve moved your unit.”

“Need a clue, take a clue,
 got a clue, leave a clue”