23 April 2008 - Permanent link
I contributed an article to the food issue of Ambidextrous, the design magazine of Stanford University. The assignment was to write an article about the intersection of food and design. I've always thought about throwing dinner parties as a design task, so I explained planning a dinner party in terms of the way you plan the design of a product.
Over the years, I’ve learned the following heuristics about my typical user base. With 14 dinner guests, only 11 will require chicken-of-doom. In Northern California, one person ends up vegan, and two vegetarian. Two are Jewish (no shellfish or pork), and one, despite mild alcoholism, is nominally Muslim and doesn’t eat pork either, so that rules out the bacon wrapping on the steaks. Once in a while, I have a guest who is severely allergic to eggs, gluten, and/or nuts, just to keep life interesting. Killing your guests is the opposite of entertaining, unless you happen to be Hannibal Lecter, so when in doubt about allergens, stick to tofu. Oh wait! people can be allergic to soy, too...
The Dinner Program: Throwing a dinner party with one knife, 11 militant chickens, and your design degree [PDF]. Ambidextrous, Summer 2007.
5 April 2008 - Permanent link
I listen to a fair amount of symphonic music.
I think of symphonic music first in terms of the composer (e.g. Bartok, Beethoven), then the work (5th Piano Concerto in E Flat Major), and then, in the cases where I have multiple performances of the same work, the conductor & performing orchestra (Julius Katchen & London Symphony Orchestra; Hélène Grimaud, Staatskapelle Dresden & Wladimir Jurowski).
However, music metadata format lists the conductor and symphony in the "artist" field on CDDB / iTunes. This is moderately annoying to deal with in the iTunes interface (I have to display and then sort by the correct columns of metadata) but absolutely intolerable on my iPod. Trying to listen to Smetana's Ma Vlast means that I have to remember the name of the composer and orchestra? Oh come on.
So I wrote an Applescript to fix the metadata on my symphonic catalog. It searches my library for all tracks whose genre is "symphonic" and swaps around some of the field values. I still retain the performance info, but as "album artist" instead of "artist".
(It similarly annoys me when other albums list both performers of a one-off song (e.g. Madonna and Justin Timberlake), which breaks that one song apart from the rest of the album when I sort by artist. In these cases I manually reset the "artist" field.)
* What people generally call "classical," but I refer to it as "symphonic" because of a snobby old habit of mine: "classical" refers to a specific period / style of symphonic music in the Western canon, e.g. Haydn and Mozart, so I use the more general "symphonic". I guess "orchestral" might be more appropriate... anyway, the organizing genre in my iTunes library is "symphonic".
5 October 2007 - Permanent link
Thanks to http://safari.oreilly.com and the O'Reilly Rails Cookbook, I have learned the answer to my burning question:
Yes, I *do* need to create join tables in my database migration definition files.
It wasn't clear to me at first, but now what I'm realizing -- and hopefully this is correct -- is that the rails migration schema file is really just an abstracted way of writing a database setup script. Rails can translate its file into the setup script for whatever database you're using, but you still have to specify all the joins, defaults, etc. just as you would if you were setting up the database in its native language. Check and check.
I do use the scaffolding command to create multiple model-controller relationships. (See O'Reilly OnLamp: Rolling with Ruby on Rails Revisited.)
"test" is a reserved word.
This is apparently a problem. I'm building a DB to track usability tests, and I named one of my tables "test". I'm trying to migrate to "usabilitytests" but i'm running into problems. Solved by deleting the entire app and recreating. Obviously not something that one would always want to do, but I don't know how to un-create models and controllers and whatnot that have already been set.
functions in the controller are lowercase with underscores.
I'm not entirely sure of this, but I downloaded a sample application and checked out that code.
TOTALLY STUMPED: Radio buttons in RoR?
Okay, I found the documentation for how to render a checkbox. Am I smoking crack? Did the entire RoR project forget about the existence of radio buttons? From an interaction perspective, radio buttons are the exact same as SELECT boxes: They afford one-from-many selection. They're just rendered in an easier-to-read and easier-to-operate widget. (Select boxes are hard for people to use, and even if you know what you're doing, they're way more of a pain particularly for administrative-type applications when you interact with the box a billion times a day.) I expect there to be a function like collection_radio that operates almost exactly the same as collection_select -- but as far as I can tell, no such thing exists.