Saturday, July 30, 2011

SharePoint 2010 TroubleShooting Tips

The saying goes 'to Err is human', with this in mind Microsoft had made commendable improvements on the instrumentation side with SharePoint 2010, by shipping a slew of features and tools for developers and admins as well. Now the task of uncovering those mysterious bugs and performance bottlenecks, inadvertently got in during the development phase, is a breeze. Let me show you how these new features\tools is going to save you from the intricacies of debugging hard to find bugs in SharePoint 2010. Here I will be discussing on the following tools\features.


1. Developer Dashboard
2. Using SPMonitoredScope with Developer Dashboard
3. Demystifying Correlation ID
4. Using ULSLogViewer and SPDiag.exe
5. WSS_Logging
6. Setting Debug Flag
7. Attaching Debugger during run-time
8. Using SPDisposeCheck

Developer Dashboard
If you are a SharePoint developer moving from MOSS (2007) to SharePoint 2010, you are definitely going to appreciate this new feature called 'Developer Dashboard' introduced with SharePoint 2010. This enables you to have a run down of all the operations in a particular page request, including page execution time, execution time of each HttpHandlers, Web parts, database queries and stored proc names. Here is a screen shot of how the developer dashboard will look like in your browser. In short this feature, allows you to trace down the code\component which is behaving unusual. You can click the image to view in its original size. 

Fig -1

Now let me show you how to get the 'Developer Dashboard' visible on your page. First of all this feature is disabled by default, you have to enable this either through Server Object Model or by using commands from 'stsadm' and 'PowerShell'. 

For those new to PowerShell, let me have a word on this. With SharePoint 2010, Microsoft has associated PowerShell which is a versatile, powerful and extensible command line shell, which goes beyond the boundaries of vanilla command line tools. Moreover the existing 'stsadm' will be replaced by Powershell sometime in future. I would recommend learning PowerShell which will be worth the time and effort, looking at the rich set of features it offers

So coming back to the point, enabling 'Developer Dashboard' in your SharePoint site. First I am going to show you how to get this done with 'stsadm'. Before this, make sure that you are running the Command line window as farm admin.


Stsadm –o setproperty –pn developer-dashboard –pv ondemand 


After executing this command you need to login to a SharePoint site as site collection owner. In the site you should see a new icon on to the top right hand side of the page like the one below. 

Fig -2

Clicking on that should toggle the 'Developer Dashboard' on your current page as shown in Fig-1. You can turn it off with the following 'stsadm' command.


Stsadm –o setproperty –pn developer-dashboard –pv ondemand 


Enable Developer Dashboard using PowerShell:
The following command is a single line command, so make sure to take out the line breaks if you are copying from here.

[Microsoft.SharePoint.Administration.SPWebService]::ContentService.DeveloperDashboardSettings.DisplayLevel =
 ([Enum]::Parse([Microsoft.SharePoint.Administration.SPDeveloperDashboardLevel],“OnDemand”));

Disable Developer Dashboard using PowerShell:
The following command is a single line command, so make sure to take out the line breaks if you are copying from here.


[Microsoft.SharePoint.Administration.SPWebService]::ContentService.DeveloperDashboardSettings.DisplayLevel =
([Enum]::Parse([Microsoft.SharePoint.Administration.SPDeveloperDashboardLevel],“Off”));

Enabling Developer Dashboard using Server Object Model from .NET Code:


public void EnableDD()
{
  SPDeveloperDashboardSettings DDSettings = new SPWebService.ContentServuce.SPDeveloperDashboardSettings;

  DDSettings.DisplayLevel = SPDeveloperDashboardLevel.OnDemand;
  DDSettings.TraceEnabled = true;
  DDSettings.Update();
}


Disabling Developer Dashboard using Server Object Model from .NET Code:


public void DisableDD()
{
  SPDeveloperDashboardSettings DDSettings = new SPWebService.ContentServuce.SPDeveloperDashboardSettings;

  DDSettings.DisplayLevel = SPDeveloperDashboardLevel.Off;
  DDSettings.TraceEnabled = false;
  DDSettings.Update();
}

SPMonitoredScope 
You could unleash the true potential of 'Developer Dashboard' when used with 
SPMonitoredScope class. This class helps you to monitor performance and resource usage for a specific code block. Say you notice a degradation in performance  in a page containing a webpart developed by your team. After going through the code, you suspect a specific method block which seems like the culprit behind this. In such scenarios you could warp the suspected code block\method inside the SPMonitoredScope class, which will provide you with details on resource usage, performance bottlenecks and on how the component interacts with other components. When you wrap a code block inside the SPMonitoredScope, the statistics are written to the Developer Dashboard and to ULS (Unified Logging Service) logs. So here's how to get that done.

using (new SPMonitoredScope(“CodeMonitor_001”))
{
   SuspectedCodeBlock(); 
}


if you wish to collect the code statistics only when the number of requests exceed than the required number of requests or the time taken to process the requests exceeds the a specified number of seconds; in such scenarios you could use the following overloaded form of the SPMonitoredScope class.


using (new SPMonitoredScope("CodeMonitor_001",
                             TraceSeverity.Verbose,
                             2000,
                             new SPRequestUsageCounter(5),
                             new SPSqlQueryCounter()))
{
    SuspectedCodeBlock();
}


The above code block will flag a critical event, if the request takes more than 2 seconds to complete or the number of requests goes beyond 5.


Correlation ID
Truth to be told, when I started with SharePoint development seeing the screen shot as the one shown below was a nightmare, as I couldn't infer any clues from those error message and even couldn't comprehend what this Correlation ID was? Can you infer anything thing from this screen shot? certainly not! 


So what is this Correlation ID? Well Correlation ID is a GUID token generated for each and every request received by the SharePoint Web Front End (WFE) servers. This ID is passed across to all subsequent operations in response to the request, i.e. if the web request inturn makes a database call, you could trace this Correlation ID in the SQL Profiler too. In short all operations linked to a web request request will have this Correlation ID attached.

So next question is, how to figure out the root cause of an error from the Correlation ID? For this you need to search for the CorrelationID inside the ULS Logs, which is located in the "{SharePoint root}\Logs". Finding the CorrelationID among the huge set of log files may seem like searching for a needle in a hay stack. For this Microsoft is providing a set of tools to help you analyze the ULS logs in a better way. Lets explore those tools to surface the root cause from the Correlation ID.


SharePoint Diagnostic Studio (SPDiag) - This is powerful diagnostic tool to troubleshoot SharePoint 2010 issues. SPDiag diagnosis issues by collecting instrumentation data from ULS logs, Windows Event logs, IIS, performance counters  sharepoint logs, SQL databases and presenting those using preconfigured reports. To find the Correlation ID, first of all you need to download and install the tool from here on to your SharePoint 2010 box. 


1. After this, open the SPDiag application window and create a new project by passing the host name of the sharepoint server. 
2. Provide the farm admin credentials.
3. Take a Full snapshot of the farm.
4. In the search box key in the Correlation ID, which will bring up the message corresponding to the provided correlation id.


The documentation on SPDiag is available here.


ULSViewer - Unlike SPDiag, this utility parses and displays only the ULS log data in a friendly interface which is available as freeware. For your information, this tool is not supported by Microsoft even though its available for download from the Microsoft domain.  In the ULSViewer, open the log file with date when the error occurred, here you will see a column titled 'Correlation' this is where you could spot the CorrelationID. Next to the Correlation column you will find a message column containing the detailed error info.


WSS_Logging - With SharePoint 2010, Microsoft had gone one step further by introducing a logging database, which stores a wealth of instrumentation data on the SharePoint servers and farm. The database reads logs from all front end servers through a timer job. You could also search for the Correlation ID using the following SQL query.


SELECT
          [RowCreatedTime],  
                [ProcessName],  
                [Area],  
                [Category],  
                [EventID],
                [Message] 
FROM
            [WSS_UsageApplication].[dbo].[ULSTraceLog] 
WHERE
            CorrelationId='21AC2020-3AEB-1069-C2DD-08112B30309A'

I hope by now, you should be confident enough to tackle the errors with those cryptic 'Correlation ID'.


If you wish to see the logging improvements shipped as part of SharePoint 2010, here's two articles from the SharePoint escalation team worth reading. Part 1, Part 2.

Debug Flag
Lets look at something simple, which lets you view the error information in the SharePoint page itself, instead of going through the CorrelationID lookup. A word of caution, this should not be done on a production server. Lets see how to set the Debug Flag.


1. Open the directory where you web application is located, which should be "C:\inetpub\wwwroot\wss\VirtualDirectories\". 
2. Open the web.config file.
3. Locate the entry "CallStack", set the value to "true"
4. Locate the entry "CustomErrors", set the 'mode' attribute to 'off'


Now going to the page, where the Correlation ID showed up should display the classical ASP.NET YSOD (Yellow Screen Of Death) with detailed error info.


Attach Debugger:
With VS.NET 2010 you could easily debug the SharePoint features by putting a break point in your code and pressing F5 as you do for a normal asp.net application. But there are scenarios where the code you want to debug might not get executed straightaway like Event receivers, timer jobs etc, in such cases the best approach is to add the following line of code where you wish the set the break point.


Debugger.Launch()


Executing the above piece of code will cause the 'Attach Debugger' window to show up, to which you could attach VS.NET and debug as you do normally.




SPDisposeCheck
During development chances are that you might miss out server objects like SPSite, SPWeb from properly disposing, which could end up hogging the server memory in the log run. Did you know that, each instance of SPSite and SPWeb contains a reference to an SPRequest object that, in turn, contains a reference to an unmanaged COM object that handles communications with the database server. So as to prevent the leftover COM instances from accumulating in the memory, Microsoft had come up with an excellent command line utility for verifying your code against a set of best practices like, whether the code had disposed all  objects implementing IDisposable interface. It also verifies the code for 'Do No Dispose' patterns like certain objects which are internal to SharePoint should not be disposed, like the ones coming under SPContext.Current context. After executing the SPDisposeCheck.exe against your assembly\executable, a report will be generated listing out the issues identified. Chances are that you might find false positives too in the report. 


You can download this utility from here. A Best Practices documentation is available on MSDN, on how to Dispose SP2010 Server Objects.


Its recommended to integrate SPDisposeCheck.exe with VS.NET so as to analyze your assemblies without switching to an external console window. Here's an article that details on how to get this done.



Conclusion
SharePoint being a vast product, brings in challenges for the developer and administrators on effectively extending and maintaining the product in respect to the business requirements. Here's a resourceful document which I came across while browsing, detailing things like how to get most out of SharePoint features and services and how to fix problems that might arise when using SharePoint 2010. Here's the link to the document.

Tuesday, July 26, 2011

Cleared MCTS 70-573

Today was a landmark day in my career, after achieving the Microsoft Certified Technology Specialist (MCTS) certification in 'SharePoint 2010, Application Development (70-573)'. I believe the certification would act as a testimony of my skills in SharePoint 2010 application development. 

Before opting out for the certification, the thought that prevailed my mind was, nowadays majority of the certified folks are wholly relying on dumps to get through, which is not at all fair, if they are just cramming the answers without actually understanding the objective behind these certifications. This being said I was sure on one thing, getting certified is not going to make me stand out from the crowd because of all these malpractices. So the question was, would it be worth the effort spending time and money on getting myself certified? After putting down my thoughts on this, I came out with the following set of points, which rationalize's on, why one should opt for certifications.
  1. If you are seriously preparing for certification, you will be covering the breadth and depth of the syllabus, than just skimming though the basics. So preparing seriously by spending quality time and effort is definitely going to pay off both in terms of monetary and non-monetary aspects. Non-monetary aspects like giving you an edge over others in terms of knowledge and boosting your confidence level. 

  2. Suppose if your company is a 'Microsoft Gold Partner', which stipulates a minimum number of certified professionals to retain their Gold Partner status or a client who wants all the team members to be certified who's going to work on their projects. In such cases, those certified is going to get an upper hand over non-certified ones.

  3. If you wish climb up the organizational ladder, your qualifications and certifications is definitely going to be counted as one among the many parameters for appraisals and promotions.

  4. I you wish to showcase your technical competency in Microsoft 
    products\solutions which no *dumps* certified individual can catch up with. For those creamy geeks, Microsoft had rolled out two different certifications which is considered as the 'creme dela creme' in Microsoft parlance, under the title 'Microsoft Certified Master' (MCM in short) and 'Microsoft Certified Architect' (MCA in short) which is the last word in Microsoft Certifications at the time of writing. Those awarded with these certifications are tagged as the Gurus in IT industry. So to be frank, if you want to be a MCM in a Microsoft product, the stepping stone to an MCM in a vertical, is going to be the lowest denominator certification available for that particular product\solution, like what I achieved today. 

So after evaluating the aforesaid points. I came to see that point 1 and 4 was particularly more relevant and sensible, which made me to go for it.

Sunday, July 24, 2011

SharePoint 2010 Best Practices

Microsoft has published a set of articles covering the Best Practices for those into planning, designing and architecting SharePoint 2010 solutions. These articles prepared by a group involving Microsoft Certified master(MCM's) and those from Microsoft SharePoint team, gives you insight on deploying, design and operating an enterprise level SharePoint environment. Click here to view the articles.


If you wish to see newly published articles for SharePoint Server 2010 by Microsoft TechNet, click here to view the list. 

Words Of Wisdom By Warren Buffet

I came to read an article by honcho of Berkshire Hathaway. I would say its a must read for everyone including entrepreneurs, looking out on how to be financially secure especially in times of a turbulent world economy.

(Click to view in original size)

Saturday, July 23, 2011

Exploring IIS7

While working on URLRewriteModule to route all HTTP requests to HTTPS. The very first solution that came to my mind was to develop an 'HttpModule' to handle all the redirection stuff. For this I wrote an custom HttpModule in C#.


//Inside HttpModule
public void OnBeginRequest(Object sender, EventArgs e)
{
   HttpApplication HttpApp = (HttpApplication)sender;
   string HttpUrl = HttpApp.Request.Url.ToString();
   if (!IsSecureRequest(HttpApp.Request)))
   {
     HttpUrl = HttpUrl.Replace("http:", "https:");
     HttpApp.Response.Redirect(HttpUrl.ToString(), true); 
     HttpApp.Response.End();
   }
}

private static bool IsSecureRequest(HttpRequest request)
{
   bool HTTPSServerVar;
   bool RequestIsSecure;

   HTTPSServerVar = String.Compare(request.ServerVariables["HTTPS"], "on", true) == 0;
   RequestIsSecure = request.IsSecureConnection;

   return (HTTPSServerVar | RequestIsSecure);
}

//Web.Config changes

<system.webServer>
<modules>
<add name="urlrewriter" type="HTTP_TO_HTTPS.redir" />
</modules>
</system.webServer>


After testing the solution I was about to deploy it to staging server. So as to avoid pitfalls I rang up our solution architect to get inputs on, performance and security related stuff on my custom HttpModule. His feedback almost made me to scrap my custom HttpModule, the reason being Microsoft had come up with a URLRewrite module for IIS which could be downloaded and installed on an IIS machine. Moreover this module delivers the same functionality which I was trying to implement using custom HttpModule. While the best thing with Microsoft URLRewrite module is that, you could achieve HTTP to HTTPS redirection just by adding rule entries to your applications web.config file. Here's how to get this done.

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="off" ignoreCase="true" />
  </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>


Exploring IIS 6/7 Request Pipeline:
Out of curiosity I decided to dig into the internals on how IIS6/7 hands HTTPS requests. Sometime back I heard that IIS is handling HTTP requests at the kernel level. After going through MSDN I was amazed to find that, with IIS 7 the way HTTPS requests were handled where completely revamped when compared with IIS 6. Let me first show you how SSL requests were handled in IIS 6.

 IIS 6 - HTTPS Request\Response pipeline:
1. Encrypted request received from client by the OS. (Kernel Mode)
2. A kernel mode driver HTTP.SYS accepts the encrypted request. (Kernel Mode)
3. HTTP.SYS passes over the encrypted request to HTTPFilter to decrypt. (User Mode)
4. HTTPFilter passes the decrypted request back to HTTP.SYS. (Kernel Mode)
5. HTTP.SYS forwards the decrypted request to IIS->W3WP.exe (User Mode)
6. HTTP.SYS receives the processed response comes back from IIS->W3WP.exe (Kernel Mode)
7. HTTP.SYS passes on the response to HTTPFilter for encrypting (User Mode)
8. HTTP.SYS receives the encrypted response from HTTPFilter (Kernel Mode)
9. HTTP.SYS sends out the encrypted response back to client (Kernel Mode)


In the above HTTPS request processing you could see that, a context switch is happening between the kernel mode(HTTP.sys) and user mode(HTTPFilter  i.e.   HTTP SSL windows service) for decrypting and encrypting requests. Which is  very expensive and could lead to poor performance under high loads. So as get this resolved, IIS 7 had taken a new approach while handling SSL requests.


 IIS 7 - SSL Request\Response Pipeline:
1. Encrypted request received from client by the OS. (Kernel Mode)
2. A kernel mode driver HTTP.SYS accepts the encrypted request. (Kernel Mode)
3. HTTP.SYS decrypts the request using SChannel. (Kernel Mode)
4. HTTP.SYS forwards the decrypted request to IIS->W3WP.exe (User Mode)
5. HTTP.SYS receives the processed response comes back from IIS->W3WP.exe (Kernel Mode)
6. HTTP.SYS encrypts the response using SChannel. (Kernel Mode)
7. HTTP.SYS sends out the encrypted response back to client (Kernel Mode)


Here you could see that the context switching for request\response encryption is now taken care of in the Kernel Mode itself using SChannel (Secure Channel). This makes IIS 7 more robust when it comes to serving pages under heavy load.


Friday, July 22, 2011

.NET Decompilers

I was a hardcore fan of .NET Reflector; but the moment Red-Gate acquired and commercialized .NET Reflector, I had to look for alternatives, but couldn't find anything similar at that time. Meanwhile Red-Gate trying to save their face recently announced in their forum, those using Reflector 6 wont be forced to upgrade to the latest version of the .NET Reflector, this means developers sticking with the freeware version wont have access to the bug fixes as well as to new features introduced with the future versions of .NET Reflector.

In the mean time, .NET open source community(SharpDevelop) had kick started a new project as an alternative to .NET Reflector under the title ILSpy. The best thing with ILSpy is that, first of all its open source and the source code is available for you to download and study or to contribute. The short coming I came to notice with ILSpy was that, unlike .NET Reflector it lacks those rich plugins which were available with .NET Reflector. I believe these short comings is going to be filled up by the community, in the upcoming versions of ILSpy. Here's a video demonstrating the features available in ILSpy.


(To watch this video in Youtube, right-click the video and select 'Watch on Youtube')

There's a good news for Re-sharper 6 users. Jet brains is shipping an integrated .NET decompiler, which provides similar kind of functionality by .NET Reflector Pro, also there's a good news for non-resharper users. Jet brains is giving out a standalone version of their decompiler as freeware, you can downloaded the freeware version of the decompiler from here.

I think the acquisition of .NET Reflector by Red-Gate in fact had opened the doors for  the open source community to come up with ILSpy, which I believe is going to evolve as a robust product at a faster pace than .NET Reflector, the prime reason being its open source. I request you to provide your valuable feedback and suggestions on ILSpy in their forum

Thursday, July 21, 2011

See How SharePoint Makes Teams Work Smarter

Microsoft had come up with an exclusive site for decision makers and information workers to experience, how SharePoint solutions could transform their offices into  smarter work places. The site is well backed with videos like 'How-to', 'True Stories' and also with an SharePoint adoption kit which imbibes the message of making life easier with SharePoint 2010. You can visit the site by clicking over here

SharePoint Virtual FileSystem

Having worked with ASP.NET Web applications, I was quite familiar with the ASP.NET request pipeline architecture. But after stepping into SharePoint development I came to notice that, in SharePoint the aspx page names displayed in the URL weren't physically present in the SharePoint Root ("%Program Files%\Common Files\Microsoft Shared\Web Server Extensions\14") directory. I tried searching the entire disk for the filename, but nothing showed up in the search results. Seeing this, I got curious on how this works, because this is the first time I am seeing an ASP.NET page served from nowhere, which I felt kind of mysterious.

After a brief search my mysterious situation went up in flames, because those asp.net(.aspx) pages which I was curiously searching for were actually stored in the SharePoint Content database and not on the filesystem. For me this was something new which was previously unheard of in ASP.NET development.

So by now my curiosity got to new heights like, how come an aspx page be served from a database, how does this thing work? This time the search results took me to msdn page, which reveals about a new class called VirtualPathProvider which was introduced with ASP.NET 2.0. The class provides the Virtual FileSystem functionality for asp.net web applications, I believe this class was developed primarily for meeting the SharePoint team requirement of abstracting aspx pages to datasource like SQL Server. If you wish to know more about VirtualPathProvider visit this link.


Friday, July 15, 2011

SharePoint 2010 Books

When I started with SharePoint 2010 the very first problem I faced was identifying good books on developing applications for SharePoint 2010. Being completely new to SharePoint development, I was looking for books which could guide me step by step all the way from, Installation to intermediate development tasks and thereafter to advanced topics. I was pretty much sure that there wont be a single book covering all the way from novice to expert level.  So I had to turn to Amazon for books on SharePoint 2010, after a brief search I zeroed in on some after going through customer reviews and sample chapters of these books available at Google Books.


Beginning SharePoint 2010 Development: I would recommend this one for those who are completely new to SharePoint 2010 development. The book starts with basics like 'SharePoint developer tools' and takes you to high level topics like 'BCS' and 'MS Office integration'. The plus side of this book is that, it details tasks in step by step manner, which is highly appreciated for someone new to SharePoint 2010. While the downside is that, it didn't cover the installation and configuration part at all which I was highly expecting for a book targeted for beginners. By the way, while trying out the samples I had to troubleshoot most of those to get it running, for this I had to spend considerable time searching the net for solutions. I would say the troubleshooting sessions actually helped me to learn something new, which I think was a blessing in disguise.

The book covers topics only at a shallow level, so never expect to jump start  straight into SharePoint 2010 development after going through this book. If you wish to view the Table Of Contents, click here.


Inside SharePoint 2010: I would say this is the ultimate one, if you wish to have a in-depth understanding of SharePoint 2010. The book is actually packed with core stuff with no page to skim through as I did with while reading 'Beginning SharePoint 2010 Development'. With this book, you fill find yourself spending more time to grasp whats covered in each page. This book is best for those, who HAVE prior experience with SharePoint development. The reason why I wouldn't recommend for beginners is that, you wouldn't find a step by step walk through for any specific sample covered in this book. If you are planning opt for SharePoint 2010 developer certification, its better to go through this book, as chances are you would find definitely something new which no other book had covered there by giving you an edge over others.

Its better to prepare notes while reading this book, as you would find lot many crucial points and common pitfalls, which you could use as a reference at a later date.


Tuesday, July 12, 2011

The efficient way to share code snippets

Being a developer its not unusual to find yourself mailing code snippets to your colleagues or friends who might have rang up for help with their coding chores. So after Googling or trying out some samples you might straight away mail him the code, which is perfectly  acceptable at that point of time. 

Me too was doing the same thing while sending code snippets to my friends. One fine day, I encountered the same scenario which I had happened to solve for a friend of mine some weeks back. I remember the code was around 100 plus LOC with some hex values and bitwise ops. I was reluctant to code that again so I started searching in my send mail items, unfortunately I had deleted that mail from my send items as well as from the outlook recycle-bin; to make matters worse, calling my friend to whom I had send the mail was not reachable. It was like Murphy's law in action, after which I had to reinvent the wheel by coding all those again from scratch.

So as to find a solution to this, I turned to Google which ended up with Gist a handy feature crafted for the very same purpose by GitHub. The best thing with Gist is that its free and you could share the code snippets by sending the hyperlink to your friends. Before sharing your code snippets, create an account for yourself so that you can come back and see those code snippets shared by you; not only that the code snippets shared using Gist is indexed by search engines, which might help others too from reinventing the wheel.

Google Plus

Finally the stage has set for the next biggest 'Clash of the Titans' involving Google and Facebook. Its seems like Google has no plans to give up, even after repeatedly failing with products targeted towards the collaboration and social networking fronts like Orkut, Buzz, WaveFriend Connect and Latitude

I believe by this time Google had learned the tricks of the trade the hard way from their past failures; this should be the reason why Vic Gundotra had decided to take his brain child's(Google Plus) maiden voyage right into turbulent channel where Facebook had been ruling for the past couple of years without any rivals as such.

Its seems like the Google+ is the fastest product I had ever seen to go from beta to live in a matter of months. If you are a frequent Googler (I mean who uses Google Search) possibly you might have noticed some new icons with "+1" in search results and the main google search page's top link color changed to something dark. All these were the stepping stones towards the next major outcome from Google under the title "Google Plus".

So for the first time when I logged into Google Plus, to me it felt more or less like a revamped Facebook. Everything seemed to be like Facebook except for the circles feature. This was my very first impression, but the moment I started exploring G+, it seemed like there was something more out there than what I saw at first.

The 'Circles' feature in G+ is going to be the most applauded feature in G+. This pretty cool feature lets you to group your friends into circles, there by isolating the activities inside the circles from others. Without this, just think how annoying it would be let your family members or boss viewing your posts you had with your close friends. This bring you a whole lot possibilities to restrict posts from viewed by others. Definitely a boon to those privacy loving chaps. I would say this is one thing Facebook is dearly missing, you can't hide any posts from any of your members, in such cases one had to depend on messages that too wouldn't work if the number of people you are trying to contact is pretty long. So by this time Facebook might have started working on something similar.

The very next feature I liked the most is the 'Sparks'. This is more or less a kind  of subscribing to a feed, but here the catch is you need to just key in your area of interest and the rest is taken care of by G+. All your 'Sparks' show up in the page like small article snippets fetched from popular sites.

Google has taken due care to get their G+ into the mobile platforms with Android users being the first to get a hands on experience with G+ on their mobiles, while for iPhone users the G+ apps are still under development, which might hit the apps store in a month or so.

So whats in for developers?. As per Google, they had put developers on wait mode as said in this page. Once the APIs are out, its going to a shower of G+ apps. The entrepreneurs are keenly watching this space on how to profit from Googles new initiative.


By the way here's something which I was expecting with G+.

There's no way you could restrict others from adding you to their circle. What I did to get over this was; I created a Circle named 'Strangers' and moved those to that circle, now all the strangers together in a secluded room of their own. To me the Facebook way of friend request is better than this one, which gives you the choice to accept or deny those requests.

The fonts really look bigger when compared to the once in Facebook. This bigger fonts eats up the screen space, ending up with lot many scrollable content and only few in the visible area.

Then the other feature I was looking out was setting 'Disable Reshare' by default in specific 'Circles', which would prevent from sharing the contents of my post in his\her Circle.

The very feature they had missed out is integration with Google Calendar and Google Docs which unfortunately I couldn't find any options for this in my G+ page. Just think of the how nice it would be to have Calendars and Docs shared with some of your members in a specific circle.

To conclude, I would say Google isn't that late into this Social networking arena dominated by major players like MySpace, Facebook, LinkedIn et al. Even now Social networking is in its infancy like Internet was in 90's, there's still lot to explore and innovate in Social Networking arena with more and more people using the Internet as never before. Well wait and watch how things are going to turn out this time for Google and also don't forget to tap out the vast business opportunities laying ahead in this sphere.


Thursday, July 7, 2011

SharePoint Tutorials

I was overwhelmed by the number of SharePoint 2010 training videos available out there in the net and that too free of cost. The best thing about these videos are, most of them are from Microsoft itself and hosted by sites like Channel 9 and Technet. The contents of these videos are of exceptional quality, with SharePoint veterans themselves as hosts.

So if your are new to SharePoint or looking to upgrade your skills from SharePoint 2007, then I would highly recommend to go through these videos, as it will gives you better insight from a developer point of view, as well as on the new set of  features introduced with SharePoint 2010. So go head and get ready to update your skill set arsenal.

SharePoint 2010 E-learning clinic - Grab this one first as this offer is only for a limited period.  These resources can help you improve your technology and job-role skills and help you earn certifications that are highly valued by employers.

Learning SharePoint 2010 Development - This is the most comprehensive set of videos released by Microsoft which guides you right from 'Getting Started' to Advanced topics like enterprise search.

SharePoint 2010 Developer Training Course - This set of videos are targeted for developers for those with basic understanding of Microsoft Office, SharePoint and using Microsoft Visual Studio.

P&P SharePoint 2010 Guidance - Do visit this link, if you are looking out to sharpen your SharePoint 2010 skills with the best practices in the industry. Here in this page 'Developing Applications for SharePoint 2010' you can download an e-version which includes a written guide, eight reference implementations, source code for a resuable library, and 25 How-to topics.

'SharePoint How To Videos' - If you are moving from SharePoint 2007 to SharePoint 2010, this one is a must to see set of videos, which shows you how to leverage the new set of features and how to get things done in SharePoint 2010.


Yaroslav Pentsarskyy's SharePoint 2010 videos - If you want to dig into more advanced topics like branding, FAST Search, Ribbon et al. These free web casts should definitely quench your thirst. 

Here are some more links especially for those looking to master the craft


Video Tutorials for IT Pros







Hope you find the tutorials informative.

Wednesday, July 6, 2011

Quality educational content at your fingertips

In a densely populated country like India, where quality education is still outside the reach of millions especially those in the rural areas, where one could hardly find a school even with the basic amenities. The case is not so different in the urban areas, where students are being charged astronomical fees, and at the same time not delivering the quality education as promised. The reason being, education is seen from the business stand point with top priority being 'profit from it' and not on the age old way, where the Guru(teacher) and his deep rooted knowledge on the subject was considered to be of paramount importance in those times.

Fortunately many of the world renowned institutions like MIT, IIT, IISc had voluntarily started to publish their courses(lectures) to the internet. This had literally opened up a whole new realm of possibilities in the educational sector, where the lines got blurred between the genius and common student, in terms of accessibility to quality education. I believe information of this sort should be made available to those employed in the educational sector, which could eventually help to build a nation of our dreams prevailing with peace, prosperity, unity and power.

Here are some links on specific subjects which I came across while trying to help a friend of mine with his college chores.

Khan Academy -  A library of over 2,400 videos covering everything from arithmetic to physics, finance, and history and 125 practice exercises, we're on a mission to help you learn whatever you want, whenever you want, at your own pace and that too free of cost.

MIT Open Courseware - MIT OpenCourseWare is a free publication of MIT course materials that reflects almost all the undergraduate and graduate subjects taught at MIT. To explore the different courses available, you can see by clicking on the 'Courses' link.

Practical Chemistry - This site provides all teachers of chemistry with a wide range of experiments to illustrate concepts or processes, as starting-points for investigations and for enhancement activities such as club or open day events. It also enables the sharing of skills and experience of making experiments work in the classroom. Lots of information for technicians too.

Practical Biology -  provides teachers of biology at all levels with experiments that demonstrate a wide range of biological concepts and processes. The website also promotes the sharing of skills and experiences of making experiments work in the classroom, and includes information and guidance for technicians.


Practical Physics - This website is for teachers of physics, enabling them to share their skills and experience of making experiments work in the classroom.

PUMAS - Practical Use of Maths And Science an initiative by NASA. The website contains a collection of brief examples showing how math and science topics taught in K-12 classes can be used in interesting settings, including every day life.

Lectures from IIT\IISc - A Govt. Of India initiative on E-learning through online Web and Video courses in Engineering, Science and humanities streams. The mission of NPTEL(National Programme on Technology Enhanced Learning) is to enhance the quality of Engineering education in the country by providing free online courseware.

If you come across resources of this kind, please drop me a comment on that. I will be updating the post with your inputs.


Tuesday, July 5, 2011

Good News for .NET Reflector Users

The good news is that, Red-Gate had bowed down to the developer community request by making .NET Reflector v6 available free of cost. It was a sigh of relief, when I came to read about this in their forum

If you have ever used this tool for debugging applications, I would say this is something which any ace .NET developer couldn't live without. It is that crucial from a developers point of view, especially while trying to pin point the root cause of hard to find bugs.

While the bad news is that, Red-Gate has released .NET Reflector v7 with lot of enhancements and bug fixes. For those sticking with the v6 is going to miss all those goodies packed with the new commercial version. 

I was thinking, if the productivity gain from using .NET Reflection is that good, then why not shell out some bucks to get a copy for myself as its only 30$ per dev box. Seems like marketing guys had priced it appropriately to get us hooked. 

Anyhow lets hope, one day Red-Gate is going to make .NET Reflector available as free download, once they recover the expenses incurred in acquiring the tool from Lutz Roeder'sTill then happy debugging...

Monday, July 4, 2011

Microsoft User Group Meet

Its a pleasure for me to invite you for the forthcoming Kerala - Microsoft User Group meet to be held on 9th July 2011 at Orion India Systems, 2nd floor, Tejomaya, Info park. At this event, I will be speaking on 'SharePoint 2010 Programming'. My session will be targeted for those who are new to SharePoint 2010 Development or wish to have a sneak preview of what SharePoint is all about(in short).

Well here's the agenda for the event.



09:30 - 09:40 Community updates
09:40 - 10:40 C# Test Automation by Praseed
10:40 - 11:20 Silverlight - Prism by Mahima
11:20 - 11:40 Tea Break (15 min)
11:40 - 12:30 Sharepoint 2010 programing by Abraham
12.30 - 01:00 Ask the experts

For registration and other details, you can check out here at the K-MUG site. I hope to see you at the event; till then happy coding!!!




Friday, July 1, 2011

Whats New In SharePoint 2010 SP1

This week Microsoft had released SharePoint 2010 SP1 with pretty good number of enhancements on stability, performance, and security fronts. With SP1, there's a reason to rejoice especially for the SharePoint Admins than for the developer community, as majority of the updates are specific to administration side. While on the developer front there's not much except for the Performance Point Server, improved browser support for OWA and support for Open Document Format. Here are some of the new features shipped with SP1.


  • Site Recycle Bin - Definitely a blessing to SharePoint Administrators as well as for Site Collection admins, who could now recover deleted site collections or site's without restoring the entire content database. The 'Site Recycle bin' provides the same 'Recycle bin' functionality as for Lists, Libraries and Documents.

  • Shallow Copy - This feature minimizes the SharePoint admins task of moving sites from one content db to another especially with BLOBs (Binary large Objects) data. BLOB data involves files like DOC, PPT, XLS etc, which are stored external to the content database. With 'Shall Copy' the time required to migrate content databases could be significantly cut down, as the admin's only need to update references to these objects in the destination db.

  • StorMan.aspx (Storage Space Allocation) - A page which was taken out from SharePoint 2010 on performance grounds. Here is a link that details on what made Microsoft to do so.  The page helps one to identify the contents(files based on size) in a site which is accessed the most. This helps one to take out contents which are no longer accessed, so as to better manage contents within the assigned quota. The good news is that SP1 is putting back the StorMan.aspx to SharePoint 2010.

  • Enhanced Office Web Applications (OWA) - With SP1, interacting with online versions of Word, Excel, Power Point and OneNote through browsers like IE9 and Google Chrome has been considerably improved. Moreover support for Open Document Format too has been heightened.

  • Cascading Filters - SP1 had introduced 'Cascading Filters' for Performance Point Server. This helps to eliminate the task of going through numerous items in a dashboard, by configuring dashboard filters which are connected to another. This is what 'Cascading Filters' are all about. Click here to know more on this.

  • Storage enhancements - When SP2010 was released the official spec on the size of the content database was limited to 200GB. Now the bar has been raised to 1TB.

  • Cumulative Updates - The SP1 comes with all cumulative updates for SharePoint 2010. So for those who are yet to update can get all this in a single go.

  • RBS Provider for SP2010 - Finally Microsoft had come up with their own version of RBS BLOB Provider for SharePoint 2010. With this you could store voluminousness data outside the content database, like inside SAN/NAS boxes.

To get an complete list of fixes and improvements to existing functionality that are included in SharePoint Server 2010 SP1 and SharePoint Foundation 2010 SP1, you can refer to this document. By the way Microsoft had published some known issues with SP1 make sure you go through this link before going with the upgrade and finally, if you wish to view the list of product fixes shipped with SP1 click here for detailed list.