Author Archives: kenny

Rosebud (Seattle, WA) – CLOSED

Rating:

I’m a little biased here: Rosebud will always hold a special place in my heart as the location of my first date with Lauren. It’s a cozy neighborhood restaurant with friendly staff and consistently good (occasionally amazing) dishes on the menu. They also have a great weekend brunch and created one of my favorite summer cocktails: Raspberry Lemonade (simply Raspberry Stoli + Lemonade).

Our original destination tonight was Via Tribunali. However, they haven’t lost any of their luster with the crowds: at 9PM on a Wednesday the wait was still 45-60 minutes. We politely declined and walked the two blocks east to Rosebud.

At the waitress’ recommendation we started with the Duck Confit Salad. It was an absolute delight. The duck was tender and did not overpower the rest of the salad (a common failing). The napa cabbage was fresh, crunchy, and complemented by toasted hazelnuts and a sesame-ginger vinaigrette.

Entree#1: Steelhead salmon atop a spinach rissoto cake and tomato ragout. The salmon was prepared well — a simple rub+grill preparation leading to a smooth oily texture and bringing out the natural flavors of the fish which were paired well with the ragout. The spinach risotto was too weird for my taste — two flavors that didn’t mesh well in my mouth. But to quote my lovely wife “it did look pretty!”

Entree#2: Roasted chicken breast stuffed with wild mushrooms and goat cheese, atop sage polenta with swiss chard. I really enjoyed the sage polenta — creamy with fresh herb flavoring. The chard was well seasoned and sauteed, far preferable to the infused risotto. The chicken itself was a bit disappointing. There was very little stuffing, resulting in a few really tasty bites of stuffed chicken along with many more boring bits of roasted chicken. Not to say that the chicken wasn’t well executed, but it was simply roasted chicken for much of the dish. Next time, more stuffing!

Overall Rosebud is a worthwhile consideration for a low-stress casual, yet special, night out.

Rosebud
719 East Pike St (at Harvard)
Seattle, WA 98122
206-323-6636

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

TIP: Rosebud is on the Microsoft Prime card: card holders receive two entrees for the price of one.

Suppressing Expect 100-Continue on your Requests

WCF has a very powerful extensibility mechanism around modifying HTTP headers. However, you will get tripped up if you try and modify the “Expect: 100-Continue” header on outgoing requests. This is because System.Net will (by default) add this header on outgoing requests.

As a workaround, you can change the default for your application by setting a System.Net static:

System.Net.ServicePointManager.Expect100Continue = false;

On The TJ's Turkey Burger Rollercoaster

While driving home from the airport this evening, Lauren turned to me and said: “You know what I would like for dinner….Southwest Turkey Burgers.” We had a moment of silence, since the saga had continued when Trader Joe’s discontinued the Turkey Burgers (again) this spring.

To get her mind off of the Turkey Burger mourning, I suggested we experiment on a Mediterranean-style chicken sandwich. We swung by TJ’s on the way home and gathered ingredients: chicken breasts, “Mediterranean flatbreads”, tzatziki, feta cheese, and some mixed greens. Lauren got in line while I did a quick scan of the freezer section for any interesting tidbits. It’s almost reflex for me to scan the burger section in vain for a restock of the Turkey Burgers, but for the second time in my life it was double-take time. I returned to surprise Lauren with 2 boxes in each hand, and she proceeded to convey this story to our befuddled check out assistant.

Nonetheless, momentum continued on the Mediterranean chicken plan (we’ll crack open the burgers tomorrow night). The results were good enough to post about (and easily satisfy my father’s requirement of “it should take less time to prepare a meal than to eat it”). Here’s the basic recipe:

  • Chicken breasts
  • Tzatziki (such as TJ’s Cilantro & Chive Yogurt Dip)
  • Red onion
  • Persian-stlye pita (such as TJ’s Middle Eastern Flatbreads)
  • Mixed greens (such as TJ’s Herb Salad Mix)
  • Feta cheese (such as TJ’s Authentic Greek Feta in Brine)
  • Garlic
  • Lemon juice
  • Mint
  • Olive Oil

Slice the chicken breasts into strips and season with crushed mint, lemon juice, salt, and pepper. Sauté garlic in olive oil, then stir in the chicken. Grill pitas on a grill pan. Place pita on a dish, spread on some tzatziki, add mixed greens, chicken, crumbled feta, and thinly sliced red onions.

Enjoy!

homemade Mediterranean chicken sandwich

Vino Volo (Seattle, WA)

Rating:

Lauren and I took a flight to San Jose this evening, coming straight from work to the airport. We made it through security with an hour to spare and hungry for some dinner. On our stroll through the main concourse we noticed Vino Volo: a new storefront offering wine tastings and food. Intrigued, we stopped in to check it out.

Turns out that Vino Volo opened two weeks ago to build on its successes in DC’s Dulles National Airport. The Sea-Tac shop surrounds you with bottles of wine on all the walls, and it’s a funny mix of retail shop meets hangout meets light restaurant. We signed ourselves up for the Pinot Noir wine flight, a rosemary chicken sandwich, and Beecher’s ziti & cheese.

The rosemary chicken sandwich was impressively presented with large sprigs of rosemary in place of toothpicks. The pesto aioli and toasted rosemary foccacia were an enjoyable combination. The chicken itself could have used some more attention to detail — the results were a bit too dry for my taste. Overall though, it was darn good for an airport sandwich 🙂

The Beecher’s ziti and cheese was fantastic. Gooey Beecher’s Flagship cheese with flaky breadcrumbs and al dente ziti is a great pre-flight belly filler!

Overall Vino Volo offers a fun (yet still efficient) alternative to standard airport fare. We’ll certainly stop there again the next time we’re in SEA and have some time to kill.

Update (5/19/2009): Ziti and cheese still tasty, but prices are up and portion sizes are down making it a harder sell.

Vino Volo
Sea-Tac Airport
Central Terminal
Seattle, WA

Daily 9:00AM-11:00PM

A Chef Walks Into a Puzzle

This weekend, Lauren and participated in a geek event at Microsoft called Iron Puzzler. It involves a day of writing two puzzles (one “paper based” and one “non paper based”). Game control released the four “secret ingredients” on Saturday morning (of which we had to incorporate at least 1-2 of in our puzzles):

  • Spoon
  • The letter L
  • Clock
  • Mercury

For our non-paper puzzle, we wrote a text-based adventure game (think something in between Zork and Monkey Island).

It got rave reviews by the participants of Iron Puzzler, so if you want to check it out (and trust me enough to download an exe :)) I’ve posted the game and README. Be ready for mass amounts of silliness!

Our text adventure game

Manipulating HTTP Headers in your WCF Message

I was going to write a quick note about how to suppress Expect 100-Continue as a result of this forum post. But it seems no one’s covered the background of WCF best practices for manipulating HTTP headers in general. So first, this post 🙂

Back in Beta 2, we stepped up our first class HTTP support by allowing WCF users to access and manipulate the HTTP headers that are sent on the wire. The programming model interface to this feature is through two Message Properties: HttpRequestMessageProperty (for HTTP requests) and HttpResponseMessageProperty (for HTTP responses, as you might expect). They are represented as Message Properties and not Message Headers since they are transport-specific information that is stored “outside” of the Message. Message Headers require an infoset-based representation that is included in serialization over all transports.

Using the HTTP-based Message Properties is very straightforward. First, you setup the contents of your Property. Then you attach it to your outgoing OperationContext or to your outgoing Message (if you are using the Message programming model directly). For example, if I wanted to send a GET request through WCF, I would do the following:

HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Method =
"GET";
httpRequestProperty.SuppressEntityBody =
true;
httpRequestProperty.Headers.Add(HttpRequestHeader.UserAgent, "Kenny's Client");

using (OperationContextScope scope = new OperationContextScope(myClient.InnerChannel))
{
  
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
  myClient.CallGetMethod();
}

For incoming requests/responses, you can look up the HTTP-specific information by looking for the Property on your incoming context:

HttpRequestMessageProperty httpRequestProperty = null;
object propertyValue = null;

if (OperationContext.Current.IncomingMessageProperties.TryGetValue(HttpRequestMessageProperty.Name, out propertyValue))
{
  httpRequestProperty = (
HttpRequestMessageProperty)propertyValue;
}

If this property is non-null (note that you could be accessing a Message that came in over a non-HTTP transport), then it will faithfully represent the information associated with the HTTP-specific data that was associated with this request. The above approach also applies to HTTP responses. The difference is that you use the HttpResponseMessageProperty class, and the non-header items that you can manipulate include Status Code and Status Description (rather than Verb and Query String on the request).

Security and Streamed Messages

When I talked about transferring large messages with WCF, I neglected to cover how security interacts with streamed messages.

A number of V1 binding elements require message buffering. For example, WS-RM (ReliableSessionBindingElement) buffers messages so that it can retry sends when they fail. The integrity (signing) protocol provided by WS-Security requires buffering of the message since the signature is stored in a message header (and headers are sent out prior to the streamed body).

The system provided bindings in V1 that support streaming are BasicHttpBinding, NetTcpBinding, and NetNamedPipeBinding. To enable bidirectional transport-level streaming, set the TransferMode on your binding to TransferMode.Streamed. Alternatively, if you only require streaming in one direction, you can set the TransferMode value to TransferMode.StreamedRequest or TransferMode.StreamedResponse.

Transport-level streaming will work with Transport security. It will also work with “mixed-mode” security: where authentication is provided by WS-Security, but confidentiality and integrity are provided by the transport.

If you want to use full WS-Security, then you would need app-level “chunking” or a chunking protocol at the channel-layer.

Using WCF with NLB

There comes a point in time when one server is just not enough. You need to scale your service across multiple back-ends. Enter Windows Network Load Balancing (a.k.a. NLB). By using NLB, TCP connection initiations can be serviced by different machines.

This has an obvious impact on in-memory sessions. If you are using a protocol such as WS-Reliable Messaging (which will reestablish connections during the course of a session) or WS-Secure Conversation (which uses a session-negotiated security token), then you want to make sure subsequent connection requests go to the same back-end server. Similarly, when using a transport such as HTTP (which can in worst case scenarios use a new connection for each request-reply), if you are depending on an in-memory session then you will also need to ensure consecutive connection establishments arrive at the same server. Many load-balancer have an “affinity” setting that you can set to enable this behavior. Alternatively you can write a “state-less” service (from the in-memory perspective), where any app state is stored outside of your process. If you take this approach then you should avoid using WCF Sessions (which may store infrastructure state in-process).

Nicholas gave a nice overview of our Transport quotas. We have a few knobs on the TcpTransportBindingElement specifically targeted for NLB-type scenarios. They are associated with our client-side connection pooling. Nicholas highlights the final object model for these quotas, and I’ll go into a little detail about how these quotas will effect your use of NLB with our TCP transport.

  • IdleTimeout: Controls the amount of time that a TCP connection can remain idle in our connection pool. This is useful for scenarios where you don’t mind connections being reused when you are under load, but when the load dissipates you wish to reclaim your connection. The default value of IdleTimeout is 2 minutes.
  • LeaseTimeout: Controls the overall lifetime of a TCP connection. The lower you set this value, the more likely you will be re-load balanced when you create a new channel. Note that if this timeout expires we won’t just fault an existing connection. We will however close that connection when you Close() the active channel. This setting works well in conjunction with IdleTimeout. For example, if you are cycling through channels, and you are never really “idle”, you can still ensure periodic connection recycling through LeaseTimeout. The default value of LeaseTimeout is 5 minutes.

For HTTP we inherit our connection pooling settings from System.Net, so you can tweak their idle settings in order to control connection recycling frequency over HTTP.

The Herbfarm "Experience" (Woodinville, WA)

Rating:

The Herbfarm. Mentioned on just about every “top restaurants” page in the Seattle area, I had heard tale of it ever since I moved here. Yet after nine years I hadn’t experienced it personally. My sister helped us fix that with her fabulous wedding present, which included dinner for Lauren and I at the Herbfarm, as well as one night in an “Herbfarm Romantic Suite” at the adjacent Willows Lodge.

We arrived early to fully experience Willows Lodge. Staying at Willows makes you feel like you are at a remote cabin in the North Cascades. The ambience and service was reminiscent of the fabulous Sun Mountain Lodge. We had a relaxing trip to the Spa (they have an 24-hour outdoor sauna and jacuzzi which is a great pre-massage relaxant :)). Our balcony overlooked the garden, so we got to witness a wedding ceremony before heading down a short pathway to dinner.

Dining at the Herbfarm is not for the gastronomic faint of heart: it’s a nine-course, full evening affair with wine and a pre-dinner tour of the herb garden. On a blustery October evening, we sampled garlic chives (the flowers taste like garlic, it’s amazing), lemon verbena, and other herbs that were to be featured in the evening’s dinner. Every meal at the Herbfarm has a theme, and ours was A Mycologist’s Dream: a.k.a. mushrooms galore.

A Funghi StartFollowing the garden tour (which was a little kitsch, but at the Herbfarm you need to learn to embrace kitsch), we settled in for some herb-infused champagne and our first course: A Fungi Start. This trio included a crispy, light tempura Angel Wing mushroom, a savory Morel mushroom flan, and a Matsutake mushroom consomme with a spot prawn. The tempura was fried to perfection with a light breading and paired well with its lemon thyme soy sauce. The flan was a very unique mushroom creation: it had a creamy texture that you would expect for dessert, but the flavor was rich with savory mushrooms. The consomme was intended to be a simple presentation reflecting the flavor of the Matsutake. Perhaps they should have used more mushrooms, as I found it quite plain.

In between the first and second course our champagne glasses were topped off (it turns out that the meal not only includes generous wine pairing pours, but also fill ups as the waitstaff wonders about), the lights dimmed, and the introductions began.

The chef and his mushroomsAs I mentioned earlier, the Herbfarm consists of a certain amount of cheese. This was in full force when the red curtains close on the open kitchen and the staff are lined up shoulder to shoulder. The owner, Ron Zimmerman, introduces each one of the kitchen and serving staff, including their credentials and accolades. Imagine if before each Broadway show they decided to read you a shortened version of the “Who’s Who in the Cast”. Ugh, drink up.

Following the staff introductions, the chef (Jerry Traunfeld) and the sommelier went over the details of the menu. Jerry had samples of all the evening’s mushrooms (he is displaying a huge Cauliflower mushroom in the picture here). This part was actually quite interesting. I was very impressed with Jerry. Here is a world-acclaimed chef who has been at the Herbfarm for 16 years, yet seems very down to earth. He described the thought process behind each dish and how the mushrooms were to be incorporated. During the meal preparations he was an active participant in the kitchen, in a very player-coach type role. If he hadn’t been pointed out as the executive chef, you would think he was another “normal” member of the kitchen staff. Very cool. The sommelier on the other hand took herself a little too seriously. But she gave us lots of tasty wines so I’ll cut her some slack 🙂

Crab and King Bolete HandkerchiefsAfter the introductions finished, the curtains reopened and (relatively speaking) normalcy resumed. Our table was located in the first row of tables in front of the open kitchen, so we were able to witness the herculean efforts of the staff preparing 100 simultaneous meals. Our second course consisted of crab and King Bolete mushrooms inside of light pasta “handkerchiefs”. Simple and well executed preparation of very fresh and tasty ingredients. The wine paring was a Ken Wright Cellars Chardonnay that was more of a Burgundy-style Chardonnay (yay!) even though it was from California.

Third course: Soy Marinated Roasted Black Cod with Cauliflower Mushrooms. Served with a side of Quince and Savoy Cabbage. This was the best course of the meal. Black cod is also known as sablefish, and is a completely different beast from “regular” cod. It was rich, the perfect amount of oily, and melted in your mouth. Cauliflower mushrooms were a great crunchy complement. The quince tasted like a cross between an apple and a pear (I bet “pearple” wouldn’t fly with the marketers).
Roasted Black Cod

For the main course (#4 for those counting along), Jerry said he wanted to “fully feature the mushrooms”, and the result was a “Red, White and Blue Mushroom Tower.” Lobster mushrooms were the “Red”, Bear’s Tooth mushrooms were the “White”, and Blue Chantrelle mushrooms were the “Blue.” Lots of mushroomy goodness served with a Sungold tomato sauce.
Red, White, and Blue Mushroom Tower

Concord Grape InfusionAt this point we were halfway through the meal. After 3 glasses of wine we were also getting a bit tipsy. The proprieters encourage you to tour the house in between courses, and we took advantage of the pre-intermezzo lull to walk around. There is a library upstairs. It overlooks the dining room and has a large array of cookbooks from chefs and restaurants around the world. The entire house is pretty ecclectic and reflects Ron’s fascination with eBay. We returned to our table for the intermezzo, which was a disappointment. The warm “Concord Grape Infusion”, with lemon verbena and rosemary, tasted like Manischewitz Concord Grape wine. Lame.

Muscovy Duck with MushroomsCourse #6 was our singular meat course of the evening. A three part presentation a la the first course, this plate consisted of mushroom-braised duck leg with a red wine reduction, mushroom and gizzard strudel, and a mushroom-crusted duck breast with rosemary. It was paired with our final wine of the evening, a local syrah from the Boushey vineyard. I don’t remember much of the details at this point, but do remember enjoying this course immensely 🙂

Quillisascut Goat Cheese TartAt this point in the evening we had wined and dined heavily and it was time to start the final approach: cheese and dessert. First up, a Quillisascut Goat Cheese Tart, with fruit compote and roasted chestnuts. A rich, savory cheesecake texture with sweet, slightly carmelized fruits.

By all counts I am quite full at this point, but dessert and coffee (which also included some “small treats”) remained. Dessert was yet another trio. No mushrooms here, though the Pear Edulis with its merengue top was presented in the shape of a funghi. To round out the group was an Apple souffle with orange-thyme custard sauce and a pumpkin-bay sundae with homemade marshmellows. The sundae was my favorite.
Sonata to Autumn Desserts

Lauren and bonus dessertAll I have to say about the coffee and tea is that if you order the “Smart Tea”, you get a set of small puzzles to make your drunken way through while you munch on various small treats. After lingering over your coffee and tea you’ll be glad that you have a room at the Willows Lodge across the street so that you only need to cover a couple hundred feet to a very comfortable bed with late checkout 🙂

If you’ve read this far, for what its worth I’ll mention that the entire experience of the Herbfarm plus Willows Lodge makes for a very enjoyable and indulgent vacation for Seattle-ites without any of the typical vacation travel overhead. Enjoy!

The Herbfarm and Willows Lodge
14590 NE 145th St.
Woodinville, WA 98072
425-485-5300

Thur-Sun: Single Seating (Dinner only)