Monthly Archives: March 2008

Jamjuree (Seattle, WA)

Rating:

When it comes to Thai food, we are very fortunate: less than 2 blocks from our condo is arguably the best Thai food in Seattle. Yes, I’ve done a tournament for Thai Tom, and I enjoy Thai Tom and all of their unique flavors.  But if I was given a choice and forced to eat at only one Thai restaurant for a year, I would choose Jamjuree. They have a broad variety of fantastic dishes, very friendly service, rotating specials, and (as a bonus) a selection of local microbrews on tap. They can also handle large parties, such as my extended family descending upon Seattle or a hungry crew for Yom Kippur break-fast.

It’s really shocking that I haven’t written about Jamjuree yet. Lauren and I eat at (or take out from) there a few times per month. After a vacation, it’s almost a given that I’ll return with a huge Jamjuree craving (perhaps coming back from Thailand will be an exception there :)).

Tonight we remembered to bring the camera and enjoyed a few favorites.  On the spice level, I order everything here at "3 stars".  In addition, we request the "spices" (a trio of Thai flavors) on the side for selective added flavor. First up, we always order their amazing Pad See Iw.  I have a soft spot for wide rice noodles, and Jamjuree’s rendition of Pad See Iw is the best I’ve ever had.

jamjureePadSeeIw

Dish#2: Panang Curry. A little creamy from the coconut milk with a peanuty overtone (though I’ve been assured there aren’t actually any peanuts in the curry).

jamjureePanang

Dish #3: In honor of the write-up, we ordered a third item for dinner – "Green Bean" with tofu. It’s a nice contrast to the curries, and has more of a soy-pepper base. Lots of sauce, but the green beans remained nice and crunchy.

jamjurreeGreenBeans

Other recurring favorites include "Basil", Cashew Chicken, and Lime Light Chicken.

Overall, another highly satisfying meal at Jamjuree. And the leftovers will make for a great snack tomorrow!

Jamjuree
509 15th Ave. E. (between Republican and Mercer)
Seattle, WA 98112
206-323-4255

Sun-Thurs: 11:30AM-9:30PM (Lunch & Dinner)
Fri-Sat: 11:30AM-10:00PM (Lunch & Dinner)

Specialty's Cafe and Bakery

Rating:

I had my first Specialty’s experience downtown with my buddy Mark. I was on jury duty and the weekday lunch rush was controlled mayhem in action. I don’t recall the sandwich I ordered that day, though I will never forget the Wheatgerm Chocolate Chip cookie. I wouldn’t have ever chosen it from the description, but at Mark’s recommendation I gave it a shot, and wow! It’s very possible that they have crack in them. They really will make your day brighter.

Specialty’s makes all of their own cookies (and bread and other baked goods) on site. They sell soups, salads, and sandwiches.  The salads and sandwiches are made fresh to order.

Lauren and I were at Bell Square tonight after work, so we stopped off at the Specialty’s branch there for dinner.  While I’ve gone through a number of their sandwiches, I always come back to "The Chairman", a stacked sandwich with (deep breath now):

Alfalfa Sprouts, Herb, Mayonnaise, Stone Ground Mustard, Roasted Turkey Breast, Swiss, Green Leaf Lettuce, Tomato, Red Onion, Cucumber, Dill Pickle, Avocado, Italian Vinaigrette, Ranch Dressing, Black Pepper.

All served on herbed bread with a soft middle and a crisp crust.

 specialtiesKennyChairman

If you have a hankering for a good sandwich (or cookie) and are near a Specialty’s, you should definitely check it out!

 

Specialty’s Cafe and Bakery
Multiple Locations

Breakfast, Lunch, and Dinner

 

P.S. I’ve been lobbying the Microsoft powers that be for a Specialty’s stand at one of our cafeterias. Unfortunately that process is stalled since they aren’t considered a "local" business (nevermind that 40% of their locations are in Seattle). Perhaps this will get corrected if they here from more Specialty’s fans 🙂

Volunteer Park Café (Seattle, WA)

Rating:

Just over a year ago, a new restaurant/coffee-shop opened on the north side of Capitol Hill, in the location of the former Café Europa. It wasn’t until early summer that I made my first stop at Volunteer Park Café. It was to be the first of many tasty visits.

Fast forward to October 10th. Lauren and I attempted to have dinner at Lark, but were greeted with an hour wait.  So we decided to check out how VPC handles dinner.  I still remember the Fig and Gorgonzola Pizza we had that night. We returned last night and the waits were running over an hour. Fortunately we had called ahead for a table, as it seems reservations are a must over the weekend (the weeknights we’ve been there have been much more sedate). VPC rotates their menu weekly, though it always includes a daily bruschetta that is worth checking out. Last night’s variation was a garlic spread with butternut squash, red peppers, kale and a little pecorino cheese. On top of freshly grilled bread of course. A hearty and tasty beginning!

vpcGarlicBruschetta

Next was a mixed beet salad (with all local vegetables), with chevre, arugula, and a light vinaigrette. The chevre was fantastic, and a little bit of salt in the dressing brought together all the flavors perfectly.

vpcBeetSalad

Another regular appearance on VPC’s dinner menu is their selection of pizzas. We’d already had the "Roasted Mushroom" (with truffle oil) and the "Bianco", both of which were fantastic (though not quite as good as the heavenly Fig and Gorgonzola). Last night we branched out and tried the Spinach Pesto, with oven roasted tomatoes, red onion, feta, and oregano. The pizza was decent, but not in the same league as the rest of the pizzas I’ve had there. Maybe it was the pesto base, maybe it was the thickness of the crust, or maybe it was the greater number of toppings or the higher than usual ratio of bread to toppings. Whatever the reason, I’d pass on the Spinach Pesto pizza in the future, especially given the solid alternatives.

On weekends Volunteer Park Café offers both breakfast and lunch options well into the afternoon, and in the summer they have (slightly rickety) tables flanking the sidewalk in front of the café.  For those with a sweet tooth, definitely try the Caramelized Banana Brioche French Toast. It’s heavenly.  Other breakfast highlights include the Brie and Apple Panini (on croissant, not baguette) and the quiche of the day.  A running theme is that the pastries are sinful, but oh so flaky and buttery.  Orders take a long time to complete, so make sure you’re not ravenously hungry when you arrive (or if so, grab yourself a scone or croissant while you wait).

For lunch, the Herb Roasted Mushroom Panini is my current favorite.

vpcMushroomSandwichKW

Though I also frequently order the Chicken Salad Sandwich.

vpcChickenSaladSandwich 

Overall, Volunteer Park Café is a relaxed, enjoyable, friendly place that consistently turns out great food for all meals. Add a reasonably priced wine list (which seems to be rarer and rarer these days) and super-friendly staff and it’s no surprise that the lines can be out the door!

Volunteer Park Café
1501 17th Ave E
Seattle, Washington 98112
206-328-3155

Tues-Fri 7:00AM-4:30PM (Breakfast, Lunch)
Sat-Sun 8:00AM-4:30PM (Breakfast, Lunch)
Tues-Sat 5:30PM-9:00PM (Dinner)

Notes on lifetimes of Channels and their Factories

One question I get from custom channel authors has to do with the various lifetimes of the components involved. Especially since, as per best practice, their heavyweight resources are attached to ChannelFactories and ChannelListeners and simply referenced from the Channel. Nicholas covered the basics in this post. Which to summarize is:

  • ChannelFactory created Channels cannot outlive their creator
  • channelFactory.Close/Abort will Close/Abort all Channels created by that factory
  • ChannelListener created Channels can outlive their creator
    • channelListener.Close/Abort simply disables the ability to accept new channels; existing channels can continue to be serviced

    Which makes life on the ChannelFactory end pretty straightforward.  On the ChannelListener side, there are a few subtleties. 

    First, a Channel is owned by the listener from the time of creation until the successful completion of channel.Open.  So if you are writing a custom listener that has offered up channels, you should clean them up if and only if they haven’t been opened.

    Second, in order to perform eager disposal, you will need to track active ownership of your heavyweight resources. If there are opened channels, then you need to make sure that the shared resources that they leverage have their ownership transferred from the listener to your active channel(s). This can be accomplished through ref-counting, active transfers, or other mechanisms.

    Butternut Risotto

    In our quest to go through the myriad of squash that we’ve gotten from Pioneer Organics, tonight’s experiment was butternut squash risotto (base risotto with shitakes, cream, and butternut squash). And we doubled down on new recipes; tonight we also tried the George’s Bank scallops (frozen) from Trader Joe’s.

    Verdict: The risotto was fantastic. The scallops had a good texture but tasted a tad fishy. They did look nice though 🙂

    KLscallopRisotto

    Pumping in a Layered IInputChannel

    When writing a layered channel, sometime you want to decouple processing without changing the channel shape. One example would be for layered demux purposes. When layering your IInputChannel on top of a "lower" IInputChannel, you have a few options for lifetime management and pumping that are worth noting:

    1. When your innerInputChannel.Receive call returns "null", that means that no more messages will arrive on that particular channel. You should Close that channel and then Accept a new one.
    2. If the innerListener.AcceptChannel call returns null then your inner listener is completely done providing messages and you need to follow suit when you are through with any added messages that you may have buffered.
    3. If someone calls Close/Abort on your IInputChannel, you have the option of holding onto the inner channel within your listener (and providing a new facade on top when a new channel is accepted). Alternatively, you can close the inner channel and create a new one with your new channel. That choice is entirely at your discretion (and at the mercy of your perf tuning results :))