June 30, 2004
We were in Toronto for the weekend a couple of weeks ago. For those who don't know, Toronto is a great food town only 4 or 5 hours drive from Pittsburgh. In particular, we have found Chinese and Japanese food in Toronto that is as good or better than anything I've had in North America. One of these most excellent establishments is Hiro Sushi. I have never personally had better sushi than at Hiro Sushi.
To give you an idea what Hiro is like, I'll run down the events of our last dinner there. The place is a relatively compact space on King St. East in downtown Toronto. There are maybe a dozen tables and another eight or ten seats at the bar. Hiro-san and one or two assistants handle all the sushi for the place, and Hiro also runs out to the kitchen for the odd dish. We sit down at the bar and tell Hiro-san to just give us whatever is good. We will get an assortment of sushi, sashimi, hand rolls, and other rolls over the course of the night.
Soon after we sit down, Hiro pulls a small whole fish out of the cooler where he stores the fish at the bar. He cuts the fish 2 or 3 times with his enormous knife and quickly pulls two fillets off of the skeleton. This takes about ten seconds. He then makes two small cuts and pulls the skin off the fillets with two pulls. The skeleton is still in one piece. He bends it up and puts it in a large bowl with a skewer stuck through it to keep it vertical. Then the fillets are chopped into a small dice and mixed with fresh ginger, scallion and oil. This mixture is added to the bowl along with a soy sauce based dressing and slices of many other kinds of fish. Presto. Sashimi salad.
What gives you an indication that you are in a different kind of spot is the speed and fludiity with which Hiro-san slices the fish and makes the sushi pieces. Sushi is always the perfect size, with the perfect amount of rice formed into a perfect elongated ball. The rice is never pasty. The soy sauce is never stale. And, the sushi always has little touches on it (extra ginger here, a tiny bit of scallion there) that bring out the taste of the fish without hiding it under in a wad of wasabi or a river of soy. It's simply perfect.
Hiro gives us each two pieces of white tuna. This tastes like normal tuna sushi, but has a richer, fattier texture like toro.
Then he makes dishes for the house and the other patrons on the bar. The guy sitting next to us is the son of the owner of The Indian Rice Factory, a place that we've been meaning to go. He gets some special dishes over the course of the night.
Hiro is busy, and one of his assistants makes us California rolls. These are the only real disappointment of the evening. But, what can you do. What you notice about the assistant is that he never makes sushi, only rolls and hand rolls and other dishes. You also notice that he is not nearly as good with the knife as Hiro. It takes him almost a minute to fillet the whole same whole fish for the salad, and he can't keep the skeleton in one piece.
It turns out the whole fish that Hiro-san has been slicing are Spanish Mackerel. We each get two pieces off one of the fillets. They are topped with a bit of ginger and scallion. Sublime.
Next, squid. Tender but not chewy.
Next, two kinds of shrimp. One cooked and one sweet raw shrimp. Unlike most places, the cooked shrimp is actually decent.
Hiro-san pulls out an enormous side of tuna that has been marinated or roasted or something. It turns out that this is a huge piece of Bonito. He makes the Indian Rice factory guy a bonito salad in a black ceramic bowl that is the size of my head. Indian Rice factory guy grins.
Next, two kinds of tuna. Marinated toro (which is belly meat) and also marinated plain tuna. This is the best tuna I have ever had.
Now the assistant makes us each a spicy scallop hand roll. It is sweet and spicy at the same time. Yum.
While we munch the hand rolls, the waitress whispers something in Hiro-san's ear about a special order. He gets a pained look and starts pulling out pieces of fish to slice. Soon, he has slices of every sort of fish and roe in his case along with pickles and the cooked egg. He stuff all of this into a rice roll that turns into a log. He starts taking slices off of this log and puts two on a plate and then hands them out to the folks at the bar. It's like a freaky mutated futo-maki, but with everything imaginable in it. It's great. Mostly it tastes like roe and pickles.
Karen asks for fluke. Hiro has not given us any tonight, even though we've had it here before. It turns out not to be so great. Which is why he didn't give it to us.
Hiro runs out into the kitchen and brings back a small pot. He turns to the Indian Rice Factory guy and says, "Look, I have made curry". He ladles out a brown curry dish from the pot. Apparently it was some sort of seafood stew. Indian Rice factory guy grins.
Next, eel sushi. This is pretty standard stuff, but as usual, he does it better.
We also ask for toro, and we get some. It is good toro.
Hiro does another everything roll. He slices it up and there is a huge end piece left over. He hands it to the Indian Rice Factory guy.
Next, we get little sushi pieces covered with a vegetable that is similar to asparagus spears or chinese broccoli or something. It's been marinated and has a very fresh spring-like flavor.
Karen is now full. I ask for salmon. I get a smoked salmon and a fresh salmon. It's like the best lox you've ever had, except sweeter and more tender, and each piece on top of one of those perfect little nuggets of rice. Incredible.
I've probably missed some things that actually came by our plates. But I think this is a pretty good summary.
We were there for two and a half hours. We walked out stuffed. Hiro-san charged us a relatively paltry amount of $45US each.
If you don't want to get in your car and drive there right now, you are just a fool.
June 29, 2004
For too many years i've been forced to take road trips to Washington, DC, Toronto, or Cleveland when I had the desire for Ethiopian food. A new restaurant, Abay, has opened up in the East Liberty section of Pittsburgh (on Highland Avenue). To say I'm pleased would be an understatement.
The space is warmly lit, unassuming, and uncluttered; it seats about 50 to 60 comfortably. The menu is still under development, but has a decent variety of vegetarian, beef, and chicken options (I did not see any lamb on the menu, which makes me a bit sad). The injera, a sponge like bread that is both figuratively and literally the centerpiece of the meal, was fantastic. Sour, springy, and leaving just a dusting of unidentifiable chaff on the fingertips, I could eat it for weeks and not get tired of it. Entrées are spread in mounds on the flatbread, and are shared by all at the table. Some of the people I dined with felt the dishes weren't adequately spicy, but I found them to my taste; rather than being spiced for pain, they were spiced for depth.
I generally enjoyed the vegatarian offerings more than the meat dishes. In particular, I found the ye' abesha gomen, a savory mixture of kale, chillis, garlic, and onion to be particularly good, the metallic tang of the kale melding with the hint of sweetness from the onion. The tikil gomen -- cabbage and carrots -- is the very definition of homestyle food, and is as good as any I've had in other cities.
The one weakness of the menu is the drinks; you can get Ethiopian coffee or tea, spiced with cardamom, but there's no hint of the relaxing and enjoyable Ethiopian coffee ceremony here -- you'll still need to go elsewhere for your black clay coffee pot and incense fix. There's also no sign of Tej, the amazingly vile Ethiopian honey wine, so perhaps it's a fair trade. Prices are very reasonable -- averaging $8 / entrée at lunch, and $11 at dinner -- and decrease if you order dishes in sets, as you undoubtedly will.
Abay is a great addition to the growing stable of interesting and unique cuisine you can find in Pittsburgh. On behalf of...well, I guess just on behalf of myself, let me say to those running the new restaurant: Welcome!
- Abay has a web site which includes their full menu.
June 28, 2004
Having to deal with yet another bad designer's stupid implementation of "save points" is the worst part of being a console gamer. Almost everyone gets it at least a little bit wrong. Many designers get it very wrong. A few game designers get it so wrong that you want them to be put into suspended animation and then revived only when the Earth has been conquered by a race of technologically advanced yet horribly malicious alien beings who will transport them into a whirling nightmarish dimension of transinfinite pain.
For those of you who are not gamers, allow me to explain the idea of "save points." Back in the 1980s, game consoles had extremely limited memory profiles and storage space. To allow larger games to be played in several sittings, designers introduced the concept of save points -- when you reach a specific point in the game, the player can save their progress to some stable or semi-stable storage. This allows the game designer to merely have to store a bit meaning "I have reached point 4" rather than keeping track of all the state in the game world.
The existence of save points caused a number of conventions to be placed on the narrative of the game worlds: the idea that enemies come back whenever you play the game, even if you've "cleared" that section, the idea that, since all gamers are 12 years old, they won't have to stop playing at a moment's notice, and the idea that if you die halfway between save points, you have to play the last segment of the game over again. And over. And over. And over. And over.
Here's what other types of media and life experiences would be like if they were implemented the same way some game designers implement their games:
- If you're reading a book, and you put it down in the middle of a chapter, you have to start reading from the start of that chapter. Over and over.
- While watching a DVD, during certain critical, dramatic portions of the movie (called "cut scenes," by directors) your pause button will no longer work.
- In the newest version of Microsoft Word, you can only save a document after you write a certain amount of text.
- You're beating the tar out of a moronic game designer, but if you forget to break all his bones in exactly the right order, you're forced to start beating him up again.
There's a kernel of truth in some of these. Yes, it's true that a player can ruin the fun of his game by saving immediately after every hard challenge is passed. So what? The bottom line is that the player can better manage their happiness than you, the game designer, can. Based on my own experience and the conversations I've had with fellow gamers, the single most common reason a player puts an otherwise good game down and never comes back to it is because of the inadequate placement of save points. No one wants to replay a segment that they already played through just because they made a mistake 90% of the way through.
In today's videogame world, the common case is that the design of the game sucks. The common case is not that I am sitting there, unable to save, saying to myself "Gosh, I sure am excited by the dramatic tension introduced by the fact that if I die here, I'll have to spend 20 minutes trudging through the castle and fighting the same monsters I just defeated to get back to this point all over again." The common case, rather, is that most people, most of the time, say "I just died because of the stupid camera, and now I have to do the whole stupid lava level all over again from the stupid beginning, because the stupid designers were too stupidly arrogant to put in enough stupid save points." You know what most of us do when confronted with that sort of game?
We stop playing the stupid game.
I have a friend who never finished Shenmue, because the climactic battle was a horrific 40 minute deathmarch. With no save points, and with plenty of unpausable cutscenes. He had started playing it early one evening, not realizing what he was getting himself in to. And he was about to go out on a date, and had to stop. Was he going to play the entire 30 minutes he lost again? No. He decided -- correctly, in my opinion -- that the annoyingness of the game exceeded whatever pleasure he might get out of seeing the end.
Listen. I know it's hard to accept. But the odds are, simply, that your game is not that good. Really. It isn't. We want to play your game because we want to see what comes next, not because we want to see the stuff we've already seen 6 times because some boss keeps defeating us. If the player wants to ruin your big dramatic moment, too bad. I can pause Scorsese's movies any time I want, and I should be able to leave your game, and come back to it, any time I want. If Scorsese can get over it, so can you.
The other objection I hear is that to get the sort of "instant save and restore" functionality I want, I can just pause the game and turn off the TV. This is a morally disordered argument: someone else might want to use the console to play a different game, immediately. Some games -- those would be "poorly designed games" -- don't let you pause any time you want. And, frankly, I grew up in the 1970s with the "Energy Blues" playing on Schoolhouse Rock. I don't want to leave my console on when I'm not using it. I want to turn it off. Lastly, I guarantee that if I turn the TV off but leave the console on, someone (such as myself) will turn the console off accidentally.
There are basically two ways to fix the brokenness of save points: the somewhat wrong way, and the right way. I'll describe them, and then I'll describe an alternative solution that, I think, will eventually become the norm.
The somewhat wrong way to fix the problem -- which is still better than nothing -- is to put a metric ton of save points around your game, so that the player has the opportunity to save "frequently enough" that they're not bothered by them. Baldur's Gate: Dark Alliance went this route. As I say, this is at least better than nothing, since it will likely allow the player to not have to play for a solid hour to get back to where they were when they died. The risks here are twofold: first, you might underestimate what "often enough" means, and second, if you provide a save point the player will feel obligated to use it, so a larger percentage of the game is taken up with the mechanics of saving. Halo tries to fix this latter problem by frequently "checkpointing" the player's progress -- just silently saving it when the player crosses certain boundaries -- but I've never met anyone who felt that it actually worked right, since it only works within a given session, not across sessions.
The correct solution is to allow the player to manage their own save points. Let them get access to a menu anytime, anywhere, and save the game immediately. Star Wars: Knights of the Old Republic does this, and it is a pleasure to use.
The software developers -- particular the user interface geeks -- among you may have noticed a systemic problem in what I'm describing. It relies on the game developer doing the right thing. As game developers are apparently intent on proving, over and over again, that they don't know or care about proper user interface design, I will suggest a different idea. The issue I'm most concerned with is not "saving" for purposes of time travel, but the ability to stop playing at a moment's notice and to pick up exactly where I left off later. That service could, and I argue should, be implemented by the console itself, not by the software developer. When I want to suspend or hibernate my laptop, I don't have to go around to each application asking for permission: I just suspend the damn thing. On a system with a hard drive (hello, Microsoft!) doing this sort of hibernation is a solved problem.
In summary, this is not a game-specific issue. This is a user-interface issue. You'd dismiss as unacceptable a word processor that refused to allow you to save your work unless you finished the paragraph you were writing. We should not hold games to a lower standard.
- Brian Hook wrote a very well-reasoned article on save points that I more or less agree with.
June 25, 2004
All the URLs are the same, but starting today we are "Tea Leaves," since the related project with that name is going dark.
If any of the participants in the tleaves project want to have a place to hang their hat here, just let me know.
June 24, 2004
It's the year 2004, and I am helping my parents configure their brand new Thinkpad to talk a completely standard wireless access point, and it is so painful that it is beyond the power of language to express.
June 23, 2004
Several years later, this has mostly died down, but occasionally there's someone who still uses this medium in a particularly attention grabbing way; here's one of them. I meant to take a picture of this sign a few weeks ago, when it had a provocative rant about Iraq and gas prices. But before I remembered to bring my camera when passing it, it had changed to something less interesting. Fortunately, this week's return of the phrase "camel jockey" makes it worth sharing.
It's an interesting sentiment, and I think it is representative of the fundamental split between our leadership and their base. Unlike the justified and measured retribution the US engaged in in Afghanistan, the Iraq war is unquestionably an imperial adventure. By this I mean that it is an enterprise that is of no demonstrable present value to the United States (it may give some benefit to the Iraqis themselves, or to the Kurds, or to history, or give some unquantified future value to the US), although it certainly has involved incredible cost in both blood and treasure. Patriotic Americans, by and large, understood exactly the trade off involved in the Afghanistan war, and understood the motivation. No one -- at least, no one unwilling to use the word "empire" -- has provided sufficient justification for the Iraq war that is both reasonable and truthful.
Imperial ambitions, of the very sort that George Washington warned us about, are destructive to a Republic. By its very nature the act of taking and holding territory incurs expenses that are unimagined otherwise. Furthermore, the more territory that one has to defend, the more thinly spread one's resources become. The British didn't just abandon their empire out of niceness, but out of necessity: it was bankrupting them. I don't see any particular reason that the same fate won't befall this latest American flirtation with imperialism.
The Bush administration has so far steadfastly ignored these sorts of commonsense questions from the public. I hope that the electorate responds appropriately to that disrespect in November.
The restaurant where these signs stand has proudly posted pictures of previous messages on their web site, here.
June 22, 2004
The oddest part of the park, for me, is called "Storybook Forest." Storybook Forest is simply a long, winding path past a number of set-piece sculpted panoramas and the occasional costumed teenager. Each panorama is based on a children's story, fairy tale, or nursery rhyme. Apart from the voices of children and their parents, it's quiet -- the wooded locale helps instill some tranquility -- and fairly meditative.
There are some unhappy and depressed looking farm animals in pens scattered throughout to provide additional color. Bo Peep's sheep. The three little pigs.
This is the innocence gap; this is the chasm. All through Storybook Forest I'm confronted with the urge to mock, to denigrate, to poke fun at. I can see the scuffed paint and the decrepit shingles, and I can see that Snow White really can't wait for her cigarette break, and I can see that the animals just want to be left alone, and the whole thing just seems sad and depressing to me. But the children love it. They're seeing something I can't see, and I'm seeing something they can't see.
This is, after all, why we hate clowns: they are the makers of broken promises. To grow old is to be battered by the fine print of life, to learn that a promise is only as good as the one making it. In the tattered decadence of the Three Little Bears' house I see every lie told to me as a child. The group of first graders behind me, who haven't yet had to start keeping track of that, see only a good story made real.
Perhaps Tillie's shout of "Come back" is, after all, just an invitation.
June 21, 2004
Blackberries are supposed to have their cores intact. Are these really blackberries? Maybe they're not. Maybe they are black raspberries.
The realization came while picking them. Take a look at the photo to the right (click to enlarge it). Note in the cluster in the center where you can still see the 'stub' from the center of the berry, still on the branch. This is in large part how we classify raspberries versus blackberries: with blackberries, that stub (usually) stays in the berry; in raspberries it stays on the plant. This is why blackberries are cheaper -- that stub lends them structural integrity and makes them easier to transport without getting crushed.
Discussions with friends and neighbors ensued. Everyone told me I was mistaken -- "I've been eating those since I was a kid. They're clearly blackberries. Black raspberries are something completely different." I think, however, that it is these folks who are mistaken. These are black raspberries.
The other aspect that makes me lean towards the black raspberry identification is the growth pattern of the stem -- the primocanes get very long, and then arc towards the ground, which is not how (I'm told) trailing blackberries grow. In fact, where the tip of the primocane hits the ground, it roots -- this is not an easily trellissed plant.
Are there any budding botanists out there that can suggest ways I can identify the actual variety I've got here with confidence?
June 19, 2004
The highlight of the Indianapolis Formula 1 Grand Prix qualifying session for me was seeing some enterprising fans holding up a hand-made sign which read:
New Tech Center - $300 million
Drivers - $17 million
3 Points behind Sauber - Priceless"
June 18, 2004
Quinta do Noval
It's not cloyingly sweet, and strangely this makes it go less well with food than some other ports of similar distinction. It has a noticeably alcoholic nose and a strong blackcurrant jam foretaste. The tail is somewhat bitter, but not unpleasantly so -- more like a sour apple with a hint of sour cherry (oh, how I wish I could get sour cherries here. I miss them.)
Is it a great port? No. But it's a good port, and at $10 it's a steal. In a world where one has to pay $75 (!) for a bottle of Fonseca vintage 2000, there's something to be said for economizing on the stuff you drink when you're not celebrating a special event.
June 17, 2004
Can't talk. Busy eating blackberries! Pictures tomorrow.
June 14, 2004
I play games; a lot of games. Many of the games I play are computer games. Some of those are of the broad category called "Role-Playing Games," or RPGs. There are many definitions of this, but a simplified one is: if it sounds sort of like Dungeons and Dragons, it's a role playing game. I've been thinking about the mechanics of these games, and I am judging them and finding them wanting. In particular, the concept of "levelling up" in nearly all of these games is tied, in a nearly inextricable way, to combat.
I don't like this.
Levelling up as a concept is dubious at best, but for good or ill it is central to the RPG experience. All around the world, at this very moment, thousands of RPG players are striving to get a few more hitpoints, or to find a Blade of Lion-o with an extra +1 to hit, +1 to damage, or to find the Codpiece of Lordly Might that might let them defeat the dragon / orc / big-eyed japanese demon girl named "Sunflower." Why? So they can level up more, of course.
So we're not going to get rid of levelling up. It's here to stay. People like putting emotional investment in to their characters, which means they have to feel like they're "making progress," (cf ProgressQuest), so let's buy in to the concept.
Experience and level advancement in CRPGs is nearly always tied closely to combat (I'll discuss some exceptions below). In one sense this is understandable: much of the effort in designing a CRPG happens to revolve around the combat engine. Games rise or fall based on how much fun combat in them is. It's a central experience. So saying "You defeated Foozle in battle, here's 1500 experience points" makes a certain amount of obvious sense. However, this has negative impact on narrative. By adopting this scheme, you're committed to a few unalterable assumptions:
- Characters must seek violent solutions to problems. Characters that avoid violence will not level up as fast, and hence are more likely to be lost.
- Interesting non-combat character development paths are subordinated to survivability in combat ("First I'll make sure I can survive a battle, then if I have enough skill points left over I'll work on my pickpocketing technique")
- If combat is the main mechanism by which characters improve, then it becomes difficult to attach negative consequences to combat qua combat, which forecloses certain interesting narrative options. (Imagine a game where engaging in combat damaged the protagonist psychologically; too much combat and she or he is shell shocked and unable to function normally; Apocalypse Now, the RPG.)
The typical RPG (examples: most computer D&D games, all Japanese
There are a lot of CRPGs that are just variations on knitting. And I think that there's a place in all of our hearts (and certainly in the marketplace) for that. I believe that there is room (and indeed desire among players) for higher aspirations as well.The Elder Scrolls: Morrowind has a skill-based levelling system where a character chooses his or her primary skills, and when they have advanced (through practice) 10 of them, they gain a level. Killing monsters provides no intrinsic experience bonus, although it might allow you to practice your sword skills. It's at least theoretically possible in Morrowind to create a character whose primary skills are all non-combat -- a sort of fast talking sneaky acrobat who knows a little magic -- so let's applaud Bethesda for that. I'm uncertain whether playing the game while avoiding most combat is feasible, but at least the engine allows for it.
The problem with the purely skill-based approach, of course, is that you only advance in skills you practice. I'm not pushing for a completely nonviolent game here, although it may sound like I am. Sometimes, in an adventure, you're going to have to fight. If you take the non-combat path through Morrowind, when you eventually DO get forced into a fight, you're going to be as helpless as a newborn kitten hopped up on ketamine. So pure skill-based with practicing doesn't get us there.
I'm also thinking of the classic game Ultima IV: Quest of the Avatar. This had the standard kill-monsters-to-get-XP structure, but most of the interesting parts of the game were actually unlocked by ethical development, as your character strove to become the avatar of virtue. In the game world, the eight virtues were Compassion, Sacrifice, Spirituality, Valor, Honor, Honesty, Justice, and Humility. When I played it, I pretty much ignored the combat and followed the quests to develop my virtues. Again, sure, eventually you would get forced into combat, but they were a distraction from the quest, not the goal.
This, it seems to me now, was good game design. I still think about Ultima IV from time to time, and think about replaying it, specifically because of the intellectual and ethical content of the game. I never think of replaying, say, Phantasie.
The one modern example that I know of to follow this path is Rob Bartel's The Witch's Wake, an adventure designed for Bioware's Neverwinter Nights Dungeons and Dragons (D20) game. In Witch's Wake, the character's goal is to discover who they are and to unravel the plot. Experience is meted out specifically for reaching various narrative goals. Combat yields no experience whatsoever; it is a complete distraction. However, since advancement in D20 is not based on exercising skills, the player is free to develop their character to be effective in combat, so that they may survive difficult battles that they are forced in to.
This is a sensible path, and would provide flexibility to all comers. Those who prefer the straightforward hack-and-slash solution should still be able to charge in and fight; those who want to avoid combat should be able to sneak. Diplomatic solutions should be possible in some cases. Rewards should be given to the player characters for accomplishing goals, not for knitting.
Witch's Wake was a success with both critics and players. Whether this will inspire other game designers to follow in Bartel's path remains to be seen. There is surely a lot of inertia and the market can be cruel to products that aren't what the customer expects. Today, most customers expect combat and loot, because that's what we as game designers have given them.
I think we can give them more.
June 12, 2004
Watching the third Harry Potter movie is a bit like watching someone drive an aging, souped up car: when they improve the engine, it just makes how the car's suspension creaks through the corners more obvious.
Where Columbus tells, Cuarón shows. Where Columbus explains in soul-crushing detail, Cuarón hints, or simply omits. Where Columbus overwhelms with baroque detail, Cuarón overwhelms with simplicity, cutting to the emotional core of the story: that while Harry may be a powerful wizard, he is also walking wounded.
Unfortunately, although the quality of the filmmaking has improved, the quality of the acting has not. It is painful to contemplate that out of the three leads, the most improved is Rupert Grint's portrayal of semi-comic-relief Ron Weasley. I give up on Emma Watson, completely. One moment, she's almost capturing the essence of the character in movement and mannerism, and then she opens her mouth, literally stiffens like a board and proceeds to recite lines as if off a cue card. At least the actor who plays Harry, Daniel Radcliffe, is consistent in his mere adequacy.
Notably improved from previous movies is the role of Dumbledore. Michael Gambon (who in my mind is inextricably linked with the raging, magnetic, apocalyptic portrayal of gangster/restaurant owner Spica in The Cook, The Thief, His Wife, and Her Lover) brings much needed life and spice to the role. Richard Harris' somnabulic stint as Dumbledore should be forgotten like a bad dream. Perhaps, if we're lucky, Hermione will undergo a similar transformation. Gary Oldman also has a brief cameo, playing Gary Oldman.
The special effects were much better in this film than in either of its predecessors. The editing was tight and fast, and many intelligent choices were made about what to omit from the screenplay. This is yet another example where less is more. I mope at the opportunities lost in the last films, where so much fat could have been trimmed off the bones. The stories (or at least the movies of the stories) would have been better for it.
I enjoyed Azkaban more than either of the two previous films -- for example, I didn't fall asleep during this one -- and I hope that for the fourth film, the producers continue to make more changes of the sort that improved this film. Audiences are flexible. If we could deal with James Bond changing faces ten times, we can deal with Harry or Hermione suddenly changing their appearances during adolescence and developing acting skills.
June 11, 2004
After my rant about P. F. Chang's you might ask, "Pete, where do you get chinese food you like in Pittsburgh?". Ten or so years ago, my answer would have been "I call my mom and ask her to come into town." Happily, things have gotten better since the dark days of the mid to late 80s and early 90s. Now I believe that there are four places in town that it is safe to bring your Chinese Mother Who Can Cook for a meal and stand a fairly good chance of not completely blowing it.
This dive in Shadyside breaks all the rules by having pictures of the food and being in a shopping center. But, they have really nice home style Cantonese food here which is a welcome change from the cookie cutter generic Americanized Szechuan standards that you see everywhere else.
Scrambled eggs with shrimp or sweet roast pork, eggplant and tofu hot pots, great fresh greens from Lotus, fried Udon noodles, and the Deanna Rubin memorial Beef Chow Fun are among the favorites here. Carol can get snippy, especially if you order the salty/spicy fried squid. So beware.
2. Chopstick Inn
Out in the sticks of the North Hills, this place has the largest and best Cantonese Seafood menu in the area; and most of it is well executed. Never get takeout. Great whole fish, whole roast chicken and duck, pork belly, and a few dishes involving animal parts normally not seen on plates around here round out a great selection. Good with kids.
3. Rose Tea Cafe
The bubble tea place has been around a long time, but the big news is that they are now serving food, and it's really really good. Fairly authentic Taiwanese style home cooking. Get any of the special "over rice" dishes (curry beef over rice, beef stew over rice, etc). The Taiwanese sausage is yummy, the pork stir fries look good, and for the adventurous, they have pork intestines served with large cubes of duck blood sausage, or something. I'm not sure what it was. But they make it there and it's yummy. The bubble tea is interesting too.
4. Ya Fei
Out in the sticks near IKEA. This is the most generic of the four places, but the good dishes here are really good, so it's worth going. I like the soft shell crabs and their other seafood things.
Pete wrote about Penn Mac the other day, which brings up the larger subject of the Strip in general and in particular, that part of the Strip which is really the Nexus of almost all the good food in Pittsburgh.
This nexus lies in that area of Penn Avenue within a couple of blocks of 21st street on either side of the actual crossing. Here, in a square that is about half a block on each side, you wil find a group of establishments that are either the source of some of the best food in town, the source of the best raw materials in town, or just a group of people who are connected to almost all the good food in town.
In fact, I believe if you hang out on that corner long enough, the only foodies in Pittsburgh who you will miss are the ones down at Lotus buying the best fresh vegetables and other Chinese items in town. Lotus is, of course, on the other side of the Strip, but that's just because there is no appropriately large floorspace near 21st street.
So anyway, just what am I talking about here? Let's get to the list.
1. La Prima Espresso
Simply the best coffee you can buy in Pittsburgh, period. Don't try to tell me about your Coffee Tree, or your 61C or whoever else. It's not as good.
2. Il Picolo Forno
A truly old world bakery. Amazing pizza, great pasta lunches on weekdays, the best muffins I've had in town (and only a $1 each!). You can't do better than a Cappucino next door at La Prima and a pizza slice for breakfast. Plus, Antonio will cook his awesome ricotta pies, and his just as awesome savory tortas, to order for your pot luck gatherings. He does other catering items too.
3. Enrico Biscotti
Walk down Penn on a winter morning and just sniff when you get near Enricos. Heaven ... on ... Earth.
Also, the Café that he runs in the back was, for a while, the best casual lunch joint ever. Sadly, with the new fancier digs in Shadyside, the Café is not as strong as it used to be. But at least that crazy guy Roy is back.
4. Mon Aimee Chocolates
Best chocolate store in town. Really. I've seen all of them.
5. The Saigon Sandwich Lady
Not really in the area, but still bears mentioning. Actually, I already mentioned it above. Lotus has the best variety of Chinese and other Asian greens, other vegetables, fruit and prepared items of any store in Pittsburgh. it is truly a watershed for this town that you can get fresh Lychee at Lotus.
With the fish at Whole Foods being more convenient and the fish at Lotus being better, we haven't gotten here as often over the last couple of years. But, it used to be the only place you had a chance of getting decently fresh fish in town. Don't talk to me about Wholey's. Wholey's smells like stale sewer water, and the fish smells too. Also, best fish sandwich ever.
8. Penn Mac
Covered by Pete.
In addition to all these places, people from some of the best restaurants in town can be found in this part of the Strip at one time or another every week. This includes Roberto from Regina Margherita, who got his start making pizzas for Larry at Enrico's. Sam, the owner of Vivo, arguably the best restaurant in town on several axes. I've seen the people who run Tessaro's down there, the owner of Tasty, and on and on. If you want to be around the Pittsburgh food scene, be at La Prima in the morning and just hang around. It will all come to you.
June 10, 2004
The "recent bookmarks" on the sidebar come from one of Joshua Schachter's projects, del.icio.us. Amusingly, I think I might have set this off when complaining on zephyr a few years ago about bookmark management -- I use too many computers for local bookmark lists to be of any use at all. I kept whining and whining about how I wanted a way to not just access the same bookmarks from different computers, but easily, trivially add them from anywhere, too. Editing an HTML page was too much work; it violated my delicate sensibilities and disturbed the flow of internet chi.
Joshua whipped up a solution involving bookmarklets, but I was too lazy at the time to really investigate it, so I settled on a hacked up solution using unison (an rsync-like utility). Eventually, I just stopped using that and let my bookmarks fall into disrepair. I looked at del.icio.us a few times and didn't really 'get it' because I think the front page design isn't really sensible -- it doesn't adequately explain what it is. There's documentation, but it's fairly dry. The best way to understand it is to register an account and start adding your own bookmarks. Then it will become apparent.
Services like this -- and there are a few imitators, some who have copied the idea, and some who (it seems to me) have actually stolen Joshua's code without credit -- have adopted the moniker "social bookmarks", but for me that's not really the draw. It turns out that I don't really care, for the most part, what other people are bookmarking. What I want is a central repository of my bookmarks, and a convenient way of organizing them so that I can find them later without having to go through a huge list. In any browser, I find that I use the bookmarks until I fill up an entire menu. The moment I have to scroll they become useless.
So really, I want gmail for bookmarks. Which is more or less what del.icio.us is. When you add a bookmark, you assign it a tag and a description, and those are searchable. If you put the relevant link on your bookmarks bar, adding a new bookmark is a two click process.
There are a few features that I'm hoping del.icio.us adds:
- Private bookmarks. I'd like to be able to put something into del.icio.us without having it pop up on the main page. Whether it's research for a future article, lesbian left-handed midget albino pornography, or just something personal, I'd like to be able to make it so that only I can access them.
- Conversely, I'd like to be able to search other people's (public) bookmarks in addition to my own.
- The "bookmarks by date" view is currently useless. I will never remember that I bookmarked something on June 17th. If this was in one month chunks rather than per each day, that might be better.
- In the "as long as I'm asking for a pony" wish list category, full "bumbot style" snapshots of the web page as it was when I added the bookmark.
Accept no imitations. If you're not using del.icio.us yet, you're missing out. Give it a shot.
- Joshua is also the guy who brought you memepool and GeoURL.
- I still find the del.icio.us home page unappealing.
- There is documentation.
- You can register for an account, or see the most popular recent links.
- Of course there's the ubiquitous rss feed.
- All of the really cool kids have delicious pages: shelby and acm and many others. Everyone's doin' it.
June 09, 2004
Ding, Dong! The Witch is Dead!
June 08, 2004
It's nice living in a town with a decent cheesemonger.
Since Penn Mac is basically a wholesale Italian Store (back in New Jersey they call places like this "pork stores"), it's not surprising that their selection of Italian cheeses is comprehensive (try the Pastore Sini). They also have a nice selection of the more common French soft cheeses -- none truly young enough, of course, because the United States' Food and Drug Administration is composed of ignorant simian microcephalic cretins. There's a decent selection of British cheddar-alikes, Spanish cheeses of various pedigrees including a very aggressive Cabrales, and a growing group of Portuguese entries. They do not carry Gjetost, and for this, I salute them. They're also very interested in finding superb domestic cheeses -- I've seen more domestic goat cheeses at Penn Mac than anywhere else.
Penn Mac will also conveniently provide one stop shopping for olives, cured meat, pasta, olive oil, baccala, and many other foods that make life worth living. But it's the cheese that draws me in, every time. This week's main pick for me was Bleu d'Auvergne, a cow's milk blue cheese with a creamy texture but a wonderful sulfurous nose. It goes well with port (but then, what doesn't?).
Whole Foods has some interesting cheeses not available at Penn Mac, if you don't mind paying twice the price (quick comparison: Roquefort Abeille is $10/lb at Penn Mac, $18/lb at Whole Foods. That's a representative markup). If you're fixated on a specific cheese that Penn Mac doesn't have, that's not unreasonable. Another viable tactic is to drive to Toronto and go to Alex's Farm Products in the St. Lawrence Market (or their open 7 days a week outlet in the Manulife Center). You'll pay less (as long as we're not counting gas and tolls), have a better selection, have access to young raw milk French cheeses, and hey, you'll be in Toronto.
If you're determined to not travel to another country to get your cheese while in Pittsburgh, you can also go to McGinnis Sisters, which isn't really as good an option as either Penn Mac or Whole Foods. In their favor, their product is always extremely fresh, so they're already miles ahead of Giant Eagle. Their selection is more limited, though, and they have an annoying habit of renaming cheeses to suit their whims, which offends my sensibilities.
June 07, 2004
Software engineering is a scientific discipline, as well as an art. Like many such fields, it has developed specific terminology and jargon, whose meaning may be subtly different or even completely opposite to what one would guess. In the interests of spreading enlightenment among budding software engineers, we have prepared this brief lexicon that covers some of the more important terms you may encounter in your career in software development:
Common usage: "I haven't made progress on that bug - it requires more triage."
Meaning: "If I hadn't spent all afternoon talking to my friends on AIM I might have some idea what is causing the problem."
- corner case
Common usage: "The problem you are seeing is a corner case bug."
Meaning: "Compiling the source did not catch the bug. Please file a bug and I'll triage it later."
Common usage: "This submission passed all required check-in testing."
Meaning: "This compiled OK on one platform."
Common usage: "I will debug this problem."
Meaning: "I will file a bug on this problem and assign it to some component I am not responsible for."
Common usage: "The test passed."
Meaning: "I ran the test five times, and four of them failed with bizarre non-reproducible errors, but one of them succeeded."
- and a pony
Common usage: "I want faster compiles, more hardware, and a pony."
Meaning: "I know I'll never get any of these things so why not add a pony to the list just to make myself feel better?"
Common usage: "Our product is flexible."
Meaning: "We'll bend over backwards to add any feature you want." Opposite of 'stable'.
Common usage: "We should prototype that feature."
Meaning: "We have absolutely no idea how this feature should work, but we don't want to think about it, so you should just implement it over and over again until we think it's right."
Common usage: "We should get a wiki to provide for better collaboration on the teams."
Meaning: "Someone should waste time setting up a bizzare web server with a stupid user interface so that for two weeks people write a series of bad web pages that are hard to read and navigate which then fall into complete disrepair as they tire of the shiny new tool."
Common usage: "I'll make sure that's documented."
Meaning: "I'll create an empty wiki page for that issue and give people the URL whenever they pester me via e-mail."
If you found this lexicon useful, you might be interested in yesterday's profile of the different types of software engineers.
June 06, 2004
I've been working at software companies for the last 15 or so years of my life. In this time, I've worked with a lot of people who call themselves software engineers. The following is a collection of shallow, unfair, insulting and overly general classifications of the types of people you will run into if you get into this business. It's up to the reader to figure out which category I fall into.
1. The Genius
Sits down every day and writes beautiful code that does just the right thing in just the right way and as efficiently as is possible. Hits all the reachable deadlines, fixes all the hard bugs, and is also easy to talk to and personable. Plays well with others, and tends to have an intuitive understanding of just the right amount of give and take between engineering and the rest of the organization. I've met two people who fit into this category in my life. I think there are probably only about five or ten working at any given time in any given area. You want to hire one.
2. The Prima Donna
Thinks he is a Genius, but is really just pretty smart but much more anal retentive than normal. Likes to make like every day is full of Thinking Very Important Thoughts and solving Very Interesting Problems. Never fails to provide and endless stream of whining about how the rest of the organization is brain dead and doing everything wrong.
A subclass of Prima Donna that is specific to Engineering consists of the people who just cannot abide the idea Engineering serves the rest of the company rather than the other way around. These people are always shocked, shocked that anything would happen without direct input from the engineering team as to the impact on the implementation and whatnot.
3. The Zealot
Always Right. Always. Never argue with this person. Will sit through 9 hours of the Lord Of The Rings and point out to you that some minor plot point comes around backwards in the films and thus completely ruins the entire devleopment of the story, and so Peter Jackson is just a worthless HACK.
It's not good to have a zealot as a client of your code, because your interfaces will always be wrong. It's not good to have a zealot providing you with code, because then you are always using his code wrong.
Various subclasses here include the Language Zealot (non-functional languages are for the morally weak), the Design Zealot (anything that you have not diagramed in UML isn't worth building), the Process Zealot (no code will ever be shipped without unit tests), and so on.
4. The Craftsman
Not as good as a Genius, and might not be as smart as a Prima Donna, but is reliable, careful, meticulous and always ready to do whatever is needed to get the job done. Is able and willing to work at any level of the system from design to the grimiest parts of the implementation. Is able to work with others in the organization without becoming physically ill and understand the tradeoffs between time, beauty, and completeness in the code base. The better ones can also talk on the phone in complete sentences and write a decent document about something complicated if they need to.
5. The Moron
Checks in code that doesn't build and then when it does build it doesn't work and causes regressions in other people's code. Will change, and break, other people's code. Constantly three steps behind in the design meetings but take 45 minutes to get caught up because they have to explain all the points that everyone understands to everyone else. Not the guy you want to give a vague specification to if you want the code to have any chance of being right.
6. The Slacker
Always giving work to other people. Gives away all his bugs because they are in other parts of the system. Argues away new requirements because workarounds exist that give you "the same effect" using code that he has already implemented, although it doens't really work yet. In extreme cases, just doesn't do anything at all.
7. The Bad Estimator
Never gives an estimate that is too short. Never gives any estimate at all. Never thinks any estimate is long enough. I'm generally guilty of this.
8. The Tools Geek
Spends all his free time playing around with useless tools that don't really help anything but are shiny to look at. Likes to spend a whole day reconfiguring his X11 window manager customizations or writing perl scripts to automatically classify mail using Bayesian classification. Never gets much real work done.
9. The Intern
Interns tend to fall into all the above classes, they are just less developed than the full blown adult version. The exceptions are the Prima Donnas, who seem to come out of the womb that way.
Tomorrow, we will discuss commonly used software engineering terminology.
June 05, 2004
Autoblog, has pointed out a fabulous article on learning to drive the Nordschleife. Project Gotham Racing fans, start saving for airfare to Frankfurt.
The Nordschliefe vies with Belgium's Spa for the distinction of being one of the most famous and unforgiving road courses in the world. In 13 miles (!) it has over 100 corners (!!), and elevation changes that are more suited to an air show than a road race. I've only ever driven it in simulation, but even that has been enough to induce gut-wrenching fear.
On the down side, Autoblog is a frustrating my fantasies of obtaining a Lancer Evolution. So I guess if I ever do take a lap around the Nordschliefe, it won't be in a LanEvo. If only I could convince Nissan to sell a street-legal version of the Skyline here.
June 03, 2004
I'm not much of a gardener. A few years ago, I had a blackberry bramble growing in my back yard, and I killed it.
It was a long, bitter summer, that year. Sure, I had blueberries. Sure, I had strawberries. Hell, I even had some Swedish Gooseberries that were in town on an exchange program. But it just wasn't the same. They all tasted pale: too cultured, too watered-down. Tame.
See, I really really like wild blackberries
June 01, 2004
Summer brings with it blueberries, as suddenly the geography of the world food distribution network becomes clear. One day, little 6 ounce packages of Mexican blueberries sell for $4. The next day, $3 buys you a pint of berries from South Carolina. And so it goes, through the summer, the prices getting lower and the berries getting better and being shipped from further north. As autumn arrives, there is a last gasp of late Canadian blueberries, and then finally we return to meagre, shrunken berries from distant lands south of the equator.
Frozen blueberries work better than other fruits, for the same reason that frozen peas do better than other vegetables. But they are still a poor substitute. When summer arrives, I eat blueberries by the bushel. With cream, whenever possible. They've got loads of healthy antioxidants, and more importantly they taste fantastic.
And so: bon appetit!