Contents tagged with Microsoft Office

  • NullReferenceException when uploading multiple files in SharePoint 2010

    Tags: Microsoft Office, SharePoint 2010

    Recently came across a really interesting bug in SharePoint 2010. It's when you are trying to upload multiple files using the ActiveX control, where you can drag and drop files or select multiple files. I started receiving "Object reference not set to an instance of an object" exceptions from the STSUpld control. The usual Google, ahem, Bing check revealed nothing. Just that I was not alone having this problem (hence this post).

    SNAGHTMLe5d8a

    The strange thing is that this only appeared on some sites and on some computers. After some fiddling around I noticed that it actually only happened on sites where I used a custom master page. My initial thought was that this had something to do with invalid HTML or missing delegate controls - but everything was just fine (alright then, I actually found a missing end div tag, but that didn't solve it).

    So I pulled out the almighty Reflector tool and checked the STSUpld.UploadCtl.GetFormInformation method to see what could possibly go wrong there. By inspecting the code for possible situations where a NullReferenceException could be thrown I found a couple of places where this is not checked for (ouch!):

    • The control needs a hidden input element with the ID destination This one was there, I did not touch the upload.aspx file - and you should not either!
    • This destination field must have a value This is populated by the code behind
    • The control needs an input element of the type button with an AccessKey attribute set to "O" For the OK button (might be different in other languages than English)
    • The control needs an input element of the type button with an AccessKey attribute set to "C" For the Cancel button (might be different in other languages than English)
    • All input element of the type button must have the AccessKey value set to non empty The control iterates through all input elements looking for the AccessKey to find the OK and Cancel buttons. In my case this was the one playing games with me!

    The final point above was the thing that caused the NullReferenceException in the multiple upload control. In this case I had a few input elements with the type button without any AccessKey attributes in my master page (let's not go into why they are there...). Nevertheless once I added the AccessKey attribute with a non-empty value the upload worked like a charm. Note that setting AccessKey="" causes the same exception, you need to set a value for it for instance; AccessKey="_".

    What can we learn from this! You should always check for null! Can't be said too many times. Calling ToString() on objects without checking for null is the eight deadly sin.

    PS: I think this post is worthy of a KB article, Microsoft? At least as a patch in upcoming Office updates...

  • Dissecting the Office Web Apps cache in SharePoint 2010

    Tags: Microsoft Office, SharePoint 2010

    The Office Web Apps, OWA, in SharePoint 2010 is a great way to enhance the SharePoint experience. It allows users without a decent OS or a locally installed Office client to view and edit Word, Excel, PowerPoint and OneNote documents.

    When you install and correctly configures Office Web Apps (yea, can be a bit of a hazzle if you like me avoid the Farm Configuration wizard) and then enable the required Site Collections feature a cache will be created. This cache is used by Word and PowerPoint Web Apps to store the renditions (XAML) of the documents to speed up the process. Office Web Apps will create one cache per Web Application and the cache is stored in one of the Content Databases attached to the Web Application.

    The cache is actually a Site Collection, based on the Team Site template, which contains a Document Library called cache which holds the cached content.

    Office Web Apps Cache site

    The content in this document library is ZIP compressed files with the XAML and images of the actual renditions.

    Cached documents

    By default the cache is set to contain 100GB of caching per cache (i.e. per Web Application). You can configure the cache size using the Set-SPOfficeWebAppsCache PowerShell cmdlet. So 100 GB of data will end up in your content database if you use OWA quite frequently and this will also be a part of your backups!

    The Cache Site Collection

    What you should do is to move this Site Collection to a separate database! This database could have a separate backup schedule and SLA, since this is just a cache. It is better to have it in its own database instead of reducing the cache size. Of course the cache size depends on the usage most read or read/write using OWA. For instance if you have most read ops then you could easily increase the cache size and increase the retention times for the cache.

    So how do I move the cache then. Well, since it is just a simple Site Collection - just as we do normally to when site collections grow...

    1. Create a new database, call it for instance OWA_Cache
    2. Move the cache Site Collection to the new database
    3. Update your SLAs

    To move the cache Site Collection we can use some PowerShell love like this:

    $db = Get-SPContentDatabase | ?{$_.Name -eq "OWA_Cache"}
    $webapp = Get-SPWebApplication | ?{$_.Url -eq "http://sp2010/"}
    Get-SPOfficeWebAppsCache -WebApplication $webapp
        | Move-SPSite -DestinationDatabase $db

    Don't forget an IISRESET - the ultimate SharePoint command!

    Cache moved to separate Content DB

    Notice that I also specified maximum of 1 Site Collection to this content db. We do not want real Site Collections ending up there...

    Hmm...I'm turning this blog into an IT-pro blog....

  • Create SharePoint 2010 Managed Metadata with Excel 2010

    Tags: Microsoft Office, SharePoint 2010

    Building the metadata structure in the Term Store Manager in SharePoint 2010 is not the most convenient way. I prefer working with the metadata structure and terms in an Excel document so that I can discuss the structure with colleagues and clients before implementing it.

    The Term Store Manager allows you to import a comma separated text file containing a Term Set. By default the Excel 2010 Save as CSV does not save in the correct format and for that I have made a Excel 2010 macro enabled template which produces the correct format.

    The Excel document allows you to build a Term Set per sheet, see figure below. It contains a number of columns:

    • Term Set Name - name of term set. Only needed on first row
    • Term Set Description - description of term set. Only needed on first row
    • LCID - the locale identifier. Can be left blank for default LCID
    • Available for tagging - TRUE if the term should be available for tagging otherwise FALSE
    • Term Description - description of the term
    • Level N Term - the name of the term. See figure below on how to build the structure

    Term Set in Excel 2010

    When the term set is ready you click on the new Ribbon tab added by the Excel document called SharePoint 2010 and then select Create Term Store File. Excel will then ask you for a file name and produce an import file for the Term Store from the active sheet.

    Term Store Ribbon tab in Excel 2010

    If you click on Create New Term Store Sheet an new workbook sheet will be added to the workbook in which you can add another term set.

    To import the term set into your Managed Metadata store, create a new Group and select Import Term Set, as in the figure below.

    Import Term Set

    SharePoint will then parse your file and import the term set. And it will look something like this:

    image

    Download the Excel 2010 document

    You can download the macro-enabled Excel 2010 document here. Unzip the file and open the document (TermStoreCreator.xltm) to create a new workbook.

  • Creating SharePoint 2010 workflows with Visio 2010

    Tags: Microsoft Office, SharePoint 2010

    The new Office 2010 clients have been released as a Technical Preview and I'm fortunate to get my hands on them and free to talk about them. The new clients are awesome!

    Visio is one of the applications from the Office suite that I use on a daily basis to design, model and draw diagrams, workflows and solutions. Visio 2010 has gotten a really nice facelift and a whole new set of features. The Ribbon has been one of the things I really missed in the 2007 release and the SharePoint integration, that can be seen in the Sneak Peak, looks awesome!

    Building workflows for SharePoint has mainly been done using either SharePoint Designer 2007 (dull and not reusable) or Visual Studio (complex). SharePoint 2010 will use the new Windows Workflow Foundation (4.0) and rumors say that SharePoint Designer 2010 and Visual Studio 2010 has even better support for building workflows.

    Microsoft SharePoint Workflow Visio Template Visio 2010 comes with a brand new template; Microsoft SharePoint Workflow. Using this template you can design your workflow and then export it. This exported file can then be imported to SharePoint Designer 2010 or Visual Studio 2010 (just a guess - Visual Studio 2010 with SharePoint 2010 dev tools is not yet publically available). Another guess is that you can export the workflows from SharePoint Designer 2010 and import them into Visio for better visualization or documentation of the workflow.

    You can design your SharePoint workflow just as you would design any other workflow using Visio, drag and drop and make a nice layout. This is great when you are making a specification for your SharePoint solution. Far better is that the ones responsible for the actual workflow or processes can design the workflows for you without knowing a bit about SharePoint, just some basic knowledge of Visio.

    Workflow sample

    Once you're done with your workflow you can validate it, so that you have not missed any branches or any mandatory information. Then you save it as a Visio or file or better export it as a Visio Workflow Interchange (.vwi file).

    In Visio you can only make the actual design of the workflow, not the configuration which is done in SharePoint Designer 2010.

    The .vwi file is a zip compressed file containing the XOML files (XAML files for workflows) and some Visio information. This XOML file can of course be opened in Visual Studio for editing, you just require the SharePoint 2010 dlls :-)

    What I have not been able to test yet is the import in SharePoint Designer 2010, since it requires SharePoint 2010.

    I will start using it immediately for designing workflows!

  • How to make Live Mesh conquer the world...

    Tags: Microsoft, Microsoft Office, Internet and the Web, Windows Live, Live Mesh

    Today almost everyone have more than one computer; one at work, a few at home, a media center, a PC, a Mac etc, your family members, friends and colleagues have the same. One problem is that a lot of us need access to files on one machine when we are using one of the others. For example I want to access my images when I’m at work sometimes and I do not want to copy all of these images onto my work laptop, when I’m at home I want to have the same favorites and documents that I use at work and so on. Then I have another scenario, let’s say that I do not have any of my computers with me and I want to access one of my files, then I want to have some way to access the files using a standard browser - and why not have editing possibilities.

    There are several ways to accomplish this, but none (that I discovered) covers all of these scenarios. Today I use a mix of services from Microsoft (there are other vendors with similar services, but none as good IMHO); Live Mesh, Office Live Workspaces, Live Skydrive and Live Sync. Read my previous post which compares some of these features.

    Live Mesh synchronizes folders between my machines as well as keeps a copy of it in the cloud. Live Sync synchronizes between the machines only. Office Live Workspaces allows me to store, share and access Office documents, lists and calendars in the cloud. Skydrive is currently a backup repository in the cloud. This pretty much covers it all, but has a few problems:

    1. I need to have several applications/services installed
    2. I need to go to different web sites to configure or access files
    3. They all use different storage mechanisms
    4. The synchronization (Mesh, Live Sync) always make a bi-directional synchronization

    Why not take these services and make one über-Mesh and add some additional features. Take the Live Mesh application and add this features then you would have a synchronization service that would take the world with storm.

    Modify Live Mesh in the following ways

    1. Merge the Skydrive storage with the Mesh storage - then we will go from 5Gb to 25Gb online storage
    2. Allow the Mesh folders to synchronize only between the computers and not the cloud, like Live Sync. I do not need all my files available in the cloud. For example I use Mesh to have some applications synched across my machines, just like Andrew Connell does.
    3. Allow you to set how the files will be synchronized; one-way or bi-directional. For example I only want my images taken with my mobile phone to be copied to the mesh, not to synchronize all images with the phone. This should be a setting per device and folder
    4. Today in Live Mesh you can only add top-folders, it would be awesome if you could make your own folder structure and set the synchronization options per folder
    5. Integrate the Office Live Workspaces folders into the Live Mesh
    6. Integrate the upcoming Office Live Applications into the Live Mesh, the opportunity to edit my Office documents using a browser only would really rock
    7. Have a REST based API to the Live Mesh - then all vendors could Meshify their applications
    8. Make the Live Mesh WebDAV compliant, then I could use any Office application from anywhere and edit my documents directly in the Mesh, without having to synchronize the folders
    9. Keep the Live Mesh RDP access
    10. Keep the Live Sync remote folder access
    11. Keep the Live Sync file size limit, Skydrive does not allow upload of large files

    Anything else you would like to have?

    Of course I realize, and don’t mind, that some of these services should have some fee; for example the Office Live Applications integration could have some fee and extra storage space (25Gb is not that much in these days) should also cost.

    I’ve even tried the Live Mesh CTP version, which have support for custom applications - which looks awesome, throw that into the wish-list also.

    So, Microsoft Program Managers hear me! Now when Ray Ozzie is in partial command in Redmond I think this should have a high priority (anyone remember Groove?)

    I do not think I am the only one out here that would just love to see this happen.

  • Office Labs - Canvas for OneNote

    Tags: Microsoft Office

    Canvas for OneNote is another new and interesting innovation from the Office Labs team. Canvas for OneNote creates a new way for you to manage your OneNote section and pages in a more “inspirational” and “irregular” way.

    OneNote is traditionally organized into Note books, sections, groups, pages and subpages - just like a classical book shelf filled with note books. It works really nice if you know in which note book you placed your notes (of course you can search to find it…faster than you search your shelf). This feels a little bit old-school to me and I still have a lot of hand notes and documents spread out over my desktop (not the Windows desktop, a real physical one) organized in a very strict chaotic order.

    Canvas for OneNote is one step forward to keep your notes in a more irregular order and to view them in a more visual way. You can see all your notes/pages just as you would put them on a desktop and drag them around and organize them into groups to cluster related sections and pages together. By zooming in and out you can really fast find and edit the notes. One interesting feature is to use the time line mode, which highlight the pages changed within a specified time period.

    Canvas for OneNote

    Canvas for OneNote is right now an experimental project and has some show stoppers, for me who is an OneNote addict. You can only import (makes a copy of) one OneNote section (I use several ones), it drains the battery of your computer (normally draw notes on meetings without power supply) and I think that a search function should be there. But the team are right on track - I really would like to see something like this in upcoming versions of OneNote (read OneNote 14).

    This type of interfaces is something we need to see more of, don’t you agree. And I really would like to see it in other applications/systems. Just look at this interface from Bumptop - imagine that on a Tablet PC.

  • SharePoint 14 delayed until 2010

    Tags: SharePoint, Microsoft Office

    Not that unexpected, but Microsoft chief executive office Steve Ballmer has confirmed that the new Office 14 clients and servers (read SharePoint) will not be released during 2009. The products will be “generally available” during 2010.

    Generally available may indicate (I’m always positive) that we have a release for volume licensees and partners in late 2009 and in the shelves during 2010 (just like the previous version).

    Read SharePoint Daily Special Edition for more information.

    I’m not surprised since the lid has been on for so long and for such a significant server product such as SharePoint it really needs time for a beta phase. The adoption of WSS 3.0 and MOSS 2007 has really boosted and having a to short period for extensive testing and upgrade preparation would not be appreciated.

    Now we all can wait for the beta period to start, and hope for a universal change in the number of hours per day, I sure need some more…

  • Custom code with SharePoint Online and Windows Azure

    Tags: .NET, C#, SharePoint, Visual Studio, Microsoft Office, Office Open XML, Windows Azure

    When I first heard about SharePoint Online at the PDC 2008 I was a bit disappointed that you could not use custom code but had to rely on the built-in functionality and the things you could do with SharePoint Designer (which is quite powerful anyway, especially with jQuery).

    To read more about SharePoint online, head over to Tobias Zimmergrens blog.

    But with some clever techniques you can take advantage of the Windows Azure Hosted Services and create your custom code. I will show you how to create some custom code, which normally is done by SharePoint event receivers or timer jobs, using a Worker Role in Windows Azure.

    The post is quite lengthy but I have skipped some of the code snippets to make it easier to read. You will find downloads of the C# code at the end of this post.

    Scenario

    This sample assumes that we have a Document Library in SharePoint Online containing Word 2007 documents for Proposals. The library is called Proposals. We want to make sure that our Proposals has all comments removed before we send it away to our clients. This comment removal procedure will be initiated by a workflow.

    The Document Library

    Action column The Proposals Document Library is a standard SharePoint Document Library with versioning enabled. First we add a new column to the library called Action. This column will contain the status of the comment removal procedure. It has the type Choice and three possible values; RemoveComments, Processing and Done.

    The workflow

    Using SharePoint Designer we create a new workflow, called Prepare Proposal. The workflow has three stages. The workflow is initiated manually

    1. SPD Workflow designerSet the Action column to the RemoveComments value
    2. Wait for Action column to get the value Done
    3. Send e-mail the the author

    Pretty simple workflow but all using the out-of-the-box SharePoint Designer activities.

    So far everything is basic SharePoint Online “development”, but now we head on over to the custom coding parts.

    Create the Hosted Service Worker Role

    Using Visual Studio 2008 and the Windows Azure SDK we can create a new project of the type Worker Cloud Service. This cloud service will contain all our code for removing the comments from our Word documents.

    Cloud Service templates

    When the project is created, actually a solution with two projects, we add two references to our Worker Role project; WindowsBase.dll and DocumentFormat.OpenXml.dll (from Open XML SDK 1.0). The Open XML reference must also have the Copy Local property set to true, so that the assembly is deployed with the hosted service App Package.

    Note: Version 2 of Open XML SDK can not be used since it does not have the AllowPartiallyTrustedCallers attribute, which is required for all referenced assemblies in Windows Azure.

    Add a service reference

    The worker role will use the SharePoint Online web services to read and update data so we need to add a Service Reference to our SharePoint online site and the Lists.asmx web service. When this is done an App.config file is created, just delete it - we have to set our bindings and endpoints in the code so it is fully trusted.

    In your worker role Start method you create code as follows:

      1: BasicHttpBinding binding = new BasicHttpBinding();
    
      2: binding.Security.Mode = BasicHttpSecurityMode.Transport;
    
      3: binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
    
      4: binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
    
      5: binding.Security.Transport.Realm = WorkerRole.Realm;
    
      6: binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

    WorkerRole.Realm contains a string with your SharePoint Online Realm with a value something like this: “XXXXXmicrosoftonlinecom-1.sharepoint.microsoftonline.com”.

    Let’s code!

    The worker role will poll the Proposals library for new documents which has the RemoveComments value in the Action column. This is done with the GetListItems method and a query selecting only those documents.

      1: XElement query = new XElement("Query",
    
      2:     new XElement("Where",
    
      3:         new XElement("Eq",
    
      4:             new XElement("FieldRef",
    
      5:                 new XAttribute("Name", "Action")
    
      6:                 ),
    
      7:             new XElement("Value",
    
      8:                 new XAttribute("Type", "Choice"),
    
      9:                 "RemoveComments"))));
    
     10: 
    
     11: XElement queryOptions = new XElement("queryOptions");
    
     12: 
    
     13: var itemsXml = client.GetListItems("Proposals", string.Empty, query.GetXmlElement(), null, string.Empty, queryOptions.GetXmlElement(), string.Empty);
    
     14: 
    
     15: XNamespace s = "http://schemas.microsoft.com/sharepoint/soap/";
    
     16: XNamespace rs = "urn:schemas-microsoft-com:rowset";
    
     17: XNamespace z = "#RowsetSchema";
    
     18: 
    
     19: var docs = itemsXml.
    
     20:     GetXElement().
    
     21:     Descendants(z + "row").
    
     22:     Select(x => new {
    
     23:         Title = (string)x.Attribute("ows_LinkFilename"),
    
     24:         Id = (string)x.Attribute("ows_ID"),
    
     25:         Url = WorkerRole.Url + "/Proposals/" + (string)x.Attribute("ows_LinkFilename")
    
     26:     });
    
     27: 

    Now we have all our proposals in the docs variable and we can iterate over it.

      1: foreach (var doc in docs) {
    
      2:     RoleManager.WriteToLog("Information", "Processing: " + doc.Title);
    
      3:     setStatusOnDocument(client, doc.Id, "Processing");
    
      4: 
    
      5:     WebRequest request = HttpWebRequest.Create(doc.Url);
    
      6:     request.Credentials = new NetworkCredential(WorkerRole.Username, WorkerRole.Password);
    
      7: 
    
      8:     MemoryStream mems = new MemoryStream();
    
      9: 
    
     10:     using (WebResponse response = request.GetResponse()) {
    
     11:         using (Stream responseStream = response.GetResponseStream()) {
    
     12:             byte[] buffer = new byte[8192];
    
     13:             int offset = 0;
    
     14:             int count;
    
     15:             do {
    
     16:                 count = responseStream.Read(buffer, 0, 8192);
    
     17:                 offset += count;
    
     18:                 mems.Write(buffer, 0, count);
    
     19:             } while (count != 0);
    
     20:             using (WordprocessingDocument wpDoc = WordprocessingDocument.Open(mems, true)) {
    
     21:                 RemoveComments(wpDoc);
    
     22:             }
    
     23:             using (WebClient wc = new WebClient()) {
    
     24:                 wc.Credentials = new NetworkCredential(WorkerRole.Username, WorkerRole.Password);
    
     25:                 wc.UploadData(doc.Url, "PUT", mems.ToArray());
    
     26:             }
    
     27:         }
    
     28:     }
    
     29:     setStatusOnDocument(client, doc.Id, "Done");
    
     30:     RoleManager.WriteToLog("Information", "Comments removed from: " + doc.Title);
    
     31: }
    
     32: 

    First of all we have a method which updates the Action column of the item to Processing to indicate to the users that we are currently processing this document. Then we read the document into a stream and pass it into a WordprocessingDocument object. On that object we do the RemoveComments method which removes all comments in the Word 2007 document.

    Note: Have a look at Eric Whites blog for some nifty operations on your Open Xml documents, such as the remove comments function.

    When all comments are removed we upload the file back to SharePoint and set the status to Done, and we are all set.

    As you can see I use three different techniques to read from the SharePoint Online site; the SharePoint web services, request-response and a simple WebClient. Isn’t coding fun!

    Test

    One of Windows Azures beauties is that you can test it on your local machine using the Azure Development Fabric. Just hit F5 in Visual Studio.

    Development Fabric

    This allows you to debug and fine tune your code and see how it scales out.

    Deploy to Windows Azure Staging environment

    Hosted Service When you are sure that there are no bugs just choose Publish in Visual Studio and it will open up a web browser which directs you to the Azure Services Developer Portal, there you can create a new Hosted Service Project or choose an existing one to use for this Proposals service.

    To deploy this solution we have to upload two files; the  App Package containing all your code and references and the Configuration Settings file, both automatically created by Visual Studio.

    Deploying

    When this is done you have to wait a few minutes so Windows Azure can allocate resources for you and prepare the environment. Once this is done you are ready to test your service in the cloud.

    In staging

    Just hit the Run button and after a minute or so the Proposals Service is running - in the cloud!

    Deploy to Production

    For us used to the SharePoint environment and the mess it is to get from development to staging to production environment it’s so much fun to just hit Deploy in Windows Azure to move the Staging service to Production.

    Production

    As you can see from the image above this solution is now in production and started with one worker role.

    Run the workflow

    Now we can test our complete solution by uploading a document containing some comments. Then initiate the Prepare Proposals Workflow.

    Prepare Proposal

    The document will be updated with a new value in the Action column.

    In Progress

    After a few seconds the document is updated by the cloud worker role we created, the workflow completes, there are no more comments in the document and the author should have received an e-mail with information that the workflow is done.

     Done

    Summary

    This was a short demonstration on what you can do with the standard functionalities of Microsoft's cloud offerings such as SharePoint Online and Windows Azure. The scenario was quite simple but using the same techniques you can elevate your SharePoint Online experience and functionality a lot.

    Using Windows Azure is one possibility to host your online custom code, hosting it on on-premise servers is another option and it works just as fine.

    Note: I have not made this sample so it can scale out nor does it handle any exceptions. Take it what its for.

    If you would like to look at the code you can find it here.

    Happy coding!

  • Office Server downloadable Technet content

    Tags: SharePoint, Microsoft Office

    The Technet and MSDN sites are great to have when you have to look things up when developing or maintaining solutions for the Microsoft Office Servers, such as SharePoint. But I also like to have this information closer to me and have even faster access to it.

    Microsoft is providing much of the content as downloadable CHM files, which is a great feature.

    Here are a list of some of the downloadable help files

  • Summing up the year of 2008 and embracing 2009

    Tags: Microsoft, Personal, SharePoint, Microsoft Office, Internet Explorer, PDC 08, Windows 7

    The time has come to make a summary of the past year and have a look into the future – the year of 2009. About a year ago I made a similar post with a summary and some predictions.

    This year has been a fast year and I have made so much, both personally and at work. For a few months in the spring I was at home taking care of my daughters and tried not to work (which I find really hard). It was a great time and I really need that. At work I think I’ve never felt this pressure from the market, no financial crisis in sight here. It’s mainly been about SharePoint, SharePoint and SharePoint. Our team at Pdb has had some really interesting projects and we have some even more interesting in the pipe.

    This year has allowed me to focus more and more on Microsoft SharePoint. I took the two development certifications on WSS and MOSS (both with maximum scores) and I plan to take the configuration tests in 2009. I have quite some time blogging about it and answering questions on the SharePoint MSDN Forums which as always is a great way to get even more experienced.

    The highlight of the year was of course the PDC conference in LA. I learned a ton of stuff, met a lot of nice people at the conference and at the parties, such as the SharePoint by day, SharePint by night party.

    Personal Projects

    As usual I have a ton of personal projects that I have been working on. I released two of them out in the wild:

    Blogging

    Blogging here has been fun as usual, and I’m glad to see so much new people dropping by. I’ve had to increase my bandwidth cap three times this year. This years most popular posts are:

    Most of these are popular due to internet searches. If I look at what people actually reads and links to, these are the most popular ones:

    As you can see all of them are about SharePoint – one of this years hottest software products!

    If I count in posts from previous years the most read one is:

    Last years predictions

    In the last years post I did some predictions about 2008:

    • A working version of Windows Vista with Service Pack 1 Check – Vista behaves really nice nowadays. Just waiting for Vista R2, ahem, Windows 7
    • That OOXML gets approval from the national bodies So they did and OOXML is now an ISO standard, IS29500, but the debate still continues. Microsoft has really grown during this time and I think they are now more open than ever and I really like the new Microsoft. Just take a look at the latest interoperability initiative at http://www.documentinteropinitiative.org/
    • That XPS is submitted to ISO Nope. I guess they have to ride the OOXML storm out first.
    • Getting at least a few of our customers to upgrade to Windows Server 2008 and SQL Server 2008 Yes – we have had fun
    • Having a nice parental leave You bet
    • Getting some time over so I can finish msfeedicon version 3 Nope. Did some other interesting stuff instead, such as the ChartPart.
    • Testing out the new Media Center for Vista, codename Fiji Nope. But instead I got my hands on Windows 7 during the PDC.
    • Internet Explorer 8 Yes and no, I did initially think that IE8 would be ready by now – but it’s not far away…

    So what about 2009?

    Guessing that Internet Explorer 8, Windows 7, Office 14 and SharePoint 14 will hit the streets is not that hard. But what else? I don’t expect any major new releases from Microsoft – but I do expect some more “open source” projects dropping out of Redmond and I do expect some major updates to the Windows Live services so they become even more “social”.

    This will once again be a year of constant betas, like 2006.

    Happy New Year!

    Happy New Year to all of you readers out there, and thanks for subscribing to my little blog. I really appreciate all feedback that I get.

AWS Tracker

About Wictor...

Wictor Wilén is a Director and SharePoint Architect working at Connecta AB. Wictor has achieved the Microsoft Certified Architect (MCA) - SharePoint 2010, Microsoft Certified Solutions Master (MCSM) - SharePoint  and Microsoft Certified Master (MCM) - SharePoint 2010 certifications. He has also been awarded Microsoft Most Valuable Professional (MVP) for four consecutive years.

And a word from our sponsors...

SharePoint 2010 Web Parts in Action