Monthly Archives: August 2008

Lark (Seattle, WA)


I’ve been meaning to go to Lark for over a year now. However, they don’t take reservations and the wait is usually 40-60+ minutes for a table. Last night, Lauren and I were looking for a nice place to celebrate our 5 year frog-iversary (long story).  So we made another attempt at Lark and got seated immediately!

Lark has seasonal menus and centers around small plates (though most of the plates are far from small, more like a large appetizer or a medium sized entree).  Inside is a rustic setting that is clean and relaxed. The staff are extremely nice and our waitress was very helpful in helping us choose from the extensive menu of tasty selections.

We started with a glass of Gruner Veltliner and the carrots with carmelized ginger and chervil. The carrots retained a perfect amount of crunchiness and the glaze of ginger enhanced the carrots’ natural flavors. The chervil (a.k.a. fancy schmancy parseley) garnish provided a hint of the garden and was a delightful pairing.



Next up was baby octopus with lobster cream risotto.  The octopus was grilled and (if you can distance yourself from the visual of eating an entire octopus including its head) very tasty. It was buttery and charred from the grill, and mixed with lemon thyme and mint. The risotto was creamy and cooked well, but the octopus and herbs were the highlight here.



We then had the seared Sonoma foie gras on wild rice with corn, almonds and cherries. Well executed preparation — crunchy wild rice and creamy foie gras.There’s only a "small plate" worth of foie gras, with lots of wild rice to soak up the juices.



Our main dish was the chicken with green beans, watermelon, and pickled bits. I’m always a little skeptical of ordering chicken, but the waitress assured us that it was moist and spectacular. Indeed, it was the best chicken I’ve had in awhile and I would happily order it again.


We were pretty full at this point, but after one look at the dessert menu we had to make a little more room 🙂

We concluded with a nectarine tartlette with vanilla ice cream. The puff pastry was a little thicker than I prefer, but the nectarines were fresh, the ice cream was creamy, and it was an enjoyable conclusion to the meal.


Overall we had a fantastic meal at Lark with amazing service. I’m looking forward to my next meal and to experiencing different parts of the menu!

926 12th Ave (between Spring and Marion)
Seattle, WA 98122

Tue-Sun: 5:00PM-10:30PM (Dinner)

Paseo (Seattle, WA)


The other day, Lauren pointed me to a slog post about Via Tribunali’s expansion (hopefully their product won’t degrade).  I followed the link of the other restaurant listed in the post, and a few days after reading the gushing reviews we found ourselves waiting in line in front of a non-descript hole-in-the-wall across from Eyes on Fremont.


Paseo is a no-frills shop for fantastic Caribbean food. They serve a variety of sandwiches, salads, and plates (deconstructed versions of the sandwiches with rice & beans).  There are a handful of tables inside, plus a few more outdoors on sunny days like today.

#3 is the grilled chicken sandwich. It was awesome. Lauren’s reaction was: "This is the best chicken sandwich I’ve ever had!"



If you have a vegetarian with you, they will love the tofu sandwich (though I’ve got to say, the meat is superior). Paseo offers a spicy level (1-5) for the tofu sandwich. We ordered it "3", but it wasn’t that spicy and next time I would order a "5" spice.  All the sandwiches come with corn on the cob, lathered in butter and garlicky goodness.


All in all, Paseo delivered great sandwiches that I will crave for awhile!

UPDATE (10/4/2008): Tried the chicken salad today and it was also great. For those wanting something a little lighter (or if you’re anti-bread for some reason), the salad has pickled beets, a tart vinaigrette, and juicy marinated chicken.


4225 Fremont Ave N
Seattle, WA 98103

Tue-Sat: 11:00AM-9:00PM (Lunch and Dinner)

22 Doors (Seattle, WA)


When 22 Doors first opened, it was a delight. Friendly staff with inventive and tasty food. Brunch was a hit with their sweet potato pancakes and crab melt croissants. Dinner had delectable fish, great pastas, a great burger, and an awesome grilled cheese with tomato soup. The food was more expensive then your typical bar, but so was the quality (and it was well worth it).

Unfortunately, since last summer the food and service have steadily declined. I want to still like 22 Doors, I really do. They are located a stone’s throw from my backyard. But their new chef is uninspired, and their servers are forgetful and perpetually understaffed. While the decor hasn’t changed, the dining experience is now an overpriced disappointment.

Last night we had their "Mediterranean feast", which is a plate of hummus with pita, cucumbers, tomatoes, and olives. The hummus had a ton of tahini, but was decent enough and the vegetables were crisp and fresh (though it shouldn’t have taken over 30 min to arrive). On to the main course. I used to unequivocally recommend their burger. The last time I had it was a letdown, but it was during brunch and I chalked it up to the Sunday brunch chef not having a clue.  Alas, really it’s just that the burger is now just a $12 ho-hum burger. Time for me to find a new quality burger on the hill.

Overall 22 Doors is way too expensive for what you get on the dining front. But they do have a nice patio, and a warm fireplace in the winter that make it a good drink stop on 15th.

22 Doors
405 15th Avenue E (between Harrison and Republican)
Seattle, WA 98112

Daily: 5:00PM-2:00AM (Dinner)
Sat-Sun: 10:00AM-3:00PM (Brunch)

Asynchronicity, OneWay, and WCF

I’ve recently encountered some confusion around the behavior of one-way operations in WCF that I’m going to try and clear up.  In particular, developers are under the impression that a one-way operation == a non-blocking call. However, this is not necessarily the case. A one-way operation means that we will call the underlying channel in a "one-way manner".  For IOutputChannel/IDuplexChannel, this maps to channel.Send(). For IRequestChannel this maps to channel.SendRequest() followed by a check for a null response.

Now, sometimes the underlying channel can complete immediately (UDP will drop the packet if the network is saturated, TCP may copy bytes into a kernel buffer if there’s room, etc). However, depending on the amount of data transmitted and the number of simultaneous calls to a proxy, you will often see blocking behavior. HTTP, TCP, and Pipes all have throttling built into their network protocols.

If this isn’t desirable, there are a few alternatives depending on your application design. First off, if you want a truly non-blocking call, you should call channel.BeginSend/client.BeginXXXX (i.e. generate an async proxy). This is step one if you want non-blocking calls. With an asynchronous proxy, we will always be non-blocking from a thread perspective (which is always my recommendation for middle tier solutions, though there’s some quota coordination necessary to avoid flooding outgoing sockets).

For one-way operations, when your async callback is signaled it means that the channel stack has "successfully put the message on the wire". When this happens depends on your channel stack:

  • TCP signals when the socket.[Begin]Send() of the serialized message has completed (either because it’s been buffered by the kernel or put onto the NIC)
  • Pipes are a similar process (NT Named Pipes work similarly to TCP under the covers but without the packet loss)
  • MSMQ signals when the Message has been transferred successfully to the queue manager
  • HTTP signals when we’ve received an empty response. The only other alternative would be to remove all guarantees (and have to arbitrarily propagate the exception through some other call or thread). Trust me, this is better
  • UDP will complete when the UDP socket send completes (which is effectively instantaneous)

For two-way operations, when your async callback is signaled it means that the channel stack has "successfully put the message on the wire and then received a correlated response".

Asynchronous operations can be tricky, and can often get you into flooding trouble when used incorrectly. So be careful, use quotas to manage your flow control, and always remember that the internet is not a big truck; it is a series of tubes and sometimes they get clogged. And you shouldn’t try to fight the clogs by pouring more data down the tubes 🙂