Welcome to my blog on all things SharePoint. I have a range of articles that will interest you if you've made it as far as visiting my blog. I was awarded as an SharePoint MVP by Microsoft in July 2010. I currently live in New York and am an Enterprise Architect at AvePoint Inc.. I co founded www.NothingButSharePoint.com with Mark Miller in 2010.

MVP AwardJeremy Thake Profile Photo

Whitepapers

NBSP

Check out my articles on NothingButSharePoint.com

Solution Development in SharePoint 2007

This series was inspired by the chatter amongst SharePoint blogs on the best ways to approach customisations in SharePoint using Solutions.

Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - Part 8

Leveraging the SharePoint Platform

This series was inspired by a discussion had with Andrew Coates at a Perth SharePoint User Group meeting. This then turned into a 6 part series on Arno Nell's SharePointMagazine.net web site.

Initial post - Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6

Webcasts

I have recorded various web casts that I present at User Groups or just on a specific topic by request:
How ASP.NET Developers can leverage SharePoint webcast
SPSource Webcast: Reverse engineer Lists to ListTemplates and much more
SharePoint Development with Unit Testing webcast
Perth SharePoint UG Web Cast on approaches to deploying artefacts (SPSource)
More...


Podcasts

I have been interviewed about Leveraging the SharePoint Platform by the SharePoint Pod Show: listen here .

RSS Feed Feed your read!

Archives

November 2012 (6)
October 2012 (8)
September 2012 (4)
August 2012 (7)
July 2012 (13)
June 2012 (4)
March 2012 (1)
February 2012 (1)
January 2012 (5)
September 2011 (2)
August 2011 (1)
July 2011 (3)
June 2011 (7)
May 2011 (3)
April 2011 (3)
March 2011 (3)
February 2011 (2)
January 2011 (1)
December 2010 (4)
September 2010 (4)
July 2010 (5)
June 2010 (4)
May 2010 (6)
April 2010 (7)
March 2010 (5)
February 2010 (7)
January 2010 (3)
December 2009 (1)
November 2009 (6)
October 2009 (9)
September 2009 (7)
August 2009 (6)
July 2009 (13)
June 2009 (4)
May 2009 (12)
April 2009 (4)
March 2009 (4)
February 2009 (13)
January 2009 (4)
December 2008 (4)
November 2008 (11)
October 2008 (16)
September 2008 (4)
August 2008 (5)
July 2008 (4)
June 2008 (8)
May 2008 (5)
April 2008 (9)
March 2008 (5)
February 2008 (6)
January 2008 (1)
November 2007 (11)
October 2007 (8)
September 2007 (24)
August 2007 (5)
July 2007 (2)
May 2007 (1)
April 2007 (1)
March 2007 (1)
February 2007 (3)
January 2007 (4)
November 2006 (7)
October 2006 (7)
September 2006 (18)
August 2006 (14)
June 2006 (3)
May 2006 (8)
April 2006 (4)
March 2006 (38)
February 2006 (30)
January 2006 (2)
December 2005 (3)
November 2005 (28)
May 2005 (1)
April 2005 (5)
March 2005 (1)
November 2004 (1)
August 2004 (11)
July 2004 (1)
Failed to render control: An error occurred during a call to extension function 'createMonthUrl'. See InnerException for a complete description of the error.

Links

Tag Cloud

Ajax, Apple, DotNetNuke, Enterprise Content Management, Error Resolution, Gadgets, General, Governance, Microsoft .Net Development, Mobile, SharePoint, Sharepoint Business Forms, Sharepoint Business Intelligence, Sharepoint Collaboration, SharePoint Development, Sharepoint Enterprise Content Management, Sharepoint Enterprise Search, Sharepoint Portal, US Migration, Web 2.0, Workflow
May 262009

Results from the SharePoint Implementation Approach Survey

A big thank you to the 182 people that responded to the Survey! It has been a real eye opener for me in terms of the amount of approaches that are available out there!

Here’s summary:

  • So many not on 64bit SharePoint Dev environment yet!
  • Most are working off laptops with their environments
  • Most are running their environment in a Virtual Machine
    • Too many not running VM off a separate physical HDD!
    • Not enough running Server 2008 and SQL 2008
  • WSPBuilder rules over VSeWSS and STSDev by a long shot!
  • SharePoint Manager 2007, U2U Caml Builder, RedGate Reflector, MS Dispose Checker, Firebug, IE Dev Toolbar are in most toolboxes

For more information check out the full details on the SharePointDevWiki.com.

Published: 5/26/2009  3:55 AM | 0  Comments | 1  Links to this post

May 222009

SharePoint Web Testing with Visual Studio Team System 2010 Team Suite beta

So I’m sitting on the plane on the way back to Perth for the weekend and thought I’d throw together a post on the new improved Web Testing capability within Visual Studio Team System 2010 beta .

I remember first getting Visual Studio Team System 2008 Team Suite and trying the Web Testing capabilities with SharePoint. It failed horribly due to the way in which SharePoint renders it’s XHTML.

Fortunately with 2010, the approach has got a lot better, but will still require some custom coding. The immediate benefit is that it gives you the Visual Studio IDE.

The below scenario does highlight a few issues that we’ll have in the SharePoint World with using Web Tests.

Create Test Project

Selection File | New Project from Visual Studio gives you a much improved New Project window:

image

 

You’ll get a load of waffle about tests in a .txt document:

image  and a project structure:

image

New Web Test

So I’m interested in creating a new Web Test:

image  

Immediately a Windows Internet Explorer (yes it’s IE only) window pops up with a Web Test side bar:

image It’s defaulted to start recording immediately any actions I do within Internet Explorer.

For a typical scenario I wanted to record going into a SharePoint Team Site, creating a new List, adding a custom Site Column, and then creating a new List Item. I then want to replay this test on a new SharePoint Team Site to see whether it’ll replay and create the things the same.

image

As you can see from above team site, it records your steps as you go along. Clicking stop, closes Internet Explorer and returns you back to Visual Studio.

Dynamic Parameters

It’ll go through and detect dynamic parameters for you:

imageIn this scenario it detected:

image

Which it found on the newform.aspx as a hidden <input> form variable. Looking in the View Source in IE I found:

<INPUT id="__EVENTTARGET" type="hidden" name="__EVENTTARGET" value="" />

Obviously this was not going to be of any use. After this the test appears in the main panel:

image

First Hurdle: Error re-running Test

In the Test Results, it actually showed up with this:

image basically it tried to run the Test again in the same site...and failed. Clicking on the failure gives you more details:

image Not very detailed unfortunately.

Changing URLs

Looking further at the steps…to get this test to re-run in a new environment I need to change the url in the steps:

image

Parametersing Web Servers

Now I can paramaterise the web server, but that is not going to help as it is a sub site collection off the main Web Application I wish to change and this option will only do the root url:

image

Generate Code

Clicking the Generate Code button:image Creates a C# equivalent Web Test (much like WATIN recorder does):

image

The beauty of this is I can no do a find and replace, or even parameterise the site url:

image You can then open the new “Coded Test” and run this:

image

Immediately I noticed I get an exception error on a step. Searching in my Coded Test I found:

request10Body.FormPostParameters.Add("AddToAllContentTypes", this.Context["$HIDDEN1.AddToAllContentTypes"].ToString());

For some reason this isn’t in the Context of the page when it is executed in this instance…but I got green lights on all the other steps?!? I then noticed above in that step:

request10.QueryStringParameters.Add("NextUsing", "http%3A%2F%2Fwin%2D0xqbnqw37uf%3A81%2Fsites%2FDevSite%2F%5Flayouts%2FListEdit%2Ea" + 
        "spx%3FList%3D%257BB84E37C2%252D4D8D%252D43B3%252DADCA%252DD8F18789892B%257D", false, false); 

So the QueryString is being added to the page and as you can see there is an encoded url that I missed! Looking further there were quite a few encoded urls, so I had to parameterise these too!

This time when I re-run, I could see that it was staying on teh StagingSIte now but I was still getting the same error…you can actually click on each step in the Web Test and see what page was rendered. Clicking through from beginning I got this error:

image

So the listedit.aspx page was getting an error, immediately I noticed that the listedit.aspx is hanging off the layouts directory and has no context of the list…so figured the ListId is in the form post or something…

request7.QueryStringParameters.Add("List", "%7BB84E37C2%2D4D8D%2D43B3%2DADCA%2DD8F18789892B%7D", false, false);

So I need to pass the Guid of the List through…this is suddenly getting a lot bloody harder than it should be! Poking around in the view source of the page from the step before the listedit.aspx (where I clicked on the List Settings I found this:

<a href="/sites/StagingSite/_layouts/listedit.aspx?List=d1d50bba-78ce-4c36-92b5-84ef88b45a4b">Modify settings and columns</a>

So potentially I could go and Extract this url rather than it explicitly setting it.

Limitations

But really i just want to tell the Web Test to click on the Hyperlink because I know that the hyperlink does the query string correctly rather than me forcing it!

This seems to be a limitation of how the Web Tests work as it seems dependent on server side Form Posts and Query Strings for tests. Obviously this is not going to be very useful for very dynamic AJAX orientated sites where it may be dependent on where the user clicks on the screen as apposed to predetermined form post and query string parameters.

If anyone can prove me wrong about this stuff I’d really appreciate it!

Other Neat Features

Changing Parameters

You’ll also notice further down where the newform.aspx action is handled that there are various FormPostParameters added as this is how the newform.aspx operates…as it’s an ASP.NET at heart ;-)

image

I can then start doing things like replacing:

request5Body.FormPostParameters.Add("Title", "Test");

with parametised titles:

request5Body.FormPostParameters.Add("Title", newListTitle);

This can be extended further by having a data source, say for instance a SQL Database Table with rows and repeating this test for each row using the test data in the table.

Validation Rules

Also at the bottom of the Web Test are various ‘Validation Rules’ it creates by default:

imageOther Validation rules can be added to validate a web test:

imageThis could come in handy to check the redirected url is correct, or the response time of the page, or that certain text is on the page etc.

Published: 5/22/2009  8:14 PM | 0  Comments | 0  Links to this post

May 222009

SharePoint User Profile Updates and AD Synchronisation

I have been focusing my efforts recently on client projects around SharePoint User Profiles which are part of Microsoft Office SharePoint Server (MOSS) 2007 Editions (Standard and Enterprise). The User Profiles are one of numerous components making up Shared Service Providers (SSP’s) which also include Excel Services, InfoPath Forms Services, Business Data Catalogue and Enterprise Search.

User Profiles

The role of User Profiles is to store information about Users. The information out of the box is crawled from the Active Directory (AD) source from the Domain Controller (DC) that SharePoint is connected to. Each User Profile is built up of a number of out of the box User Profile Properties. Each property can be mapped to a particular piece of data from the import content source. So out of the box there are various properties that are imported from Active Directory.

Company Phonebooks

In most Organisations that I have installed Active Directory and most others I have heard about are not in “ship shape”. This may have gone unnoticed because typically Active Directory is only exposed in the Enterprise in the Outlook Global Address Lookup (GAL), which is usually not promoted if the data is incorrect. Often you walk into an Organisation to deploy SharePoint and they have a ‘Company Phonebook’ which has been custom written by the Development Team over the lifetime of the IT Department.

Enter People Search

Enter SharePoint, and the wonderful User Profiles that are then populated with all the inaccurate or unpopulated data from AD! It doesn’t stop there…because the Organisation’s CEO and CIO have been mightily impressed by the Microsoft Pre-Sales team who demoed “People Search” and want this to be the “first cab of the rank” (god I hate those over-used terms!).

People Search exposes all this data from AD directly in SharePoint in the results page and in even more detail on the individual User Profile Pages.

Clean Up!

So as soon as the inaccurate data is exposed, or sometimes even before go-live as it becomes a show-stopper, the data has to be cleaned up. Immediately debate rises on where the accurate information is stored, if it is at all! Typically it’s within the HR system. But it also usually also brings up issues that the data is often stored in multiple locations and owned by different parts of the business.So a mad panic occurs to export this data and import it into AD!

Synchronisation

Once the data is in AD, or as it is discussed if there are cluey “Enterprise Architects” around, the issue of how this is going to be kept up to date is raised. Enter Identity Life Cycle Management (ILM) to the table! Yes yet another product Microsoft can sell you on top of Windows Server 2008, Exchange Server, SQL Server 2008, SharePoint Server 2007, ISA Server, ForeFront, …to get your company up running.
Realistically this doesn’t get made a priority project and an “interim” solution is devised by the development team.

“What do you mean it won’t update AD?”

So SharePoint has the great ability to let Users update their own User Profile Property data if the Organisation choses to allow it on a property by property basis. This is great, but the big clanger is that when you update this…it only updates the User Profile and does not go and update AD! This means that your overnight AD crawl will overwrite User changes made during the day! To me, this is one of the single most annoying parts of the Platform.

image

Solution 1: The SharePoint Timer Job

So there are various ways that this can be resolved. You can have a SharePoint Timer Job that before the SSP User Profile crawl occurs on AD, it spins through all of the User Profile Properties of each User Profile and updates AD if they are mapped. It could also potentially update other repositories that are crawled via the BDC too.

image

“What do you mean my PA can’t update my details while I’m playing golf?”

This is a great solution, but most Organisations have one other big clanger of a requirement. They wish to delegate the updating of User Profiles to secretaries and personal assistants (must get myself one of these).

Solution2 : The Custom Update Form

In this solution, a custom aspx page is deployed to the SharePoint Farm. This has a series of user controls on it that bind directly to the User Profile Properties. The page can be accessed not only directly, pulling the authentication details of the log in user to get the context of User Profile for the form….but also using a query string to pass through the Guid of the User Profile to grab context also.

In addition to this, if there is a query string present, there is a check to see that the authenticated user is part of a specific AD group to allow them to update other User Profiles. You could get very clever and check the AD property to see that the logged in User is the PA/Secretary of the User Profile being edited.

On submitting the changes for this form, the User Profile Web Service is called to update the details. One caveat here is that the Web Service is instantiated with credentials of someone with high enough credentials to update anyone's User Profile, because out of the box you can only update your own User Profile. Secondly, the AD entry is updated for those properties that are mapped to User Profile Properties.

image

“What do you mean you can’t get rid of all those Director entries?”

How many times have you done a People Search in a SharePoint Farm and seen on the left hand side…narrow your search: “Director”, “DIRECTOR”, “King Director”? I’ve seen lots! SharePoint does not allow for data cleansing via validation or formatting.

Data Entry Validation and Formatting

One great thing about having a custom form is that you can get some extra sugar coating on your solution to enforce validation and formatting - not only in terms of manual data entry of fields but also giving the ability to have lookup lists for properties.

 

image

“The CIO wants his picture on his profile!”

So the demos look slick with all the fancy pants profile pictures of the CEO’s and CIO’s staring 36.5 degrees to the left with their hand on their chin. But User Profile Pictures aren’t that easy either…you can’t update these pictures in the out of the box Edit Profile form! The Picture Url used is a User Profile Property instead.
Solution

The neat solution I came up with was to have a Picture Library at the root Site Collection for the SharePoint Web Application. On adding/updating a picture in the library an Event Receiver is fired that grabs the filename of the glorious photo that maps directly to the AD user name of the User. This then calls the User Profile Web Service to update the Picture URL property to the location of the new uploaded file. This can then be delegated off to Security Personnel who take the pictures for the Security Swipe cards. Neat huh?

“I want mobile numbers on the results page!”

One of the most common requirements I get is to add various User Profile Properties to the People Search Results page, because…lets face it…the ones they show require you to click through the User Profile Page…and lets face it..who wants the extra click? This is another area that annoys me! How hard would it have been for the team to put the XSL that transform the results in the Site Definition to be deployed to the Style Library like everything else rather than hard coding it into the CDATA of the web part?!? Dog food anyone?

Solution

The solution here is a simple one and available on the SharePointDevWiki.com as a PowerShell script. It simply changes the Web Part to work how it should by setting the XSL location for the transform to a Style Sheet of your naming in the Style Sheets Library…which you can then deploy using a Solution Package. Sweet huh?
To be honest, you could go one further and have the Feature Receiver tweak the web part, but it’d need some smarts to know where the peopleresults.aspx instance is…although it could get it from the default Search Centre of the Site Collection…I decided to make this manual ;-)

“I changed my info and it’s not updating!”

Another great example is that if you look at the top diagram, you’ll notice theirs a search index in between the People Search Results page and the User Profiles. This highlights the issue, that if the User Profile is updated, it will not be shown on the People Search Results UNTIL the next crawl of the User Profiles (1).

In a larger example, you may have multiple SSPs which are all configured to crawl the same AD data…so the Form can also update more than one SSP. Otherwise, you’d be waiting for that User Profile to crawl AD (1), then the Index Server to crawl the User Profile (2) for the changes to show!

image

The Solution is here

So why am I telling you all this? Well I’ve written this solution already. Albeit each implementation requires configuring for various options and specific scenarios required by the Organisation. I just figured I’d share my findings about People Search with everybody :-)

The Future is ILM

So, based on these issues I was kind of hoping that SharePoint 2010 would address this. My gut feel is that Microsoft simply won’t…”why?” you ask…well because of the ILM product. They want Organisations to spend more pennies!

Notes

There are some great scripts on the SharePointDevWiki.com that help you import data from CSV’s into User Profile Properties.

Published: 5/22/2009  8:07 PM | 5  Comments | 0  Links to this post

May 222009

FACT: You can’t be a SharePoint Developer unless…

I’ve just been on a training course and was shocked to find out that some of the Developers hadn’t heard of various SharePoint Resources online, including the SharePointDevWiki.com . I know, I know! Where have they been since December last year! LOL

Seriously, it wasn’t so much the wiki, as I know that it is only promoted in various inner circles and not as mainstream as MSDN as a resource. I will say though, that I really appreciate the continued support from the community in promoting and contributing to the wiki and am extremely pleased with its progress in the 6 months it has been online!

“I didn’t know about that”

What did surprise me is that some seemed to give blank looks when the Patterns & Practices material available on CodePlex was mentioned and I daren’t even ask about whether they knew the issues with disposing of objects.

“Who’s that?”

How has this come about…well they aren’t the first SharePoint Developers I’m come across like this. Often at the local Perth SharePoint User Group, you’ll mention things that you just assume people know because they are as stir-crazy as yourself and read the main stream SharePoint Blogs. This is an incorrect assumption. Sometimes I’ll even mention names like Andrew Connell, Joel Oleson, Spencer Harbar, Bob Fox, Todd Klindt, Rob Bogue, Todd Baginski, etc. and they’ll give me that look as if they’ve never heard the names. For me, without keeping up with these guys you’ll just simply miss so many things to make your life as a SharePoint Developer infinitely easier!

“Not everyones like you”

I understand for some SharePoint Development is simply a day job, and my girlfriend reminds me on lots of occasions that “not everyone is like you…it’s just a job to them” and “I bet they don’t fall to sleep with a SharePoint text book on their nose”. Developers simply don’t get time to sit and read through all the resources that are updated regularly online.

I am extremely passionate about SharePoint, a lot of my ASP.NET Readify colleagues ask me “why?” and my answer is: “SharePoint is a challenge, no one will ever conquer it! I love the daily challenges and the excitement of overcoming it and learning new things.”.

I take a lot of pride in my work and i just don’t think I’d be half the SharePoint Developer I would be if I didn’t read the blogs I do, listen to the podcasts I do, watch the webcasts I do and debate with the other guys at User Groups that I do.

SharePoint Developers – It’s not just about buying a book!

One thing I have realised is that often teams just buy the books off the shelf. Now these are great, but by the time they are published they are almost 6 months behind. 6 months in SharePoint World is a long bloody time! SPDisposeChecker wasn’t even released to the public at that stage, VSeWSS 1.3 CTP wasn’t even released, SPSource wasn’t released (plug)…and that’s just the tools that wouldn’t have been mentioned in books.

So for those Developers out there not leveraging the resources out there…please try and find time to at least be aware of what a DataFormWebPart (Data View Web Part) is and stop cutting your own ones (borrowed from @imorrish), that SPDisposeChecker wil save your arse getting kicked when stuff goes to Production and sucks up all your RAM, that SPSource can save you hours of code cutting (plug) and that WSPBuilder can save you lifetimes!

I have discussed this quite frequently in terms of the amount of content out there and I believe whole-heartedly that the SharePointDevWIki.com can help set a baseline of resources and knowledge that SharePoint Developers should have as a minimum. I also believe it can give them a lot more too and that they can give a lot more back!
I have started a weekly update (I hope you have all noticed) promoting SharePoint Development news worth reading. I am hoping this will allow people to at the minimum check this out to keep up-to-date.

Development Managers – Raise the bar!

For Development Managers out there, I don’t see any harm in asking these kind of questions to ensure that they are at the correct level for your team. I’m sick of seeing other integrators code that won’t pass SPDisposeChecker, is deploying things manually to the 12Hive without wsp’s and overwriting out of the box 12 Hive files!

Please encourage Developers to attend User Groups and to also present at them. The SharePoint community is large and don’t think that what you are doing has been done a thousand times before…because it probably hasn’t!

Conclusion

So to answer the post title: “unless…they atleast digest the ‘Where to start with SharePoint Development’” which does include the Microsoft resources, but some other key areas that should be regularly checked.

Published: 5/22/2009  8:03 PM | 8  Comments | 0  Links to this post

May 222009

Microsoft Infrastructure Administrators need to face the facts…SharePoint is here to stay!

I have been on the Microsoft Partner Services training for Collaboration and Portal technology for two days presented by Ian Morrish from MCS NZ. @IMorrish is well known in the community for http://www.wssdemo.com/ .

One thing that just niggled at me over the two days was the massive pressure that is on SharePoint Architects’ to take responsibility not only for SharePoint as a Platform but also for all the underlying technology stack. I’ve discussed this before, but it just rang loud and clear after hearing Ian speak. Ian is a walking SharePointPedia for all things Infrastructure as well as an amazing depth of knowledge in the SharePoint Platform across the board.

Before I start, this is not a blanket claim on all Administrators as I know there are some out there who are doing this already ;-)

The current certification is a joke as it breaks it into “admins” and “developers”. This really needs to be broken down more clearly into specific areas of the platform. To follow up on the last post having some more time to think about it, there are a lot of current “admins” out there in organisations who just simply don’t take on board SharePoint.


This broad brush of “admins” in my opinion includes SQL DBA’s, Backup specialists, Operations, Virtualisation specialists, ISA specialists, Active Directory specialists, …
Essentially, if you are an administrator in the Microsoft Technology stack and aren’t across SharePoint administration you are doing yourself no favours or the Architects!
It shouldn’t be up to a SharePoint Architect to give explicit instructions to a DBA on how to setup up SQL for SharePoint, or to have to point them to a White Paper to prove why you need AD service accounts for your SharePoint farm, or to tell AD guys how to configure Kerberos, or to tell Backup specialists what is required. Typically SharePoint Architects will only go away to TechNet and read the white papers and communicate this to the particular people in those roles…so why can’t these roles take the intuition to do this themselves? It is way to much knowledge for one person to take on!

I think it is time now to take SharePoint seriously within your role as an Microsoft Administrator. Part of this push needs to come by a certification for admins to take that focuses on these areas. They don’t need to know SharePoint inside out, but it’d be great if they understood how it affects the area they are responsible for e.g. SQL, AD, ISA, Hyper-V etc.

Where does the community go from here? Commments below please…

Published: 5/22/2009  3:10 AM | 6  Comments | 0  Links to this post

May 182009

Reviewing open source SharePoint products: First look at CompleteSharePoint.NET v2.0

CompleteSharePoint.NET v2.0 was released today by Tommy Segoro, another local Perth SharePoint Developer. This open source project provides functionality to Windows SharePoint Server (WSS) 3.0 similar to the Publishing Feature within Microsoft Office SharePoint Server (MOSS) 2007.

Right now I’m sitting on a plane on the way to Sydney and figured this was a great time to deploy the source to a Windows Server 2008 VM and give it a run for its money. Especially as I’m currently looking at building a Web Content Management System in WSS for my fathers Spanish Magazine (lots of posts/webcasts to come on WSS3.0 + WCM).concept1---Home

First Impressions

Licensing

The CompleteSharePoint.NET web site does not mention anything about licensing and does not link to the CodePlex.com project which I found when v1.0 was released. I have already emailed Tommy to ask about this…the v2.0 source is currently not in CodePlex either, but available to download as a zip from the web site.

CodePlex Developers

So I’d really like to help grow this solution, but based on the CodePlex project not being promoted I’m not sure what the go is here. Especially as v2.0 isn’t in there.

v1.0 stability

I actually downloaded v1.0 and tried to get it running in a VM but there were no installation instructions and the source was not using one of the commonly used productivity tools (VSeWSS etc). This made it hard to see how this was all hanging together. I managed to get the wsps deploying, but when creating a page I got a blank screen. Anyway, after seeing the installation instructions for this one…there are two mods to the web.config that would’ve fixed it.

Feature Set

The web site does not really say what you actually get by installing this product other than a page editing toolbar. It really needs a full run down of what you get and how it is hanging together architecturally.

The Installation Process

So, I decided to go for broke and just install the wsp’s into the farm. The installation instructions were a bit odd:

“Install and deploy CompleteSharepoint.NET.Web.Site.wsp (only if you want to run CompleteSharepoint.NET website on your machine).”

Why else would you deploy the wsp unless you wanted it running? I think what he means is only deploy it to the Web Applications where you want to use this functionality. The other WSP is mandatory on the farm and shared by each Web Application instance that uses it.

No Installation Script

Anyway, noticed there was no installation script so quickly threw together the STSADM commands to add and deploy it:

"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o addsolution -filename "CompleteSharepoint.NET.wsp"
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o execadmsvcjobs
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o deploysolution -name "CompleteSharepoint.NET.wsp" -immediate -url "
http://win-0XQBNQW37UF:8116" -allowGacDeployment -allowCasPolicies -force
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o execadmsvcjobs
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o addsolution -filename "CompleteSharepoint.NET.Web.Site.wsp"
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o execadmsvcjobs
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o deploysolution -name "CompleteSharepoint.NET.Web.Site.wsp" -immediate -url "
http://win-0XQBNQW37UF:8116" -allowGacDeployment -allowCasPolicies -force
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe" -o execadmsvcjobs
pause

Some assumptions were made that there was no order in which the wsp’s had to be deployed. Obviously an installation script would have made this self explanatory.

Web Config Modifications

v2.0 has a support page where it explains the modifications required to the web.config. Again, this got me worried as these modifications can be done as part of the deployment process by leveraging the SPWebConfigModification class in the API.

Site Definition

It wasn’t very clear whether you had to use your own Site Definition or a specific CompleteSharePoint.NET one:

“You will need your custom site definition.”

In v1.0 you had to use the one provided and it appears you do in v2.0 also.

ERROR

So when I actually created the site definition I got this error:

“The given key was not present in the dictionary.”

Looking in the ULS logs gave me:

0x07DC    Windows SharePoint Services       General                           88jb    Medium      Feature Activation: Activating Feature 'CompleteSharepointNETContentTypeBinding' (ID: '49870641-bd3c-4042-8703-0aff88ad4b71') at URL http://win-0xqbnqw37uf:8116.    
05/18/2009 18:27:16.94     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72bf    Medium      SPContentTypeBindingElement.ElementActivated(). Applying ContentType '0x0101006FEE00D312DD41D58E8D3D104FC0595F' to list 'Pages' on web '
http://win-0xqbnqw37uf:8116'
05/18/2009 18:27:17.07     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       Feature Infrastructure            889x    High        The element of type 'ContentTypeBinding' for feature 'CompleteSharepointNETContentTypeBinding' (id: 49870641-bd3c-4042-8703-0aff88ad4b71) threw an exception during activation: The given key was not present in the dictionary.    
05/18/2009 18:27:17.09     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72by    High        Feature Activation: Threw an exception, attempting to roll back.  Feature 'CompleteSharepointNETContentTypeBinding' (ID: '49870641-bd3c-4042-8703-0aff88ad4b71').  Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.     at System.ThrowHelper.ThrowKeyNotFoundException()     at System.Collections.Generic.Dictionary`2.get_Item(TKey key)     at Microsoft.SharePoint.SPFieldCollection.CreateSPField(Int32 index)     at Microsoft.SharePoint.SPFieldCollection.EnsureSPField(Int32 index)     at Microsoft.SharePoint.SPFieldCollection.get_Item(Int32 iIndex)     at Microsoft.SharePoint.SPFieldCollection.ItemAtIndex(Int32 iIndex)     at Microsoft.SharePoint.SPBaseCollection.SPEnumerator.System.Collections.IEnumerator.get_Current()     at Microsoft.S...    
05/18/2009 18:27:17.09*    w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72by    High        ...harePoint.SPContentType.get_Fields()     at Microsoft.SharePoint.SPContentType.DeriveContentType(SPContentTypeCollection cts, SPContentType& ctNew)     at Microsoft.SharePoint.SPContentTypeCollection.DeriveContentType(SPContentType ct, SPContentType& ctNew)     at Microsoft.SharePoint.SPContentTypeCollection.AddContentTypeToList(SPContentType contentType)     at Microsoft.SharePoint.SPContentTypeCollection.AddContentType(SPContentType contentType, Boolean checkName, Boolean updateResourceFileProperty)     at Microsoft.SharePoint.SPContentTypeCollection.Add(SPContentType contentType)     at Microsoft.SharePoint.SPContentTypeBindingElement.EnsureContentTypeExists(SPWeb web)     at Microsoft.SharePoint.SPContentTypeBindingElement.ElementActivated(SPFeaturePropertyCollection props, SPSqlComman...    
05/18/2009 18:27:17.09*    w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72by    High        ...d sqlcmdAppendOnly, SPWebApplication webApp, SPSite site, SPWeb web, Boolean fForce)     at Microsoft.SharePoint.Administration.SPElementDefinitionCollection.ProvisionContentTypeAndEventReceiverBindings(SPFeaturePropertyCollection props, SPSite site, SPWeb web, Boolean fForce)     at Microsoft.SharePoint.Administration.SPElementDefinitionCollection.ProvisionElements(SPFeaturePropertyCollection props, SPWebApplication webapp, SPSite site, SPWeb web, Boolean fForce)     at Microsoft.SharePoint.SPFeature.ProvisionElements(SPFeaturePropertyCollection props, SPWebApplication webapp, SPSite site, SPWeb web, Boolean fForce)     at Microsoft.SharePoint.SPFeature.Activate(SPSite siteParent, SPWeb webParent, SPFeaturePropertyCollection props, Boolean fForce)    
05/18/2009 18:27:17.11     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           8l36    High        Failed to activate site-scoped features for template 'COMPLETESHAREPOINT20#0' in site '
http://win-0xqbnqw37uf:8116'.    
05/18/2009 18:27:17.11     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72h9    High        Failed to apply template "COMPLETESHAREPOINT20#0" to web at URL "
http://win-0xqbnqw37uf:8116".    
05/18/2009 18:27:17.11     w3wp.exe (0x0BC8)                           0x07DC    Windows SharePoint Services       General                           72k2    High        Failed to apply template "COMPLETESHAREPOINT20#0" to web at URL "
http://win-0xqbnqw37uf:8116", error The given key was not present in the dictionary. 0x8107058a    
05/18/2009 18:27:23.52     OWSTIMER.EXE (0x0900)
                      

At this stage I was tempted to throw the headphones on and watch Mr Bean for the millionth time, but persistence and Heineken for fuel kept me going!

So I followed the flow of the onet.xml to make sure the Content Type being binded ‘Article Page’ was being provisioned before in the process which is was…and no errors occured. SharePoint Manager 2007 also helped me see it within the Site Collection also.

Further poking in the logs and I found a bit earlier on in the provisioning process:

edium      Feature Activation: Activating Feature 'CompleteSharepointNETRootLists' (ID: 'dbac423b-f07e-44ba-b230-f718c22ce4d1') at URL http://win-0xqbnqw37uf:8116.    
05/18/2009 18:47:35.67     w3wp.exe (0x0BC8)                           0x0FA0    Windows SharePoint Services       Fields                            88yf    Medium      Creating list "Application Settings" in web "
http://win-0xqbnqw37uf:8116" at URL "Lists/ApplicationSettings", (setuppath: "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Features\CompleteSharepointNETRootLists\KeyValueList")    
05/18/2009 18:47:35.70     w3wp.exe (0x0BC8)                           0x0FA0                                      1388                              8e2x    High        Failed to find the content type schema for ct-1033-0x0162d9afca87664c8e83cf6a63ff35 while caching feature data.    
05/18/2009 18:47:35.72     w3wp.exe (0x0BC8)                           0x0FA0                                      1388                              8e2x    High        Failed to find the content type schema for ct-1033-0x0162d9afca87664c8e83cf6a63ff while caching feature data.    
05/18/2009 18:47:35.74     w3wp.exe (0x0BC8)                           0x0FA0                                      1388                              8e2x    High        Failed to find the content type schema for ct-1033-0x0162d9afca87664c8e83cf6a63 while caching feature data.

So it wasn’t provisioning the ApplicationSettings list properly and this had a key field, which I’m assuming the error came from.

Basically it was trying to find the content type schema ‘ct-1033-0x0162d9afca87664c8e83cf6a63ff’ or one of it’s parents. A reference to this id couldn’t be found in the source which was odd, I hadn’t seen the ‘ct-1033-‘ prefix, when I removed this I found the reference. Having a look at the KeyValueList ListTemplate I noticed it had an embedded ContentType called the ‘NNTT Key Value List’ with id ‘0x0162d9afca87664c8e83cf6a63ff’…good to see reuse going on here from previous projects (NNTT) ;-)
It didn’t look like it actually needed that ContentType, but the ListTemplate looked too empty for my liking. I’ve spent the last few months inside ListTemplates writing SPSource tool…so I know a dodgy ListTemplate when I see one!

Anyways, I commented out the Content Type and the Site Provisioning worked! Yipeeee….oh shit, I’m on a plane, now everyone is looking at me!?!

image

So now I get the screen shot above….great, ok so it hasn’t got the corny picture of the two geeky looking people pointing on the desk (you know which one I mean!)…but the error is pretty obscure!

“You have no default page specified. To specify a default page please create a new page.”

OK, so I click on Site Actions and see:

image

Cool, so if I want to create a new page, I’m guessing I go ‘Create Publishing Page’. For uniformity sake, I would recommend that naming be the same e.g. use ‘Publishing Page’ in error message. I’d also recommend moving all the Site Actions that are custom for CompleteSharePoint.NET into it’s own sub group, just like the MOSS one does…except you don’t pay $000’s for it ;-)

Creating my first Publishing Page

So I click ‘Create Publishing Page’ and get this.

image

image

First impressions…the Date Picker is not what SharePoint UI uses…people are used to custom fields with a nicer date picker than that…changing months causes a full post back on the page…AJAX anyone?!?

So filling in the form:

Content Type:

Another bug, the content types didn’t appear in the drop down

image

Page layout

A few options here:

image

Then there are a heap of check boxes with no explanation of what they do…could really do with some help text here! So I leave the rest as default and click submit. Drum roll…

image

So, first impressions…for an open source project…I wasn’t that impressed with Tommy’s company logo being on the page! Based on these ‘Our partner links’…I can see that some of my questions around licensing and joining the CodePlex team may already be answered ;-)

I chopped the url to just the server and port and it still gave me that error…creating a new page with ‘Welcome Page’ checked made that the default page for that site.

When I click Site Actions now I’m presented with the following:

image

Edit Page

So this is where the proof in the pudding really comes in…nothing much has been apparently different from an end user perspective until now, unfortunately no screen on the planet will display the screenshot in one hit…the “page toolbar” looks like this:

image

Compared with the MOSS one…I can see trying to pitch this at anyone is going to get a …OK OK we’ll pay for MOSS WCM!

Further down the page there is:

image

but interestingly at the top…the content is still there and not including in rich text editor?!?

image

I added some content into the rich text editor and click the Publish button and now get:

image

So I can click Hide button to hide the toolbar…but the hide/show still exists…need to test anonymous users don’t see that at later stage.

Also noticed this

image

So it’s doing site hits too which is nice, again, a feature list on the product site would have been useful to mention this. At this I decided to stop checking out features for this post (more to come though).

The Source

Build

So the first thing I did was try and build the solutions. The CompleteSharePoint.NET solution built fine, but the CompleteSharePoint.NET.Site.Web was dependent on the other solution and the references were going to the GAC. I’m also not entirely sure of the logical split between the two solutions as the second is dependent on the first anyway.
It also relied on FreeTextBox dll, fortunately I didn’t do a clean before I built (as I wouldn’t have been able to download it at 30,000 ft), as the dll was sitting in the bin directory – even though there is a DLLs folder within each project.

Proprietory Solution Package generation

Again, I noticed the CreateCabDDF.vbs files and CreateManifest.vbs files like v1.0. The use of proprietary scripts to generate a wsp, when there are tools commonly used such as VSeWSS, WSPBuilder and STSDev out there loomed on my mind a bit…but I got over it…and the VBScript (yuk)!

The scripts were hooked up in the Visual Studio project, much like STSDev does with a targets file, but it was part of the actual csproj msbuild file instead. Changing the build target to CreateSolution and building entire solution kicked off the process to create the manifest and then the wsp file itself.

Lessons Learnt

Continuous Integration Script

I would recommend having a script to create a web app, site collection with the site defintion and also a uninstall one too. It could also include firing off the process to build the solution each time and also build the wsp etc.

This way you have a Continuous Integration process. It makes it extremely easy with this approach to pull the source into a fresh VM and fire off the script and see whether it works or not. It also gets new developers to a project up and running quickly!

In the long run, it also saves the developer who’s making changes from doing manual steps and he can tweak the site definitions, run the script and see his work…either working…or breaking ;-)

Conclusions

As with any Solution you deploy in your farm, it is always good to do some homework on its foundations…what it is actually doing…rather than just deploying the wsp to the farm.

Most Organisations have a policy to bring the source code in-house and control it internally once deployed. Typically a senior developer/architect will do a review of the Solution before allowing it in production. Again, with the troubleshooting I was doing above, it really needs someone with SharePoint Development experience to do this review.

This is fine for open source products…the question that I have got looming now is…what about all those ISV’s out there developing their Solutions. They will not release their source, so how do you know it’s any better. More and more little ISVs are appearing developing web parts and Site Defintions…be extremely careful with this! I would recommend looking at SharePointReviews.com to get an indication of whether the product is any good or not from that stand point.

As for CompleteSharePoint.net v2.0, I’d wait for v3.0 before taking this seriously unless you have a lot of time on your hands to get to grip with what the solution is doing and fixing it up. This is by no means dissing Tommy’s efforts,some serious time has been put into getting this where it is at. I would just suggest that it needs to be reviewed before releasing it as v2.0 as I still think this is an alpha release.

In terms of the open source projects that I have contributed to…I am now more aware of putting the hat on where “I haven’t seen this before”. I have provided various web casts for SPSource to show how it works, but even then I have realised that people like to see instructions in a Word/PDF Document which I wrote last week and have currently got being reviewed.

Published: 5/18/2009  6:21 AM | 4  Comments | 8  Links to this post

May 142009

SharePoint Development MVP Panel Discussion Review

image

So if you watch one web cast this year…it has to be the MVP Panel Discussion SharePoint Development recorded at TechEd in LA (#TeLA09). It included Rob Bogue (@RobBogue), Matthew McDermott (@MatthewMcD), Todd Bleeker (@ToddBleeker), Eric Shupps, Andrew Connell (@AndrewConnell), Todd Baginksi (@ToddBaginski), Maurice Prather and Scott Hillier. Some crazy pictures of the crew can be found on Rob’s blog ;-)

Productivity Tools

It was interesting hearing that a lot of them use different tools: VSeWSS (Rob Bogue), Eric Schupps (WSPBuilder), Andrew Connell (STSDev) and a lot admitted writing them from scratch so that it encourages learning the principles.

For more on comparisons on these productivity tools see wiki page.

Other tools

They also mentioned AC’s content type tool, SharePoint Manager 2007, SharePoint Designer (SPD). Interesting to see AC pitching SPD for prototyping stuff…bit disappointed they didn’t mention SPSource, as a way to make these prototypes reality. Oh well…maybe next year!

For more tools check out the Other SharePoint Dev Tools on @SPDevWiki.

Upgrading Artefacts and Updating Servers

Rob Bogue also talks briefly near the end on upgrading artefacts….hoping his presentation is put online to watch! Rob has been very prominent with the P&P Contoso stuff too.
Andrew also discussed about Site Definitions on upgrades and ghosted items.

Heroes

These guys are my heroes and cannot stress enough how much all SharePoint Devs new and old should watch this!

ASP.NET Developers and SharePoint

Based on discussions and post yesterday I have posted a new page on the wiki to start pitching pros and cons of SharePoint as a platform to be leveraged by ASP.NET developers.

Published: 5/14/2009  1:26 AM | 1  Comment | 0  Links to this post

May 132009

“#IfIHadAYearAtMicrosoft I would…”, the SharePoint Product team and SharePoint 2010 migration path…

So last night before calling it a night I decided to post a tweet:

#IfIHadAYearAtMicrosoft...I would ensure #SharePoint UI was 100% W3C compliant & be able to develop remotely off the server

and got a reply within an hour from @LougeFlyZ aka Chris Johnson from the SharePoint Product team headed up by Arpan Shah (@arpanshah):

@jthake one year?!? You can't do these things outside of a release cycle. They effect millions of users and create back compat issues.

The reason I stated those two issues around W3C compliance and Remote Development is that these are two key issues that stop Development Teams using SharePoint and sticking with ASP.NET and writing it themselves. I am currently preparing a presentation for the Perth .NET User Group to discuss the pros and cons in more detail…I expect to have tomatoes thrown at me….so any ammo is greatly appreciated!

This got me thinking this morning on the way to work…

Immense pressure the SharePoint team is under

The boys in that team are under extreme pressure with Microsoft pinning its hopes on SharePoint for various Server products: Office Server, Commerce Server 2009, Reporting Services (integrated option), Performance Point (now been swallowed into SharePoint 2010) and TFS (now optional in TFS 2010). I’m sure the pressure alone internally from all the products they have to support is immense, let only from the MVP community providing early feedback and from the public community on releases!

Release cycles

Just yesterday the team posted more information on the April Cumulative Update which has caused some confusion so soon after SP2 was released (within a week). The diagram below indicates the CU’s to come before 2010 will be released. There is also the first public beta coming in July 2009.

image

Chris did make a good point in his tweet about making large changes like I suggested “outside of the release cycle”. I, along with a lot of the community who spend their working (and private lives) consumed by SharePoint, look forward to seeing what made it through to 2010.

Feature lockdown

Another thing to bear in mind is that due to these release cycles and the time that the MVPs and public see a release to give feedback, is often after the feature list has been locked down. SharePoint 2007 beta was released in November 2006 to the public and went RTM in early 2007.
This obviously did not give enough time for the public to sway much of the final RTM feature list and most likely Microsoft were bug swatting and ironing out the beta for release in feature lock down. With this in mind, come July this year…treat the Beta as a way of your organisation having some practice runs at migrating 2007 into it and playing with the new features to pitch ideas to your organisation. Don’t expect too much to change between the two.

Don’t believe it, until you see it

I think we can expect a similar time frame for the next major release in 2012 with service packs probably once a year. One thing to bear in mind with this, is when you are making architectural decisions and assume that you can just wait for the features that are promised by Microsoft or hinted at or on the rumour mill…that you shouldn’t always rely on them. The last thing you want to do is promise the CEO that it’ll be in the next major version and when it’s released, it’s not, and then you’re on the back foot having to build something quickly!

Effects millions of users

Chris other point about backward compatibility is also something to bare in mind. SharePoint has a HUGE user base now and as I’ve mentioned above…supports a large foot print of products on top of it. With the release of 2010, the team will have to ensure that they are backward compatible with 2007 implementations.

From a development perspective this means scenarios like:

Master Pages/Page Layouts

If you are not in the “cool” SharePoint blue for your organisation Intranet, you have most likely even developed your own theme and applied it…or copied the default.master and modified it. Between SP1 and SP2 there were NO changes to master pages. I expect changes to default.master this time round, this will mean your copied instance will not have the new controls in it…which may cause a breaking change to your environment. I’m guessing no migration path is going to simply just add those missing controls to your master pages so you’ll have to start comparing differences in files.

Style Sheets

Same deal as master pages, there’s bound to be new styles with the recently announced support for Internet Explorer 7.0 and more advanced support for FireFox 3.0. So if you’ve changed things like ItemStyle.xsl when using Content by Query Web Part…which I’ve seen it lots of instances…you’ll have some fun.

List Templates

One thing to bear in mind with this also, with the announcement of AJAX inpage list item editing, is List Templates with their defined <View> elements. I'm intrigue to see how they are going to modify not only existing List Instances to support this new AJAX view and also List Templates within the 12 Hive.

Web Services/API

If the organisation has any custom managed code that calls off to the web services in 2007 or uses the API for event receivers and feature receivers, the product team has obviously had to ensure that there are no breaking changes here. Again, I strongly encourage organisations to retest all of their managed code against 2010. I would also suggest if you have written some “funky” workarounds for bugs in 2007, they may have been fixed in Service Packs or Cumulative Updates…you’re “funky” workarounds might not work anymore and therefore you should be testing heavily in these scenarios too.

Source Control

How will this effect organisations who have these Master Pages, Page Layouts, Style Sheets, List Templates, etc. deployed by Solution Packages (as recommended) and stored in source control?

Their hands are tied

Following on from the backward compatibility restrictions…this will obviously mean that the teams hands are tied on certain feature requests. Most likely the two I’ve mentioned in my tweet.

The requests for a stronger replacement for SQL tables with scalability for SharePoint Lists has been met which was obviously a key business driven requirement.

Remote Development

It looks like for this release married with the release of Visual Studio 2010, to not expect any changes on the current approach to development where you require SharePoint server natively in your development environment.

COM Component

It would have been great also to drop the old COM component that the SharePoint .NET API wraps around for us developers…but I haven’t heard anything about this as yet. This will mean that the SPDisposeChecker tool will be at the top of our toolbox at all times!

Should have cut their ties with 2003

The whole “should, coulda, woulda” hindsight is always a kick in the balls…but I thought I’d raise it here regardless. The migration path from 2003 to 2007 wasn’t a pretty one…especially in two major scenarios: heavily customised MCMS to SharePoint 2007 and SharePoint 2003 to SharePoint 2007.

I guess what I’m trying to indicate here is that from a marketing and strategy point of view Microsoft wanted to make it as easy as possible for existing MCMS and SharePoint 2003 organisations to move to 2007. In doing so, they had their hands tied behind their back on a variety of things.

For us developers, one of the most obvious examples of this is the SharePoint API with SPSite meaning Site Collection and SPWeb meaning Site. Sounds trivial…but you explain this to .NET developers who have been used to .NET moving through framework releases without this confusion. It makes SharePoint a harder sell alright!

Sometimes I wonder what would have happened if they severed their ties with 2003 and started the product from ground up without worrying about a migration path from 2003…

In Summary

The team have done an amazing job and I’m looking forward to SharePoint 2010. I would absolutely love and be honoured to work inside the team on the product development at some stage, so don’t take this post as a rant on the team or Microsoft by any means!

I just guess as Developers who leverage the Platform we just need to be aware of the length of these release cycles and be conscious of the migration path between major releases..

Published: 5/13/2009  6:10 PM | 2  Comments | 0  Links to this post

May 132009

Perth SharePoint UG Web Cast on approaches to deploying artefacts

I finally got round to uploading the User Group web cast where i talk about the approaches of deploying artefacts into a SharePoint environment. I discuss multiple approaches and also show the SPSource product that i have been on with @RichFinn.

Check it out here:

Download WMV

Watch in Silverlight Player

Published: 5/13/2009  7:29 AM | 0  Comments | 0  Links to this post

May 092009

Help the SharePoint Community out of the Twitter/Social bookmarking blur!

After reading @JoelOleson’s latest post on how the Community has evolved I thought I’d raise some ideas to save all of our time ;-) As we’re all very busy people!

The main reasons I use Twitter is:

  • to discover new people in the community talking about twitter…and discover their blog…and subscribe to their RSS feed
  • to try and answer peoples’ questions around SharePoint
  • to ask questions to the SharePoint community
  • to hear the SharePoint news before it even hits blog posts
  • to promote my own blog posts, @SPDevWiki, @SPAdmWiki and SPSource open source projects

Why is the issue?

I think Twitter and the SharePoint community has a few issues at the moment:

Too much noise with everyone RT’ing

It’s the same as the “SP2 is released” and “SPD is free” that you see in Blog articles and it’s only in early stages. But imagine if you follow 10 people and they all RT, you go to check Twitter every day and you have 50 tweets for 5 posts. Imagine in a year or so when the whole community takes it up…it’s going to be a minefield…just like the RSS feeds are!
I think it’s better that you microblog via Twitter that SP2 has been released than post a whole blog post on it…but in my opinion, most should be subscribed to the Microsoft SharePoint blog RSS’s and will know this already.

Content being lost in noise

Everyone is still discovering and learning how they should use Twitter, me included. But the biggest thing for me is that I desperately try not to miss a tweet for fear of some great content being in there. Unfortunately with it being lost in tweets unrelated to SharePoint it makes it hard to catch them all. The big question comes up on whether you bother following people OR just rely on Twitter Search.

Missing tweets

Some days you just don’t get time to catch up on Tweets and just “mark as read” in your Twitter client…and miss things. If you leave it a few days, I just don’t have time to read 1000 tweets, so you skip them! I tend not to as the same content is announced in the Blog RSS I follow (all 400 of them).

Suggestions for Community

Tag your Tweets with #SharePoint

More and more Twitter Power Users are leveraging Twitter clients like Seesmic and TweetDeck to do Twitter Searches. I’ve noticed that not everyone is using the HASH tag #SharePoint. The power of this is that if someone mentions SharePoint in a tweet and you have a watch on it…you’ll get lots and lots of noise. But searching on #SharePoint it narrows it down a lot to more quality content. So if you want to tweet quality content…use the HASH tag.

image

By using #SharePoint you lose all the job posts too ;-)

image 

Add content to Social Bookmarking

I’ve raised this in a few posts before, but I suggest if you want to tweet links for the rest of the SharePoint community…it isn’t that much extra effort to add it to a social bookmarking tool. There are a lot of us already on Diigo (10463 bookmarks from 625 people tagged SharePoint) and delicious (189028 bookmarks tagged SharePoint).

image

The toolbars are great for Diigo and it even allows you to “Save Elsewhere” to delicious, ma.gnolia or simply. It also indicates if you’ve already bookmarked the post too which is great!

You will notice in my SharePoint Social Bookmarks I heavily tag my content so if you wanted to see all the SharePoint bookmarks on workflow you go to: http://delicious.com/jthake/sharepoint+workflow and see my 137 bookmarks…you can see the most popular by seeing who else has bookmarked them too!

Hook up social bookmark to Twitter

image

I use TwitterFeed to hook up my Diigo RSS feed to Twitter. I filter my RSS feed by the keyword SharePoint+Tweet which signifies that the content is worth tweeting about. Every 30mins TwitterFeed posts up to 5 from the feed to my Twitter. I also ensure that I put a #SharePoint Hash tag in there too.

This allows you to get the best of both worlds…Twitter and Social Bookmarking.

Hook up social bookmarks to Blog

To cater for those who like to see blog posts rather than read Twitter or read Social Bookmarking pages, you can hook up your bookmarks to your blog too. Either by having a widget on your blog OR by getting it to autopost your daily/weekly links to your blog. This is how Steve Pietrek works and his posts are often in trackbacks all over SharePoint blogs ;-) Essentially you could go to his Delicious page and see the same view here…and also subscribe to his RSS.

Add the PostRank widget to your blog

PostRank has slowly but surely appearing on all the blogs I visit these days. The PostRank SharePoint topic page does a great job of daily report on who’s blog is most popular out there. It’s not a great indication just yet as not everyone has it on their blog…but it does calculate these results by monitoring social networks as well as click throughs from their widget as well.

image

Why do these things?

By doing the above it will allow us to utilise the power of these tools.

Check out Popular Posts

Digg really never took off for the SharePoint community so finding Popular SharePoint posts can be done by leveraging the social bookmarking tools Popular Pages (delicious and Diigo) OR seeing the RT’s in Twitter Search.

The above screen shot shows that 19 people have bookmarked the SP2 announcment on delicious, the list of these people can be found by clicking the number 19.

image

In the workflow example you can see
image

In my opinion this is a lot easier to see what is trending than Twitter.

Hook up Twitter Search to #SharePoint

Add the #SharePoint Twitter search to your client of choice…I currently use Seesmic. This will allow you to just catch up on Twitter Search for #SharePoint if you’ve not read your Tweets for a few days and not worry about the main Twitter stream you follow.

image 

PostRank RSS OPML

If you like reading your blog posts..you can grab the OPML from the PostRank SharePoint topic page and import it into your favourite reader…you can also import your own OPML into PostRank to make sure that everyone is aware of the RSS feeds you read and can discover new ones!

Conclusion

There are lots of ways to discover content around SharePoint on the web…but by following some of these things above you can help the community make it easier by supporting their approaches to discovering automatically!

Published: 5/9/2009  6:57 PM | 2  Comments | 0  Links to this post

 Next >>