Friday, May 23, 2014

SharePoint Search Service Permissions

Configuring Search in SharePoint 2013 can be a tricky process that is best accomplished via PowerShell scripts. For starters, those messy database names with GUID's in them that get created from UI provisioning are just hideous, but the real issue is that a proper topology (meaning search components running on more than a single machine) can only be deployed via PowerShell cmdlets. Despite our best efforts to script the entire process and avoid the kind of small mistakes that lead to endless hours of frustration, it's inevitable that some small setting or configuration step will crop up that creates a giant headache.

Take, for example, the new "SPSearchDBAdmin" role. This role, which didn't exist in 2010, is added to each search database when it is created in SQL server. If you are following best practices and assigning service accounts for search operations (one for administration, one for crawling, and neither should be the SharePoint Farm or Admin accounts), the account you assign as the Search admin will be added to the SQL logins and given the "public" role. That's all well and good for least privileged purposes but that role alone is insufficient for the Search application to function. Unfortunately, there's no warning about this when the Search service application is created – provisioning will succeed but nothing really works. In order to kick Search into gear, you first need to assign the "SPSearchDBAdmin" role to the Search admin account in SQL server.

The SPSearchDBAdmin role in SQL Server Eric Shupps Eric Alan Shupps eshupps @eshupps SharePoint Cowboy BinaryWave SmartTrack
Assigning the SPSearchDBAdmin Role in SQL Server Management Studio
Also bear in mind that the Search admin account requires read/write permissions to the folder in which the index files reside. As this account should *not* be a local administrator it's very likely that it won't have access to the folders that hold the primary and replica index files. Be sure to assign the appropriate permissions on each server in the topology which contains an index partition (the default location is "C:\Program Files\Microsoft Office Servers\15.0\Data\Office Server\Applications" which, ideally, should be changed as part of the provisioning process). Possible error messages which indicate your search admin account may not have the correct SQL or folder permissions include:

"Content Plugin can not be initialized - list of CSS addresses is not set."
"Unable to retrieve topology component health states. This may be because the admin component is not up and running"
"Topology activation failed. No system manager locations set, search application might not be ready yet"
"Could not access the Search database. A generic error occurred while trying to access the database to obtain the schema version info."

There are a lot of blogs, forum posts, and articles with all sorts of advice on how to deal with these errors, most of which prescribe repetitive un-provisioning and re-provisioning of service applications. Although those solutions may apply to your environment at some point, before going down that road first ensure that the Search admin account has the proper database and file permissions, as no amount of provisioning will overcome basic security limitations.

(Note: For a good walkthrough on Search provisioning via powershell, refer to this post from Ryan Bushnell and the Search cmdlet reference on TechNet)

Eric Shupps Eric Alan Shupps eshupps @eshupps SharePoint Cowboy BinaryWave SmartTrack 
Take the trouble out of troubleshooting.  
Improve service levels and avoid downtime with
SmartTrack Operational Analytics for SharePoint
 


Articles

Ten Steps to Optimize SharePoint Performance by Eric Alan Shupps


Webcasts

Eric Shupps - Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Creating End User SharePoint Solutions for Performance and Scalability by Eric A. Shupps
SharePoint 2010 Performance Enhancements for Administrators with Eric Shupps
Microsoft SharePoint Server 2010 for the ASP.NET Developer
Eric Shupps on Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
SharePoint Performance and Capacity Planning Essentials from Eric Alan Shupps
Eric Shupps on Troubleshooting Common Performance Problems in SharePoint 2010


Videos

Channel 9 Interview with Eric Shupps
SharePoint TechTalk - Different Views on Social Computing
Eric Alan Shupps talks SharePoint Post-Deployment Planning and Management


Podcasts

SharePoint Pod Show - Design for Performance eith Eric Shupps
SharePoint Pod Show - Test Driven Development with Eric Shupps
Run As Radio - Eric Shupps Improves SharePoint Performance


Social

Eric Shupps - ConferenceHound
Eric Shupps on Talk TechNet
Eric Alan Shupps on Channel 9
Planet SharePoint Eric Shupps profile
Eric Shupps Lanyrd
Eric Shupps MVP Profile
Eric Alan Shupps About.me
The SharePoint Cowboy Tumblr
Eric Shupps on Speakerfile
Eric Shupps - Facebook
Eric Shupps LinkedIn Profile
Eric Shupps Google+
Twitter - @eshupps


Sunday, August 04, 2013

SSL and Empty SharePoint People Search Results

The great thing about SharePoint Enterprise Search is that once it's up and running it mostly just works. Except, of course, when it doesn't. Recently I was troubleshooting a farm in which People search stopped returning any results. In this environment, the main OU containing user accounts had been moved and a new profile import run to re-populate the profile database. The import was successful but the changes required a full crawl of the content source which had been working just fine up until that point. After the next crawl completed all queries against the People scope returned an empty result set.

After confirming that none of the permissions had changed, and that the default crawl account still had access to the User Profile service app and all web applications, another full was run without success. It was during this run that the crawl log displayed the following error for the primary web application (which had probably been there all along but was buried beneath a number of other content-related crawl errors):

An unrecognized HTTP response was received when attempting to crawl this item. Verify whether the item can be accessed using your browser.

A bit of research indicated that this is usually due to insufficient permissions – either the crawl account does not have Full Read permissions set in the web application User Policy or it hasn't been granted the "Retrieve People Data for Search Crawlers" right for the user profile service application. But in this case both sets of permissions were valid. An attempt to connect to the search crawl web service (/_vti_bin/spscrawl.asmx) confirmed this but also revealed something interesting – all HTTP requests were being redirected to HTTPS. Another look at the Content Source in Search Administration showed that the primary web application was, in fact, set up to crawl content via an HTTPS URL.
 
The SharePoint People Search mechanism requires a specific URL format within a Content Source, one that begins with "sps3://" instead of the usual "http://". The site cannot actually be browsed via this URL; instead, it's merely a connector reference that the search crawler associates it with the proper URI under the covers. When a web application is secured via SSL the protocol portion of the URL has to be changed from "sps3://" to "sps3s://" – the "s" letting the crawler know it should use HTTPS instead of HTTP.
 
Eric Shupps Eric Alan Shupps eshupps @eshupps SharePoint Cowboy BinaryWave SmartTrack
Specifying an SSL target for the People search content source

Changing the URL value in the Content Source from "sps3://" to "sps3s://" resulted in a successful crawl and People search started returning results at the conclusion of the next full crawl. So if any of the web applications in your farm use HTTPS by default, be sure to check the Content Source settings to be sure that the search crawler can properly access them.


ArticlesTen Steps to Optimize SharePoint Performance

Webcasts

Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Creating End User SharePoint Solutions for Performance and Scalability 
SharePoint 2010 Performance Enhancements for Administrators
Microsoft SharePoint Server 2010 for the ASP.NET Developer
Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
SharePoint Performance and Capacity Planning Essentials
Troubleshooting Common Performance Problems in SharePoint 2010

Videos

Channel 9 Interview with Eric Shupps
SharePoint TechTalk - Different Views on Social Computing
SharePoint Post-Deployment Planning and Management

Podcasts

SharePoint Pod Show - Design for Performance
SharePoint Pod Show - Test Driven Development
Run As Radio - Eric Shupps Improves SharePoint Performance

Wednesday, February 27, 2013

Wrapping Long String Values in Firefox

I know it's all the rage among web developers to blame IE for everything that's wrong on the Internet but sometimes - just sometimes - the folks in Redmond get it right and the fine volunteers of the Mozillaverse get it wrong.  Perhaps there's no better example of this than word breaking in columns.  For years, IE has had the ever-so-useful CSS property "word-wrap" which, when supplied with a value like "break-word", will split up a long string of text and preserve the precious layout you've slaved for hours to create.  It's so handy, in fact, that it actually made it into the CSS3 spec (don't be a hater - even the standards busybodies know a good thing when they see it).

Unfortunately, Firefox doesn't recognize this property.  Yes, I know it's supposed to in version 3.5+ but I have yet to see it actually working.  I've spent the better part of the last 9 months doing JavaScript programming for SharePoint 2013 apps so I've spent way too much time testing browser compatibility and not once have I seen FF honor this property.  Perhaps there's some secret Little Orphan Annie Decoder Ring trick to make it work - if so, please share it with me but until then we'll have to continue  hacking our way around this ridiculous exclusion in an otherwise fine browser.

A lot of people suggest doing this in CSS like so:

.wrap {
white-space: pre-wrap;       /* CSS3 */
white-space: -moz-pre-wrap;  /* Mozilla */
}

But I've found that solution is spotty - it sometimes works and sometimes doesn't (mostly the latter).  Instead, I prefer to use JavaScript to solve this problem, which eliminates the need for browser-dependent CSS tricks.  Taking, for example, a string that has 20 characters and must fit into a column that only permits 10 characters, the solution would look something like this:

var newstring = oldstring.replace(/([^\s\t\r\n<>]{11})/g, "$1<wbr>");

Or, if you would prefer a hyphen instead of a soft line break:

var newstring = oldstring.replace(/([^\s\t\r\n<>]{11})/g, "$1&shy;");  

Inline replacement is fine but if you end up doing it repeatedly within an application all those Regular Expressions get pretty redundant.  Plus, it would be nice to be able to specify the length as a parameter for a reusable function.  A quick bit of additional code will get us there:

function breakWord(string, length) {
    var reg = new RegExp("([^\s\t\r\n<>]{" + length + "})", "g");
    var s = string.replace(reg, "$1<wbr>");
    return s;
}

We can now call that function on any string we like:

var newstring = breakWord(oldstring,10);
Ah, that's better.  Word breaking for any string in IE and Firefox.  Now, Microsoft, let's talk about all those web pages that don't work in IE10, shall we?  Like, I dunno, just as a random example, SharePoint 2010 dialogs.  How 'bout it?


Articles
Ten Steps to Optimize SharePoint Performance

Webcasts

Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Creating End User SharePoint Solutions for Performance and Scalability 
SharePoint 2010 Performance Enhancements for Administrators
Microsoft SharePoint Server 2010 for the ASP.NET Developer
Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
SharePoint Performance and Capacity Planning Essentials
Troubleshooting Common Performance Problems in SharePoint 2010

Videos

Channel 9 Interview with Eric Shupps
SharePoint TechTalk - Different Views on Social Computing
SharePoint Post-Deployment Planning and Management

Podcasts

SharePoint Pod Show - Design for Performance
SharePoint Pod Show - Test Driven Development
Run As Radio - Eric Shupps Improves SharePoint Performance

Wednesday, November 28, 2012

SharePoint 2013 REST Library

As part of his TypeScript presentation at SharePoint Conference 2012, Rob Bogue had to do a lot of work with the new REST API's for SharePoint 2013 (as we all did).   Not happy to simply sling a bunch of JavaScript and call it a day, Rob took things a step further and created a reference library implementation to make things a bit easier on all of us.

Wiring up a REST query from a provider-hosted app to SharePoint 2013 looks like this if you set up the call and handle results manually:

var executor = new SP.RequestExecutor(appWebUrl);
var reqUrl = appWebUrl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('" + myList + "')/items?$select=Title&@target='" + hostWebUrl + "'";
executor.executeAsync({
 url: reqUrl,
 method: "GET",
 headers: { "Accept": "application/json;odata=verbose" },
 success: function (result) {
  var objData = $.parseJSON(result.body);
  response($.map(objData.d.results, function (item) {
   return {
    label: item.Title
   }
  }));
 },
 error: function (result, code, message) {
  alert(message);
 }
});


Using SP REST, the syntax is much cleaner and easier to read (and if you're using TypeScript you also get full Intellisense support):

obj.list.GetItemsByQuery([
{
   field: 'Title',
   operator: 'eq',
   value: obj.myValue
}]).done(function (items) { //Do Something Here });

Rob is releasing SP REST to the community and is asking for contributors to help take the project forward.  If you're interested, contact Rob via his blog and jump on the SP REST bandwagon.


Articles

Ten Steps to Optimize SharePoint Performance

Webcasts

Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Creating End User SharePoint Solutions for Performance and Scalability 
SharePoint 2010 Performance Enhancements for Administrators
Microsoft SharePoint Server 2010 for the ASP.NET Developer
Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
SharePoint Performance and Capacity Planning Essentials
Troubleshooting Common Performance Problems in SharePoint 2010

Videos

Channel 9 Interview with Eric Shupps
SharePoint TechTalk - Different Views on Social Computing
SharePoint Post-Deployment Planning and Management

Podcasts

SharePoint Pod Show - Design for Performance
SharePoint Pod Show - Test Driven Development
Run As Radio - Eric Shupps Improves SharePoint Performance

Saturday, November 24, 2012

Creating Permalinks for SharePoint Blog Posts

Most commercial blogging platforms use a fixed URL structure, known as a "permalink", to identify posts – something like "http://www.myblog.com/2012/09/13/This-Is-My-Post.html". This structure makes it easy to reference a particular post, supports trackbacks/pingbacks, and makes it simple for search crawlers to locate content. Unfortunately, the SharePoint 2010 Blog template has no concept of how an actual blog platform should work – permalinks are an entirely foreign concept. Because SharePoint stores blog posts as individual list items, the URL structure is comprised of a fixed root path with a query string parameter for the item ID, such as "http://www.binarywave.com/blogs/eshupps/Lists/Posts/Post.aspx?ID=270". Awful stuff.

Short of writing an HTTP Handler to construct friendly URL's, SharePointers are stuck with this less-than-optimal format. That being said, it would be helpful if the various views for the Posts list in a blog actually used this link structure to refer to each item but, alas, they don't; instead, they use and even worse path identifier that references an application page in the _layouts directory with parameters for the list and item ID (i.e. "http://www.myblog.com/_layouts/listform.aspx?PageType=4&ListId={89CBE813-99F7-4257-A23A-5FEFC377336B}&ID=269"). This is the equivalent of not only forgetting to put bullets in your gun but leaving the gun behind at the saloon on your way to the OK Corral – in other words, it makes an already bad situation even worse...


Read more from Eric Shupps

Saturday, November 03, 2012

Hiding Toolbars in the SharePoint 2010 Chart Web Part

SharePoint Server 2010 ships with a nifty Chart web part that displays visual data from a number of sources – SharePoint lists, BDC, Excel services, etc. It's a handy control and one that was sorely missing from the 2007 version. It provides a number of chart options, including pies, lines, bars, cones, scatters, etc. in both 2D and 3D. Neat…but (and there's always a 'but')…it has one very annoying characteristic that drives site administrators crazy. When you drop it onto the page, it displays a toolbar with links for "Data & Appearance" and "Advanced Properties" to everyone with more than basic read permissions.

We certainly don't want everyone to see that – too much temptation to click on those links and blow up our pretty little graphs. Well, ok, should be easy enough to turn that off, right? Wrong.

Somebody, somewhere, forget to include the ubiquitous hide toolbar switch that's on most other out of the box web parts. While trying to figure out a workaround for this nice little undocumented feature, I came across a lot of links to this blog post by Nick Grattan in which he suggests editing the page in SharePoint Designer and changing the web part properties manually in the markup. That's all well and good but anyone who has ever heard me speak at a conference knows that I am not exactly the world's biggest fan of using SPD to edit pages (that may be understating it a bit, sort of like saying the Pope is a little bit Catholic or Texas gets a bit warm in the summertime). So what to do...

Read more from Eric Shupps


Articles

Ten Steps to Optimize SharePoint Performance

Webcasts

Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Creating End User SharePoint Solutions for Performance and Scalability 
SharePoint 2010 Performance Enhancements for Administrators
Microsoft SharePoint Server 2010 for the ASP.NET Developer
Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
SharePoint Performance and Capacity Planning Essentials
Troubleshooting Common Performance Problems in SharePoint 2010

Videos

Channel 9 Interview with Eric Shupps
SharePoint TechTalk - Different Views on Social Computing
SharePoint Post-Deployment Planning and Management

Podcasts

SharePoint Pod Show - Design for Performance
SharePoint Pod Show - Test Driven Development
Run As Radio - Eric Shupps Improves SharePoint Performance

Social

ConferenceHound
Talk TechNet
Channel 9
Planet SharePoint
Lanyrd
MVP Profile
About.me
Tumblr
Speakerfile
Facebook
LinkedIn
Google+
Twitter

Sunday, October 28, 2012

Using Multiple Displays and Projectors with Windows 8 and Lenovo W520

When Lenovo started shipping hybrid graphics in their W500-series workstations, it was a great improvement for road warriors who need both full-power graphics when connected to a power source and long battery life on the go. This is achieved by the presence of two video cards – an integrated Intel chip side-by-side with an nVidia Quadro GPU. The nVidia drivers ship with software that automatically switch between graphics modes based on the current power profile.

This configuration works great until the machine is connected to an external monitor or projector via the VGA port. For some reason, the nVidia software is unable to automatically balance the output between both video cards when the display is duplicated. Many users have resorted to disabling one or the other video cards in the BIOS, which works fine but requires that the change be made manually each time to computer is rebooted (assuming that the user wants the low power mode at some point – if the machine is always plugged in then it's really not an issue).

There is, however, a way to get display duplication working with the auto-switching Optimus mode. All the configuration options are there in the nVidia control panel but the configuration isn't very intuitive. Here's how to make it work (this holds true for both Windows 7 and Windows 8, although the sub-menu text in the control panel is a bit different between driver versions)...

Read more from Eric Shupps


Articles

Ten Steps to Optimize SharePoint Performance

Webcasts

Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Creating End User SharePoint Solutions for Performance and Scalability 
SharePoint 2010 Performance Enhancements for Administrators
Microsoft SharePoint Server 2010 for the ASP.NET Developer
Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
SharePoint Performance and Capacity Planning Essentials
Troubleshooting Common Performance Problems in SharePoint 2010

Videos

Channel 9 Interview with Eric Shupps
SharePoint TechTalk - Different Views on Social Computing
SharePoint Post-Deployment Planning and Management

Podcasts

SharePoint Pod Show - Design for Performance
SharePoint Pod Show - Test Driven Development
Run As Radio - Eric Shupps Improves SharePoint Performance

Social

ConferenceHound
Talk TechNet
Channel 9
Planet SharePoint
Lanyrd
MVP Profile
About.me
Tumblr
Speakerfile
Facebook
LinkedIn
Google+
Twitter

Monday, October 15, 2012

Using the Chrome Control in SharePoint 2013 Apps

In the new SharePoint 2013 App model, there are essentially two ways to host apps – within SharePoint itself or from an external web site (also known as "provider hosted" or "autohosted"). One of the disadvantages of external apps is that they don't look or feel like SharePoint. All the familiar navigation menus and shortcuts are missing, resulting in a stark contrast between the default SharePoint visual experience and whichever app is currently being used unless the app developer went the extra mile (or ten) to style their app.

While this isn't really a bad thing – the app is fully functional and can communicate with SharePoint – it doesn't quite lend itself to a cohesive user experience. To bridge this gap, Microsoft allows developers to import a very basic version of the SharePoint 2013 chrome into their apps without having to manually create matching HTML controls. The functionality for this can be found in the SP.UI.Controls.js file located in the new /_layouts/15 directory. To use the chrome control, first add a reference to SP.UI.Controls.js (make sure you've already loaded the requisite JQuery files and other dependencies), then add an empty <div> to your page markup at or near the top of the page..

Read more from Eric Shupps


ArticlesTen Steps to Optimize SharePoint Performance

Webcasts

Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Creating End User SharePoint Solutions for Performance and Scalability 
SharePoint 2010 Performance Enhancements for Administrators
Microsoft SharePoint Server 2010 for the ASP.NET Developer
Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
SharePoint Performance and Capacity Planning Essentials
Troubleshooting Common Performance Problems in SharePoint 2010

Videos

Channel 9 Interview with Eric Shupps
SharePoint TechTalk - Different Views on Social Computing
SharePoint Post-Deployment Planning and Management

Podcasts

SharePoint Pod Show - Design for Performance
SharePoint Pod Show - Test Driven Development
Run As Radio - Eric Shupps Improves SharePoint Performance
Social

ConferenceHound
Talk TechNet
Channel 9
Planet SharePoint
Lanyrd
MVP Profile
About.me
Tumblr
Speakerfile
Facebook
LinkedIn
Google+
Twitter

Thursday, October 11, 2012

Using PowerShell to Set List View Parameters in SharePoint Web Parts

While working on some modifications to the SharePoint 2010 blog site template I ran across an interesting problem. I was trying to duplicate the functionality of a particular web part; in this case, the Posts web part which outputs a formatted display of list items on the Category.aspx page of a blog site. The default web part was listed in the contents page (reachable using the "?contents=1" query string parameter) as a basic XsltListViewWebPart, which meant that I should be able to drop the Posts web part from Lists and Libraries in the web part gallery, set the view, and get the desired results. If only it were that simple.

No matter which view I picked, all the web part showed was a standard list view with rows and columns, not the nicely formatted view with the calendar page image, title link and summary information that I was after. Since it was a stock list view web part I knew it was using a view to fetch the data and then transforming it in XSL but there didn't seem to be any way to force it into using the correct view. Assuming that the view itself might be hidden from the drop-down selector, I turned to PowerShell to see if I could find out what was going on. I began by iterating through the web parts on the page to find the one I wanted and writing out the view ID...

Read more from Eric Shupps


Articles
Ten Steps to Optimize SharePoint Performance

Webcasts

Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Creating End User SharePoint Solutions for Performance and Scalability 
SharePoint 2010 Performance Enhancements for Administrators
Microsoft SharePoint Server 2010 for the ASP.NET Developer
Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
SharePoint Performance and Capacity Planning Essentials
Troubleshooting Common Performance Problems in SharePoint 2010

Videos

Channel 9 Interview with Eric Shupps
SharePoint TechTalk - Different Views on Social Computing
SharePoint Post-Deployment Planning and Management

Podcasts

SharePoint Pod Show - Design for Performance
SharePoint Pod Show - Test Driven Development
Run As Radio - Eric Shupps Improves SharePoint Performance
Social

ConferenceHound
Talk TechNet
Channel 9
Planet SharePoint
Lanyrd
MVP Profile
About.me
Tumblr
Speakerfile
Facebook
LinkedIn
Google+
Twitter

Thursday, October 04, 2012

Configuring High Trust Apps for SharePoint 2013

The SharePoint 2013 Application Model supports app development for both cloud and on-premise environments; however, there are distinct differences between the two implementations. In the cloud, apps rely upon an external authorization process to validate that an application hosted outside of SharePoint – in a vendor's data center, for example – is allowed to communicate with the SharePoint site where the app has been deployed. Within the enterprise, it is unlikely that an authorization server will be present or even necessary; rather, apps developed and deployed internally are assumed to have "high trust". In order to facilitate a high trust relationship in the absence of a pre-configured authorizing entity, a specific set of configuration tasks must be performed for each app that will be deployed...

Read more from Eric Shupps


Articles

Eric Shupps eshupps SharePoint Cowboy - Ten Steps to Optimize SharePoint Performance

Webcasts

Eric Shupps eshupps SharePoint Cowboy - Secrets of SharePoint Part 5: Configuring Microsoft Office SharePoint Server 2007 for Optimal Performance
Eric Shupps eshupps SharePoint Cowboy - Creating End User SharePoint Solutions for Performance and Scalability
Eric Shupps eshupps SharePoint Cowboy - SharePoint 2010 Performance Enhancements for Administrators
Eric Shupps eshupps SharePoint Cowboy - Microsoft SharePoint Server 2010 for the ASP.NET Developer
Eric Shupps eshupps SharePoint Cowboy - Following Best Practices and Avoiding Common Errors with Microsoft Office SharePoint Server 2007 Development
Eric Shupps eshupps SharePoint Cowboy - SharePoint Performance and Capacity Planning Essentials
Eric Shupps eshupps SharePoint Cowboy - Troubleshooting Common Performance Problems in SharePoint 2010

Videos

Eric Shupps eshupps SharePoint Cowboy - Channel 9 Interview with Eric Shupps
Eric Shupps eshupps SharePoint Cowboy - SharePoint TechTalk - Different Views on Social Computing
Eric Shupps eshupps SharePoint Cowboy - SharePoint Post-Deployment Planning and Management

Podcasts

Eric Shupps eshupps SharePoint Cowboy - SharePoint Pod Show - Design for Performance
Eric Shupps eshupps SharePoint Cowboy - SharePoint Pod Show - Test Driven Development
Eric Shupps eshupps SharePoint Cowboy - Run As Radio - Eric Shupps Improves SharePoint Performance

Eric Shupps eshupps SharePoint Cowboy on ConferenceHound
Eric Shupps eshupps SharePoint Cowboy - Talk TechNet
Eric Shupps eshupps SharePoint Cowboy on Channel 9
Eric Shupps eshupps SharePoint Cowboy on Planet SharePoint
Eric Shupps eshupps SharePoint Cowboy on Lanyrd
Eric Shupps eshupps SharePoint Cowboy MVP Profile
Eric Shupps eshupps SharePoint Cowboy About.me
Eric Shupps eshupps SharePoint Cowboy Tumblr
Eric Shupps eshupps SharePoint Cowboy Speakerfile
Eric Shupps eshupps SharePoint Cowboy Facebook
Eric Shupps eshupps SharePoint Cowboy LinkedIn
Eric Shupps eshupps SharePoint Cowboy Google+
Eric Shupps eshupps SharePoint Cowboy Twitter