-
02 July 2009
I’ll be presenting at the Jacksonville Code Camp in Jacksonville, FL (August 29th, 2009)
-
I mentioned there was an open call for speakers the other day… looks like my session was picked! Hope to see you there!
High Performance Solutions on SharePoint Server 2007
Performance should be one of the top areas of focus on everyone's mind when embarking on a Internet facing SharePoint Server 2007 site. In this session we'll look at the built-in caching capabilities. Topics include object model techniques, how to properly manage memory in order to avoid the dreaded OutOfMemory exception, key sizing numbers to keep in mind when architecting your implementation and minimizing the page payload to speed up those page load times.
» Jacksonville Code Camp

-
01 July 2009
SharePoint Search-as-You-Type with jQuery
-
Already since a long time I’ve been thinking about a web part that would search-as-you-type using SharePoint’s search engine. The idea behind this concept is that while you’re typing a query in the search box, asynchronously the query is already executed and the results are being displayed. Every time the query is changed, the results will be updated dynamically. This will allow users to see the results without going to the Search Results page, and even more: they don’t have to go back to alter their query. In such a scenario you want to avoid full page postbacks of course, so AJAX-techniques have to be used to accomplish this. A while back my first approach would be to make use of ASP.NET AJAX to build the necessary functionality in a web part for example. But during the last couple of weeks I’ve become a really big fan of using jQuery Javascript Library in SharePoint sites, and it happens to be that the search-as-you-type functionality can be created with the help of jQuery very easily. The beauty of this solution is that everything is happening on the client (in the web browser), so there is absolutely no requirement to deploy something to the server (nowadays this seems to be called ‘Assembly Free’).
Before you get too excited; it’s quite obvious that when you use this sample on a production server with lots of users, the SharePoint Search component can be hammered with lots of requests (which can be bad for the performance). So use it wisely! To minimize the impact on the performance of the server, the code will only execute a search query when (by default) three characters are entered, and while the user is still typing no queries are executed at all (there’s a configurable delay).
So how is all of this implemented? Well the idea is to display an HTML textbox in a Content Editor Web Part. Using the jQuery library, an eventhandler is added to that textbox for every keypress. When there are more than three characters (value is configurable) entered in the textbox, jQuery will make an asynchronous call to the Search web services (/_layouts/search.asmx). The resulting found items are displayed in an HTML div element which is positioned right below the textbox, on top of all other HTML elements. The user can select a result using the arrow keys, or by hovering the mouse over a result. When a result is selected by pressing the enter key or by clicking on it, the user is redirected to the corresponding page or document. You can see the code working in a web part in the following animated screenshot.
If you want to try this out yourself, just follow these steps. Once again, there is absolutely nothing you need to tweak and/or deploy on your server. You can do all of this through the web user interface of SharePoint.
- Download the code file here.
- Add a new Content Editor Web Part, which is available in SharePoint out-of-the-box, to a page.
- Modify the newly added web part, use the Source Editor button in the properties task pane to add the downloaded code.
- Optionally you can give the web part a meaningful Title in the Appearance group (e.g. Quick Search).
When you check out the code, notice that the first line is a reference to the jQuery library, hosted on Google’s servers. If you plan to use this in production, I’d recommend you to host the jQuery library in your own environment so you have to update the reference with your own URL.
-
01 July 2009
I’ll be presenting at the Microsoft Project Conference 2009 in Phoenix, AZ (9/14-17/2009)
-
What’s a SharePoint person doing at the Microsoft Project Conference 2009? As you may know, the two products, Office Project Server 2007 and Office SharePoint Server 2007 have plenty of integration points and overlap between the two. Now, developers heading to the Project Conference 2009 in sunny Phoenix, Arizona September 14-17, 2009 can not get a SharePoint development primer as I’m presenting the only SharePoint development session there:
Introduction to SharePoint for Developers
Project Server's integration with SharePoint facilitates collaborating on projects within an organization and members of a team. With this integration, developers can extend both platforms to satisfy specific and custom requirements to facilitate unique business processes and add new functionality to improve productivity and efficiency. In this session you will learn what is involved in developing custom solutions for SharePoint.
Hope to see you there!
» Microsoft Project Conference 2009

-
30 June 2009
Introducing the Content Monster Web Part by Todd Baginski & Andrew Connell
-
At TechEd 2009 in LA a few weeks back, Todd Baginski and I co-presented a session OFC405 – Extending the Content Query Web Part to Aggregate Data Across Site Collections and External Sources where we introduced a solution that addresses a common challenge in today’s SharePoint sites: aggregating content ACROSS site collections. It took some time, but we finally got the code cleaned up and posted for you to download and kick the tires too.
Now some will see this as a replacement to the Content Query Web Part (CQWP)… but it isn’t. That is still the ideal way to aggregate content within an existing site collection as it contains a robust caching and is tweaked for peak performance of highly trafficked sites.
What we set out to do was to work on a solution that would do the following:
- Aggregate content across site collections
- Aggregate content from external sources
So after considerable planning; here’s what we came up with… a detailed UML diagram complete with loads of test cases:

click image for higher resolution (that you can actually read)
OK… joking aside, here’s what we did as our architecture is actually quite simple:
- Create a provider-like implementation where…
- The Content Monster Web Part (CMWP) acts as a provider selector (sort of like how the SmartPart works selecting a user control) for installed providers
- The CMWP calls the selected provider, passing in properties. The provider does it’s work and hands back results in XML format.
- the CMWP takes the XML formatted results and runs them through the specified XSLT file to generate the HTML markup used in rendering.
It is really that simple! The current code is a working proof of concept… Todd and I have a lot of work to do to take it where we want it to go. But so far you’ll find the working Web Part, a sample provider and two real world providers that rollup content from Azure and using the SharePoint search API (for cross-site collection aggregation). You’ll see more coming as we get through the summer and into the fall.
You can download the current working code from the MSDN Code Gallery project we setup. Note there are a few releases so make sure you get what you’re looking for!
» MSDN Code Gallery: TBAC Content Monster Web Part for SharePoint
» TechEd OFC405 Presentation (slide deck)

-
29 June 2009
5th Annual Jacksonville Code Camp – Saturday, August 29th (open call for speakers)
-
The 5th annual Jacksonville Code Camp is coming up… just under two months away! This year’s event will be held at University of North Florida and like all others, is free to all who want to register! Make sure you register early… it’s sure to “sell out” with an average attendance of 300+ in previous years.
I’m helping them arrange a SharePoint track of sessions if we get enough speakers. Interested? Submit a session or two at the official site:
» www.JaxCodeCamp.com
