SharePoint Four-in-Hand and Trainer, too

Few days ago I did the last remaining SharePoint exams, which I was postponing for a long time due to everyday tight agenda. Now I join the ranks of SharePoint certified folks, as a Microsoft Certified Technology Specialist in MOSS 2007 and WSS 3.0, both in development and configuration.

The configuration exams were more challenging than the development exams, especially the 70-631 (WSS Configuration) which had a few Network Load Balancing IP addressing questions that made me sweat a little bit.


I also applied and become approved into the Microsoft Certified Trainer program. As my job also involves teaching .NET and SharePoint, it was very important to me to become certified as a trainer. Let’s see where this road will take me.


DataSource, ValueMember and DisplayMember Order Issues

For two times in a row this week I was asked to do a buddy check of .NET code that performs databinding. I found out that the order of the binding operations is very important:

  • Set the DisplayMember and/or ValueMember first
  • Set the DataSource property after that

You will avoid many exceptions this way 😉

Scott McMaster at CodeProject has more information regarding this weird databinding Windows Forms issue.

SharePoint Predictions for 2008: Be Aware

The good folks at CMS Watch wrote their "crystal ball" predictions in CMS world last December. There is one prediction regarding SharePoint 2007, originally posted at

MOSS enters the valley of disappointment

SharePoint will continue to grow at viral rates as a low cost, low touch, document collaboration system. But in 2008 we will see the start of a noticeable backlash, particularly among larger enterprises.

The backlash will be two-fold. First larger enterprises will exhibit major compliance and litigation discovery issues across numerous unmanaged and unaccountable SharePoint locations. You will also see a backlash against sizable development costs and times to build maintainable applications in the MOSS environment. With the more complex SharePoint projects struggling to launch, customers are realizing a disconnect between Redmond’s heavy promotion and the realities of a product that is significantly less out-of-the-box than most expect.

Well, I’m going to add my humble two cents on this issue. I do partially agree with the analysis.

I think that there’s indeed a disconnect between the marketing movement behind SharePoint and its real experience in a more that out-of-the-box scenarios. There are some features in SharePoint that are unacceptable to almost any company as they come by default, such as Record Center or Publication, even the workflows are too basic for the most. However, these basic features are a huge improvement for the companies that do not have them, as having a basic document center or a rudimentary workflow approval is better than not having them at all.

For a bigger company or a bigger project, there are two realities often neglected:

  • SharePoint out-of-the-box features MUST be customized or extended to be of business value. It’s the "one-size-doesn’t-fit-all" adage in action.
  • There MUST be a clear Governance Policy in place for SharePoint applications and content. This cannot be overstated. Failure to do so is an invitation to SharePoint chaos.

So, the message I want to put across is this one: yes, SharePoint default settings are a no-go for the most of the customers; and no, there won’t be a "valley of dissappointment" for the customers. Well, not while there are qualified Microsoft partners to guide them through the customization and governance opportunities.


Sample SharePoint Governance Plan by Microsoft Consulting Services fellow, Mark Wagner
SharePoint 2007 Governance Checklist Guide by Microsoft, nicely formatted and ready to print
SharePoint Customization Policy, an excellent "menu-choice" book where all the varieties of SharePoint tweaking customizing are listed, with advantages, shortcomings and a short example.
SharePoint Governance workspace at CodePlex, steadily growing toolbox to help control the exploding sites nightmare.

.NET 3.5 Enhancements Training Kit is Available

Wow, that’s fast! I’m still digesting the NET Framework 3.0 training (mainly over WPF now) and the folks from Redmond deliver their first version of .NET 3.5 Enhancements Training Kit for download.

It contains six hands-on labs, as can be seen in the picture below. They cover the new ADO.NET enhancements (Entity Framework and Data Services), ASP.NET new MVC architecture, ASP.NET Silverlight and AJAX controls.


Download the kit at and start learning. As Jonathan Carter (MS Visual Studio evangelist) states in his blog, by the time these enhancements are RTM, you will be a master!

SharePoint Protocols “explained”

If you were not aware, Microsoft released a bunch of PDF documents specifying various protocols that SharePoint uses to communicate internally and with other servers. The package is available for download at Microsoft Download site and weighs about 134 MB, but if you are used to downloading the SDKs it’s no sweat.

The "bunch" of documents is grossly divided into Front-End protocols (SharePoint internal communication) and Back-End protocols (talking to SQL Server, Exchange, etc). Excel Services calls, Active Directory communication and Office/Outlook protocols are also included.

Good news, huh? Well…a sort of.

The not-so-good news is that it’s not like SDK or technical documentation we’re used to. Microsoft just dumped 152 ugly PDF files that have a ton of links to each other. It’s very hard to just skim the content, the "noise" is very high (and the "Preliminary" watermark doesn’t help either).

Protocol documentation sample

Well, at least we have some official documents that can shed some light on the inner workings of SharePoint and help us make it better by extending them. Too bad they are barely usable in their present form.

An added bonus: you can find some geek funny protocol abbreviations such as SPFEPO (SP Front-End Protocols), SPBEPO (Back-end protocols) and SPEMAWS (SP Email Web Service), for instance.

SharePoint 2009 / 2010 / vNext Rumours

There’s no official information by Microsoft about the next version of WSS 3.0 / MOSS 2007 technologies. Nevertheless, there are bits of information that start to trickle down so that you can speculate about the most probable changes and improvements in the next SharePoint version. This version is likely to be named SharePoint 2009 or SharePoint 2010 and to be released just about when Office "14" is to be released, between 2009 and 2010.

My "educated guess" about the changes we can expect is:

  • Native AJAX and Silverlight support
  • More offline capabilities
  • Microsoft Office files HTML viewers (following the line of OWA and EWA)
  • Bi-directional BDC
  • Native support for SQL Server tables as SharePoint lists
  • Publishing module rewritten, to change the faulty Export / Import process
  • More Business Intelligence capabilities for MOSS, as PerformancePoint 2007 matures
  • Social networking improvements, maybe with Knowledge Management module included out-of-the-box

There are rumours that the first CTP should appear in 2008. So, all we need is just a little patience

Disclaimer: although it should be obvious, the information in this post is based completely on my knowledge of SharePoint and the information I could find on the Internet.

Vista NetStumbler Alternative Tool

I’m a big fan of NetStumbler WiFi discovery tool, but I’m sadly disappointed that it’s not supported under Microsoft Vista. However, we can use a Vista network command prompt to find more technical details for the wireless networks around.


Open a cmd command prompt from the Start button

Type netsh

Type wlan show networks mode=bssid

Here’s the information I see right now:

netsh command screen

More Information

NetSh Commands (from TechNet)

Page.Trace and System.Diagnostics.Trace Comparison

More often than not, I see how newbie .NET programmers are confused when trying to trace ASP.NET applications. The origin of the confusion is that .NET Framework exposes two different tracing mechanisms when you are developing web applications.

General .NET Framework Tracing

Firstly, you have the standard low-level System.Diagnostics.Trace class. This class allows us to emit tracing information within our code, using Trace.WriteLine() methods. We also need a TraceListener, which will allow us to capture this information into a storage we choose. .NET Framework does the plumbing for us when we associate a TraceListener with an application, using its configuration file.

There are several pre-made TraceListener implementations already available, such as TextWriterTraceListener (which writes the tracing information into a text file) and EventLogTraceListener (which writes the same information in a specified event log, even if it’s in a remote computer).

ASP.NET Tracing

ASP.NET offers another tracing mechanism for web developers, based on System.Web.TraceContext class. This is an object that lives in ASP.NET page, just like Controls, Request, Response and so on. We have to enable tracing in web.config file, and we can also set it up to display the tracing information on the page itself (setting pageOutput=’true’) or using ASP.NET trace viewer (appending /Trace.axd to the page URL). For example:

<trace pageOutput="true" enabled="true"/>

You can emit tracing information from ASP.NET code using Write or Warn methods of the Page.Trace property. The difference is that Warn messages are displayed in red.

The best thing is that ASP.NET runtime adds a lot of information by default, such as:

  • timing of the main page events, so we can check how long it takes
  • page controls hierarchy tree
  • server variables
  • request and response information

in addition to our own tracing information, as displayed below:



We can use System.Diagnostics namespace objects to trace in ANY .NET Framework application, including ASP.NET ones. But, for ASP.NET applications, we have a powerful tracing mechanism already set in place by Page.Trace property.

More Information

.NET Tracing Walkthrough
System.Diagnostics.Trace Class
ASP.NET Tracing