SharePoint Saturday Sydney returns, and more to come soon!

image SharePoint Saturday Sydney is back! 12 months ago we ran the first SharePoint Saturday event in Australia and now we are taking it back where it all began for what I’m hoping will be an even bigger event this time around!

So keep August 7 free people, we will be at Cliftons training facilities (190 George Street, Sydney) and it’s going to be a fantastic event. We are talking to speakers and sponsors now, so expect to hear more details confirmed in the next week or so, and we will also open registrations shortly as well so stay tuned for more info. If you are interested in speaking or in sponsoring our event, check out the website at http://www.sharepointsaturday.org/sydney for info.

But what about the people who aren’t in Canberra you might ask? Well I can also confirm that SharePoint Saturday events have been confirmed for Canberra on September 18 and for Melbourne on October 16. We will announce the details for those in the coming weeks as well, and you will also be able to register for them shortly as well. Outside of those events we are also working to confirm another Adelaide event, and we are even discussing taking SharePoint Saturday to New Zealand with an event in Queenstown New Zealand!

So stay tuned for more info as it comes over the next couple of weeks people, and we hope to see you at one of our great upcoming events!

Problems using the Contacts Web Database template (Access Services)

I came across this problem this morning while investigating the new Contacts Web Database that is in SharePoint 2010. Essentially the site is driven off an Access Services database, so has some interesting options for how you can use it – but I came across a problem where as soon as I opened the site I was greeted with the error “Access Services is unable to process the request”.

After a quick poke around the log files I found that the error message that was being thrown internally was “System.Configuration.ConfigurationErrorsException: Unrecognized attribute ‘allowInsecureTransport’. Note that attribute names are case-sensitive”

For anyone who had been playing with the beta version of SharePoint 2010 may have come across this same error there – lucky for us it got a hotfix in the beta and even luckier for us, that same hotfix will still work with the RTM version.

Info about the hotfix can be found on the SharePoint Team blog at http://blogs.msdn.com/b/sharepoint/archive/2009/11/19/installation-notice-for-the-sharepoint-server-public-beta-on-microsoft-windows-server-2008-r2-and-microsoft-windows-7.aspx and the link to the hotfix on Connect is http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=23806.

Twitter/Bing Maps web part – How I did it

For those of you you attended one of the Office launch parties in Australia the other week, you may have seen at the end of my demo the twitter and Bing maps web part that I showed off. Now I didn’t go into the technical detail on the night but I did want to share some of it for those who are interested. The solution itself was made up of two main components, the custom timer job and the web part itself.

The timer job

Now there are probably a few other ways I could have gone about doing this, but basically the timer job is responsible for going to Twitter and bringing the data about the appropriate tweets down and storing them in a list. The reason I chose the timer job was because I wanted to be able to show off some LINQ to SharePoint (both querying and inserting items). Basically it makes a call to search.twitter.com for an RSS feed of results, and then uses a unique ID to determine if an individual tweet is already stored in the list. There is a web application scoped feature that controls the timer job, and it is scheduled to run once every minute.

The web part

This was the fun part for me, as I haven’t ever really looked into Silverlight too much, so it was good to get my hands dirty with this one. Basically what I did was use the Visual Studio SP2010 templates to create a silverlight web part project and built it up from there. It used the Bing Maps Silverlight control (obviously) and then basically just used the SharePoint silverlight client object model to query the list for the most recently made tweets, using one of a list of predefined hash tags to determine where to place the markers on the map. Then all I do is use a DispatchTimer to trigger a move to the next tweet every 8 seconds.

The code

As interesting as a two paragraph description of this is, I’m sure there are plenty of you who want to see the code – the good news is that is now on CodePlex for the world to see! Feel free to download it as well as the compiled WSP and let me know if you have any questions or comments about it. You can see it at http://aunz2010launch.codeplex.com/.

Also, thanks again to everyone who participated in our launch party, it was a fantastic night (we had more than 80 people in attendance at Canberra which was fantastic). There was a lot of effort put in by heaps of people to bring it all together, and I really enjoyed being a part of it! There are some photos of our Canberra event on my FaceBook at http://www.facebook.com/album.php?aid=429057&id=888000127&l=8734475e22

The biggest week for SharePoint in Canberra ever is next week!

I’m not trying to over exaggerate this when I say next week is going to be huge, because it really, really is! The first thing to be aware of it that on Wednesday morning I am giving a presentation to the Canberra Visual Studio ALM user group on how Visual Studio 2010 can be used for MOSS specific projects. We are going to cover lots of great things, touching on how all the new tools in Visual Studio and Team Foundation Server can be used to improve development processes and get your MOSS projects really kicking along! You can find all of the details, and the link to register, on the website at http://cvsalmmay10.eventbrite.com/

… that is just the entree though :-)

The main event is happening on Thursday night – the Office/SharePoint 2010 launch party! Here is a quick summary of what is happening:

  • Each user group around Australia and 3 in New Zealand are meeting on the same night, and we will use Live Meeting for some video catch ups with everyone
  • Each user group will have a few small presentations about Office, SharePoint and Project Server 2010
  • There will be heaps of prizes to give away on the night at every user group

At the end of the night, I will be presenting a lock note session via Live Meeting to every user group in Australia! (The NZ guys will already be gone by that point, if you are in Perth it will be a key note!). In the session I will be covering some of my favourite new features in the platform, and explaining how they can be used to really raise the bar on the types of applications and solutions we implement on the Office platform.

Thanks to our event sponsors (AvePoint, K2, Unique World and Microsoft) we have lots of awesome stuff to give away too! We have an Acer Netbook, a ticket to the SharePoint Conference next month in Sydney, and an Xbox 360 Elite Console!

Part of my demo is a special twitter web part that maps search results from twitter on to a Bing maps control in Silverlight! You can actually have a look at this web part in action now before the night though if you head on over to our website at http://www.aunz2010launch.net/twitter – be sure to add a tweet as well (the details of how to get it to appear on the map are on the page!)

So if you want to come to the Canberra event with us, head on over to http://cbr2010launch.eventbrite.com/, and if you want to know more about the other events check out the main site at http://www.aunz2010launch.net. We really hope to see you all there!

ClientContext.Current = null in Silverlight web part

I came across this while working on a little something special I am preparing for the AU/NZ office launch parties, basically in a Silverlight web part (created using the new SharePoint 2010 Extensibility Projects) I am trying to access data from a SharePoint list. Through ClientContext.Current I am able to refer to the Web property and start going through lists and items like I would on the server side. The problem I was hitting was the ClientContext.Current was always returning null, so I couldn’t get any data out of it!

I did a little bit of Google’ing around I came across this – http://sharepoint2010wss.com/clientcontext-current-is-null-in-silverlight/ – which basically pointed out the problem in that the InitParam value needed to be set for the ClientContext.Current object to be able to return a value. This is fine if you are putting the Silverlight app on the page manually, but in the case of the project template that the Visual Studio Extensibility projects add there is a class that generates the HTML for us, so we can’t just add the tag.

Luckily though, the fix is easy. Just open up your web part class and in the Constructor you will see that it creates a new instance of SilverlightPluginGenerator. This is where you can set all the properties of the silverlight control that goes on to the page. You’ll see that it uses an object initialiser to set all the properties. After that at the end of the constructor method you just need to add one line of code to get the URL to be set.

 _silverlightPluginGenerator.InitParams.Add(new InitParam("MS.SP.url", SPContext.Current.Site.Url)); 

Once you put this into the web part constrcutor, the appropriate HTML will be rendered to the page and then your silverlight goodies will start working!

Canberra SharePoint User Group – April 2010

cspug

It’s that time of the month again already, time for the Canberra SharePoint User Group! This month we have two shorter presentations, the first being presented by Ishai Sagi, and the other one is gonna be one of mine! All of the details, including registration info can be found on our EventBrite page – and did I mention that we have a NetBook to give away as well? You don’t wanna miss this one!

http://cspug.eventbrite.com

SharePoint Saturday Brisbane happening in May

SharePointSaturday There have been a number of fantastic SharePoint Saturday events happen in Australia in the last 7 months since we had the first one in Sydney, and we are continuing to keep the ball rolling with the next event happening in Brisbane on May 8th!

I’ve been guiding Mark Rhodes, Adam Clark and Alpesh Nakar locally to get things going for this, and the boys look like they are putting together and great event. They have had some top notch speaker submissions (stay tuned this week for announcements of who the final line up will be) and they will be running hands on labs on the day (thanks to the good folk at Excom in Brisbane giving them access to the labs there!).

This will be a great event, and given that it is only days away from the official launch of Office 2010 and SharePoint 2010 you really have no excuse not to head down there for the day and take in some of that great atmosphere and the awesome presenters!

It’s a free day, with lunch and a show bag provided so make sure you register to lock in your place, you can get all the details over at the official SP Saturday site!

http://sharepointsaturday.org/brisbane

I’m now a virtual technical solutions professional for Microsoft

So I wanted to drop a quick blog post to announce that yesterday I signed all the paperwork to have Microsoft bring me in to the team of vTSP (virtual technical solutions professional) that has been set up around the country.

Currently the list of guys and gals in this role includes names like Jeremy Thake, Elaine Van Bergen, Rob Cheyne, Leah Dent and a few more who’s names I forget right now (my bad guys!).

Basically the vTSP role will see us supporting the work of the full time SharePoint TSPs in Microsoft, so I’ll be working with Gayan Pieris as well as the local MS team here in Canberra to help support their sales processes that involve technical aspects of SharePoint and the office environment as a whole.

I’m really excited about this and am looking forward to working with the Microsoft guys and girls, even if it is only for around 3 days a month and on my own time at this point! (I don’t so much mind the doing it on my own time though as I get access to a lot of internal resources within Microsoft that will have plenty of nerdy friends of mine experiencing plenty of geek envy!)

LINQ and SharePoint 2010 Site Definitions

This is one of those posts that is more my thoughts on how you could make use of something, so just run with me here and hopefully you’ll see what I mean! I travelled to Darwin recently and decided to use the time on the flight there and back to get my head around how LINQ to SharePoint will work with SharePoint 2010 – first of all let me just say that LINQ is awesome in general, and the implementation of it for SharePoint is seriously going to change the way you query for data in SharePoint sites (I love strongly typed objects!)

I’m not going to talk about specifically how to use LINQ in SharePoint 2010 here (although if you are in Canberra next week on Wednesday night be sure to come in to our SharePoint user group to see Alex Hobson from Unique World talk about this – I will hopefully have some video of the session to share afterwards as well). What I do want to talk about is how I think LINQ in SharePoint 2010 could work very, very sweetly with site definitions.

Using the tool SPMetal that comes with SharePoint 2010 (sits in the bin folder of the 14 hive) you can generate a code file that contains classes for your objects in a specific site. This will include a data context object, along with objects for all of your list level content types (all very strongly typed, I love it!). So each class file here essentially then represents a site within your site collection. Keep that bit in mind as we go on here.

When it comes to creating sites in SharePoint there are a couple of different schools of thought on the subject – there are the people that will do everything in features and just enable features on top of out of the box site definitions, there are people that use site definitions and put all of their logic into them (so they create lists, provision files, as much as they can get into that onet.cml file as possible) and then there are the people that take a bit of a hybrid approach in that they use site definitions that do no more than activate specific features to create the specific site types they need. I personally am a fan of the hybrid approach, and run all of my projects like this. Now you might be asking what this has to do with LINQ and I’m getting to that, just stay with me for a bit more.

So if you take an approach where you are using custom site definitions, you will likely end up with a few specific site configurations. Usually things like “Root site”, “Sub site”, “search site” and others will be on your list depending on what type of site you are putting together. Now go back to what I said about SPMetal generating a class file for a single site at a time and you might see what is in my head here. You could provide a solution that provided a site definition with various configurations, as well as a data context and types to query the data in your collection as part of the solution. So in your assembly SharePoint.Intranet.dll you could have namespaces set up like SharePoint.Intranet.SiteDefinitions.SubSite and SharePoint.Intranet.SiteDefinitions.RootSite and however many other configurations you had. The DLL for your main site definition that contains all of the features required to create your site now also contains a DLL with all the classes required to query the data within that site as well, you just use SPMetal to create a code file for each type of site you create definitions for, put them in appropriate namespaces and your done! Then you can use your sub site data context object to query any site that is based on your subsite definition (like INTRANET#1 or something like that) – there is essentially a very clear relationship between the type of the site and the data context you should use to query it.

Now I realise that for anyone who has been playing with LINQ already, in particular the SharePoint 2010 stuff this idea might seem somewhat old, but seeing as I’m relatively new to both counts this I think this idea is really cool, and I definitely plan on using it when I get into some SharePoint 2010 work!

Update: Programmatically listing delegate controls

In my last blog post I discussed a method to programmatically read delegate controls for a specific control ID within a site. I did come up with a problem with this though – when my delegate controls were listed as a specific control type (with a ControlAssembly and ControlClass attribute in m Control element) they would load fine, but whenever I was using a User Control (with the ControlSrc attribute) they would never be returned to my code.

I managed to figure this one out very easily with the help of the beta version of Reflector Pro – I debugged my way into the stuff happening under the hood of the DelegateControl class and found that I had missed something rather obvious – when I was creating the DelegateControl to query for the controls with it was never added to a page, and as such when SharePoint attempted to call Page.CreateControl (as you do when you want to load a user control) the Page object was always null, thus why I was getting nothing back (and apparently these errors were being logged to the 12 hive, but I couldn’t see it at the time in amongst the rest of the rubbish there)

The solution – in my case I was calling this from a web part, so what I did was just add the DelegateControl object to the controls collection, did the query with the code form yesterdays post and then when I was done I removed the DelegateControl form the Controls collection of the web part – this solved the problem nicely, I hope that helps!