Wednesday, May 19, 2010

Fiddler inspector for WCF Silverlight Polling Duplex and WCF RIA - Joe Zhou

Reffered URL -

Fiddler is a wild popular tool for web development debugging. It enables user to look at the http traffic and diagnoses issues. Natively it provides Raw, Hex, Xml and some other views that understand specific formats. For the format it doesn’t understand, it provides an Inspector plugin model that user can easily implement and hook it up to display http package in a more readable format. In this post, I will show you a new inspector that understands .NET framing used by Polling Duplex WCF in Silverlight 4. It also understands raw binary Xml used by WCF RIA services and binary soap message used in general WCF services.

If you need some background on .Net framing protocol, you can start by reading Nicolas All’s blog posts on Message Framing. More information can be found in .Net framing specs if you want to know all the nitty-gritty details about the protocol. For the sake of simplicity, I will only talk about the framing protocols used in Silverlight 4 Polling Duplex.

One of the major change for Polling Duplex in Silverlight 4 is we enabled chunking. As shown by the Polling Duplex architecture diagram below, we supported duplex communication in Silverlight world using long poll HTTP request for messages from server to client. In Silverlight 2 we did some rudimentary performance optimization to let multiple sessions share the same poll to reduce number of current http requests. However the server side is still not very optimal in the sense that we only send back one message for each long poll request. This is because we used SOAP over http and there is no framing support to send back multiple messages.

To enable multiple callback messages sharing the same http poll request, we added a mode that uses .Net framing over http. In cases where the number of messages the server needs to send to the client is large, this mode provides dramatic improvements in communication performance compared to the old single message mode. More detail about performance comparison can be found from Tomek’s post here. The framing modes we chose are Single Sized mode for client to server message and Simplex mode for callback messages.

.Net framing is a binary format that breaks up a stream of data into demarcated messages. It has a series of typed records to indicate versions, modes, via, encoding, and soap envelops. Because of this, it is not the most human readable format. To help user understand their messages during development time, I implemented a WCF Silverlight  fiddler inspector that takes a message stream and return formatted SOAP message(s) as shown below. To look at raw stream, you client Raw tab. To look decoded stream, click WCF Silverlight tab. Below are raw and encode Polling Duplex messages as seen in fiddler

The reason this inspector is called WCF Silverlight is because it not only understand .Net Framing used in Polling Duplex, it also understand raw binary Xml used by WCF RIA services and binary SOAP messages. It will try to decode based on the content-type of the http package. Below tables shows the currently supported content-types


Decode as


.Net framing


Binary encoded SOAP message


Xml SOAP message


Binary Xml message

Deployment of the WCF Silverlight inspector is straightforward. Just copy the binary to %ProgramFiles%\Fiddler2\Inspectors. You should be able to find zipped Visual Studio 2010 solution file for the inspector and a compiled dll that you can readily use.

Intelligent Planning: interview with Vanessa Carpenter - Elizabeth

Intresting Article -

Differences Between a Good and Bad Leader - Stephen Seay

Referred URL - 

Good Leaders...

need to have a vision that is different, but still able to be accepted by the masses.

step outside of their comfort zones to make change happen

take risks, make sacrifices, and sometimes pay a cost to achieve their vision

instill confidence in others because they themselves are confident

build consensus

with charisma can change organizations

are encouragers

are positive

have the interests of others above their own

attract followers

bring new perspective to problem solving

are enablers

are an inspiration

Bad Leaders...

drive wedges in between people, teams, and organizational structures

don't stand up for their peers or their subordinates

behave like children when they don't get their way

gossip and spread rumors

don't reward others for their accomplishments

use "technobabble" and jargon to confuse others

believe they are smarter than everybody else

are unaware (sometimes) that most people don't respect them

dictate policy and doctrine almost exclusively via e-mail or memo

are invisible to most of the organization

don't want rules, processes, or procedures... except for others

prescribe before diagnosing

don't solicit input from others unless it is to validate what they already believe

kill organizations through their arrogance and unwillingness to listen

are silent when they should speak

speak when they should be silent

Bad leaders are hurting our organizations, our governmental institutions, our local schools, churches, and neighborhoods.  Bad leaders poison many of those around them, run organizations into the ground, and are culture killers.

Do your part to eliminate the "cancerous" effect caused by bad leaders. Be a "good" leader by exhibiting the necessary leadership principles and ideals that inspire and motivate others.

Don't be just another talking head.

Be visible, don't gossip, be respectful of others, build consensus, and most of all be honest in all of your dealings.

Monday, May 17, 2010

30 Tips for Successful Communication as a Remote Worker By Scott Hanselman

Referred URL : 

Here's their list of tips, reprinted from an internal mail with permission.

Show consideration
  • Set up calls at mutually workable hours. Avoid blocking calendars with local meetings during shared hours. Fridays are often a poor choice.
  • Start on time. Leaders should set up the bridge or Live Meeting before the call starts. Attendees should always show up on time.
  • If you can't make it, cancel or decline least 18 hours in advance. Changing your plans to attend a non-existent meeting is very frustrating. Think carefully if the recipient will see your cancellation in time (they may be asleep).
  • Assume the best. If the other team isn't meeting your expectations, it's probably because of a lack of awareness or a misunderstanding—not incompetence. Clarify and confirm before drawing conclusions or judging.
Use the right tools
  • Choose the right tool. Office Communicator is great for 1-1s and small group meetings. LiveMeeting is usually better for large group meetings.
  • Use video.  Seeing faces increases the quality of the communication. It also helps create focus, preventing people from getting distracted, having side conversations, checking their email, etc.
  • In a group, use a RoundTable.  As well as enabling video, the noise-cancelling mics it has are excellent.  Make sure all your meeting rooms have one, including the satellite mics.
  • On your own, use a headset.  The sound quality for both parties is far superior.
  • Don't use your laptop microphone. Laptop microphones are poor quality and pick up noise from your laptop's fan, disk, and keyboard. Use the mic on your webcam or, better yet, an external mic.
  • Be a black-belt Ninja with the tools.  Make sure you can set up and join meetings quickly so that they start on time. Learn all the available features. Set up time to sit with your local team to practice and explore.
Be Heard and Understood
  • Speak clearly and slowly. The connections aren't always clear.
  • Be precise and concise. Help to keep the meeting short and productive.
  • Speak one at a time, otherwise no-one can be heard.
  • Ask for confirmation that the callers heard everything clearly.
  • Sit near the microphone, especially if your voice is soft.
  • Ask for comments. It's hard to break into the conversation over the phone.
  • Avoid jargon and culture-specific phrases. English is not the first language of many people on our teams, and can also vary greatly across cultures.
  • Meet face to face from time to time.  Meeting in person builds your knowledge of each other's mannerisms and communication style.  Subsequent remote communications are much richer and misunderstandings rarer as a result.
Make meetings effective
  • Pick the right forum. Use meetings rather than long email threads to discuss complex issues. For small meetings, it is often better if everyone is in their own office rather than using a meeting room—this promotes equality between local and remote team members.
  • Share the context and goals. Shared context is critical to clear communication. There are often a lot of assumptions you know in a particular location based on side-conversations, etc.
  • Share a deck. It's much easier to follow the conversation if everyone is looking at the same thing. Even if you are sharing via OC or Live Meeting, send the deck or a link to the deck by email well in advance (home connections can be slow) and call out each slide.
  • Send minutes promptly. After every meeting, send minutes documenting all decisions and including clear actions and owners. Avoid cryptic or overly-concise notes—imagine them being read or reported out by someone who wasn't there, six months later.
  • Record and share brown bags. Brown bags are often at unsociable hours. Recording and sharing helps partner teams as well as your own.
Make Email Work
  • Be clear and precise. It's very easy to misinterpret email, especially across cultures and languages. Re-read your emails before sending.
  • Document everything. Document all decisions - if it's not recorded in email, it didn't happen.
  • Share everything. Use email to share face-to-face hallway, office, lunchtime or post-meeting conversations.
  • Be inclusive. Leave time for other sites to read and reply before closing the issue (as appropriate).
  • Set up inclusive DLs. Having all stakeholders on the appropriate distribution lists is the easiest way to keep from forgetting other sites. Don't hide DL membership.
  • Answer all questions asked. Incomplete answers lead to frustration and wasted time.
  • Avoid unnecessary questions. Ask yourself ‘is it really worth a 24-hour turn-around to answer this question? Can I answer it myself, or ask someone local?' Don't block an important thread with a trivial question.