The Truth Behind SharePoint Best Practices

Show of hands… who out there has ever Googled the words “SharePoint” and “Best Practices”? Come on.. be honest?  I know I have… well, I’m here to save you some time on those searches…. 

THERE ARE NO SHAREPOINT BEST PRACTICES!

Okay, maybe that was a bit brusque, and not entirely true.  The more accurate statement is that you will not find the information you need by doing a Google search on “SharePoint” and “Best Practices”.  Why???  Because the answer will depend on YOUR unique situation.  A best practice for you may not be a best practice for someone else. Don’t get me wrong, I’m sure there are a handful of true 100% all the time Best Practices (creating solution packages for example), but generally the correct response is “It Depends”.

If anyone tells you that they have the “Best Practice” for your SharePoint deployment without knowing anything about it, you should turn around and walk the other way.  There’s a good chance this person doesn’t understand SharePoint and they can leave an incredible mess in their wake that you are stuck cleaning up.

Have I confused you yet? Let me reiterate, there ARE Best Practices out there for SharePoint and it is SOOOO important that you follow those Best Practices.  However, there may be DOZENS of variations of a Best Practice depending on your situation. There is no one-size-fits-all in SharePoint.  Your search may need to be configured differently, you may not need that extra app server, maybe you can virtualize everything… It depends!!!

So… What do I do? What hope do I have????

Ah! Don’t panic! There is hope and there is an answer!  You ready for this… got your pen and paper ready? The key to finding YOUR Best Practice is….

KNOWLEDGE!

Yes… you must learn and in some instances get your hands dirty.  It will take time, and effort but if you truly want to discover the correct Best Practice you can either spend a ton of money on high end consultants (I’ve got some names if you need them) or take the time to gain the knowledge so that you will know your Best Practice when you hear it…

As you gain more and more knowledge around SharePoint you start to understand SharePoint more and understand your deployment better. You learn the right questions to ask and you learn to pick out the Best Practice that applies to you. If you are serious about SharePoint, you MUST learn what you’ve gotten yourself into!

Where do I find this “knowledge” you mention?

Funny you should ask!  It just so happens that there is a little conference going on in a couple of weeks in DC called… are you ready for this??? 

clip_image001

This is one of the top SharePoint conferences this year with an all star line up of speakers.  I’ll actually be speaking at 3 sessions (but don’t hold that against the organizers). The best way you are going to find YOUR Best Practice is to attend conferences like this and learn from those that have preceded you.  Learn from our pain and suffering to help prevent yours.

If you have ever attended a SharePoint Saturday you just have an inkling of what the Best Practices conference will be like.  Imagine taking the 2 or 3 best sessions you heard and having 4 days of sessions that are THAT good. I know that I’m looking forward to attending just as much as I’m looking forward to speaking, because trust me, I don’t have all the answers and this is the best way I have found to learn. 

Anyway, I hope to see you there. Maybe we can hang out, grab a drink and reminisce about how much easier work was before SharePoint… but be honest.. it wasn’t as fun!

Extending a Web Application… probably not what the designers had in mind…

Have you ever come up with an idea and you think “Wow.. this is either brilliant or a total hack that no one under any circumstances should consider!"?

That’s the situation I find myself in today. I either did something so monumentally stupid that Eric Shupps and Andrew Connell would love nothing more than slap me upside the head (which they probably want to do anyway) or it wasn’t totally stupid and you’ll think “Hey… that’s not a bad idea.”.

So… which is it? Well… allow me to explain the situation to you.

The Situation

We are in the process of developing a fairly involved Silverlight application for our current project.  This is an interactive application with animation and links that load different SharePoint pages. It’s pretty fancy and LARGE. I won’t even tell you how large it is because you will do a spit take and ruin your fancy computer. The links in this interactive Silverlight application take users to different SharePoint pages with the content they are seeking.  Overall, nothing complicated technically.

Anyway, because of the size and scope of the application we needed to create a “non” Silverlight version for users to access.  Another requirement was that we give the users the ability to switch between Silverlight and non Silverlight as needed.  Again, this is not a big deal, we created a few pages that were basically image maps that took the users to the correct SharePoint pages just like the Silverlight Application did.

Are you following me so far? Well… here’s the problem.  What happens if the user selects the non Silverlight version, clicks on the image map, goes to a SharePoint page and then clicks a link in the SharePoint page to go back to the non Silverlight application? It doesn’t sound like an issue on the face of it… but take a look at the following flow chart and maybe you can see where some confusion comes in:

image

You start to see the problem? There are links on the SharePoint Pages that take the user back to the “Main” application which is either a page with Silverlight or a page with an Image map.  How do you send the user to the correct place all the time?

You might be thinking the same thing we were? Cookie sand Javascript! Just set a cookie so that you know if the user is wanting Silverlight or not and then write Javascript to redirect based on the cookie. This works, and @cwheeler76 did a good job implementing this, but it starts to get kind of hairy to maintain, and what do you do if a user doesn’t have cookies or Javascript enabled? It just didn’t seem like an ideal solution to me. 

So… what did you do?

So… I had a random thought.. not quite an epiphany… The problem is you need to know at any point in the entire web application if the user is wanting to use the Silverlight or Non Silverlight version and then take that user back to the right page.

Part 1 – Determine if user wants to use Silverlight or Non Silverlight

So.. this is where the hare brained scheme comes in.  When you extend a Web Application you get another IIS Web site (a different URL) but expose the same content to your users. Historically you extend a web application if you want to set up another authentication zone for your users (Some users log in with AD and other log in with FBA for example).  However, you CAN use the same authentication on both.  So, what does extending a web application do for me here??  If I extend our web application and get a new URL I can then use one URL for the “Silverlight” version and another URL for the “Non Silverlight” version and I’ll always know which version a user is using.  You may be thinking that is a lot of overkill, but think about this.  All your links on your SharePoint page are (or at least should be) relative links. This means that regardless of whether you are using the Silverlight or Non-Silverlight version your navigation won’t have to change at all for navigating around, and you will ALWAYS know if a user should be using the Silverlight or non Silverlight version without worrying about cookies or session variables or anything else that might time out on you.

So, now I know if a user is using the “Silverlight” version or “Non Silverlight” version at all times based on their url.  Following me so far?

Part 2 – Redirect users correctly

So, your first thought may be.. “So what! I still have to check that URL everywhere and determine if I need to send the user to the Silverlight page or non Silverlight page! That’s just as much work!. Plus! How in the world do I handle the navigation menu and the bread crumb? This is just a stupid idea you have going here”.

Well..  you might have a point. It may be a stupid idea, but I had another simple solution. A super simple custom web part. We set up the default page for the web application to be the Silverlight Page. I then created a simple web part that looks at the URL (SPContext.Current.Web.Url) and checks if the URL is the URL that we indicate as the “Non Silverlight” URL. If it IS that URL I redirect the user to the non Silverlight page, and everything works from there!  And since the redirect happens on the server side there is no noticeable lag to the users and it doesn’t rely on Javascript. So… basically the flow looks like this:

image

Does that make sense at all? It is 6pm on Friday… my brain is already checked out for the weekend. If a user is using the Silverlight URL then the page loads normally and when they go back to the Default page from a SharePoint page the Silverlight works normally.  However, if a user is using the Non Silverlight URL the default page will automatically direct them to the Non silverlight page, and any time they navigate away from the SharePoint page back to the default page (via links, breadcrumbs, navigation, or even the “back” button) they will automatically get redirected to the Non Silverlight page from that default page.

Conclusion

So, not sure what my conclusion is here. I do know that because of this solution I was able to get the functionality I needed in two steps by:

  1. Extending Web Application
  2. Creating a web part for default page that redirects user based on URL

And the rest just worked. I’m all about the KISS principle and I could not think of anything more easy to maintain and straight forward than this.

Do you have a better idea? I’d love to hear it! Is there some issue here that I didn’t take into account? Here’s your chance to look smart to thousands… well…. hundreds… okay… maybe a dozen people… regardless… here’s your chance to me put it in my place.  :)

Or maybe this is just common sense and thousands of people are already doing it.. in which case I’ve just wasted an hour of my life (and 5 minutes of yours) that I’ll never get back…  sorry!  :)

Droid X Review… iPhone Killer?

I’m taking a break from SharePoint blogging to do a product review for you guys.  I know, it’s hard to believe that I would have an opinion.

So… I did something I don’t normally do. I waited in line to buy a Droid X on its release July 15th.  I’m generally not the type to HAVE to have the coolest and the newest stuff. I usually just secretly hate those people and wait for prices to come down. However, this time I decided to steal my wife’s phone upgrade and jump on what I thought would be an awesome phone.

First, let me say that this phone is NOT an iPhone killer. There is not a phone out there that will kill the iPhone. The Apple fan-boys will buy anything Apple throws out. I still don’t think a big iTouch is revolutionary AT ALL. The only iPhone killer out there is Apple itself, and they seem to be trying really hard at the moment to alienate their customers.  OK, I’ll get off my Apple rant… By the way, I don’t hate Apple. I have an iTouch and love it and the only reason I have never bought an iPhone is because I have Verizon and not AT&T. I’ve used iPhones before and I owned a Droid previously to purchasing the Droid X. Everything being said, I would choose a Droid X over an iPhone (or Droid) any day.

Droid vs. Droid X

So, the obvious comparison is the Droid X vs its predecessor the Droid. The Droid is an awesome phone and I have been really happy with it.

DSCN1654

The screen on the Droid X is obviously larger and the regular Droid screen looks cramped by comparison (although it never felt that way prior to the Droid X).

DSCN1659

You lose the physical keyboard on the Droid X but the onscreen keyboard is larger and with Speech-To-Text I rarely use the keyboard anymore anyway. 

Your camera goes from 5mp to 8mp which is cool but don’t know if you’ll notice if you never take your photos off the camera. You get more home screens, more widgets, and more applications on the Droid X.

You get HDMI output on the Droid X, but I haven’t tried it yet so can’t tell you how well it works.

There’s a lot more differences like memory, and CPU speed, and others that I won’t go into because none have impacted me yet as an every day user.  Although I will say that overall the Droid X seems to be more responsive and perform better. However, You still need to install some sort of application killer on the Droid X so you don’t accidentally eat up all its memory (which i did while playing around on it).  There’s a reason why Apple didn’t want you multi-tasking.

Overall the Droid X is a very solid upgrade to the Droid. 

Pros

So, let’s get down to some details.  What’s good about the Droid X?

Screen

I LOVE the screen on this thing. Everyone keeps asking me if the screen is too big. It’s not. Really, it’s the perfect size.  It’s big enough that the screen doesn’t feel cramped but small enough to carry without feeling like you are lugging around a tablet. You can read web pages without having to zoom in and it feels great when you navigate using your fingers.  The on screen keyboard is also improved because of the bigger screen. You won’t miss the physical keyboard at all.

Interface

So, instead of three home screens like on the Droid you have seven home screens on the Droid X. At the moment I can’t fathom how I’ll fill them all up but I imagine in a few months I’ll wish I had 9 home screens.  Definitely a big improvement though.  Also the buttons on the bottom of the screen (settings, home, return, and search) are now physical buttons. It’s funny how such a small change can make such a big impact to user experience. It’s nice to be able to push the physical ‘home’ button to bring the screen back up instead of having to hit the power button. Oddly it gives the Droid X a much more polished feel.  The interface has a lot of minor tweaks and a lot of new social networking integration that I have barely looked into as well.

Mobile Hotspot

The mobile hotspot is a really cool feature.  It allows you to use your Droid X as a wireless router for up to 5 devices. I have NOT tested this out yet as it costs $20 a month extra and I still use my work BlackBerry when I need to tether. Very cool feature though.

Camera

As previously mentioned the camera on the Droid X is 8mp instead of the 5mp on the Droid (which I thought was awesome). Also, you can shoot video in HD which is cool but probably eats up your meager looking 16gb SD card.

Flash is coming!!

So yeah, Flash support is coming for both the Droid and Droid X on October 1st.  This is huge and I hope it works well.  Now if I could just watch Netflix movies on the phone and I’d be all set.  I know.. I know.. you are supposed to be able to watch Netflix movies on the Windows 7 phone… if it EVER comes out???

Blockbuster App

So, there’s a cool Blockbuster application that allows you to rent and buy movies on your phone. Very cool concept and I tried it out by renting “The Book of Eli”. Except for the time needed to download (via Wireless only) it was a painless process. There’s a lot of potential here if they can figure it out.  It’s not quite ready to conquer the world though.

Cons

Of course there will be some cons as well, especially when you buy something the day it comes out!  Some of these are actually pretty bad and might be bad enough for you to wait for Motorola and Google to work out the bugs.

Speaker

The speaker on the Droid X is not as loud as the Droid and I honestly think it is not loud enough if you have a song for a ring tone. I have no idea why they would have changed this as I thought the Droid had one of the best speakers in a phone I’ve ever heard.

GPS

I LOVE the GPS on my Droid and used it all the time when traveling. I made the mistake of going on a trip the SAME DAY I bought the Droid X to a place I’d never been before.  So, I was depending on the GPS to get to my location. I wasn’t concerned because I’d been very happy for the most part with the GPS on the Droid. Well, I used the voice search to tell the Droid X to navigate to my destination and it came up and I was on my way. While driving I noticed I hadn’t heard any update from my GPS lately and I looked down at it… It was locked up. Not only that, but I had to completely power it off to get the GPS back, and guess what? I missed a turn. I had to turn around and back track.  I was NOT happy at all.  Not only that, but the GPS locked up THREE MORE TIMES on the way to my location. If you rely on the GPS I’d wait for an update before purchasing the Droid X.  Weirdly enough, the last time it locked up I hit the “back” button on the Droid X and it brought up an error screen.  After I cancelled the error screen the GPS came back and it didn’t lock up again for the remainder of the trip. Still.. I hope they fix it soon.

MP3 License Error

I was playing the MP3’s from the SD card on my Droid which contain many songs that I ripped from CD’s I OWN. There is a particular song that I ripped (from a CD I owned did I mention?) and when the music player tries to play the song I get an error that says “license expired” and the speaker turns off. No sound at all.. First of all, the license didn’t expire and second of all why do I have to turn the phone completely off and back on to get the sound back even it was a song where the license expired? I have no clue what’s going on here and it only happens with one song.  So, maybe no one else will experience this problem, but if it happened with several songs I’d be taking the Droid X back immediately.

Battery Life

So, if you are going to be making a device as cool as the Droid and Droid X you REALLY need to do a better job about creating a long lasting battery. When you see this thing you just want to play with it.  Whether you are playing the demo of “Need For Speed” that comes installed or renting a movie from Blockbuster, you just don’t want to put it down. Well, be warned, that battery lasts about 3 or 4 hours with heavy use. The Droid had the same problem and I understand that it takes some juice to run the apps, WiFi, speaker, GPS, and light up the screen but it would be great if I could go through a day of “normal use” without having to charge it in the afternoon.

Blockbuster App

So, the Blockbuster App is really cool, but not quite ready for prime time and so close to being something awesome. The HDMI output does not work for the Blockbuster videos, so you HAVE to watch it on the phone.  Also, the price to “rent” or “buy” a movie is way too high.  $3.99 to rent and $17.99 to buy. It’s REALLY hard to justify this cost when a RedBox movie is only $1 and popping up all over the place and it takes just as long to download a movie as it takes to drive to the said RedBox. Seriously Blockbuster, lower your price to be competitive and I’ll use it more often. It’s just much more convenient (and costs the same) to do Video on Demand on Dish Network or rent the move through the PlayStation Store.  Also, you need a wireless connection to download a movie so you can’t download a movie at the airport while your waiting for a flight unless the airport has decent internet access.  By the way, there is a cool RedBox application that will allow you to search and rent movies from local RedBox locations.

Droid X “Selt Destruct”

So, yeah, apparently if you try to jailbreak or hack your Droid X it will self destruct:

http://www.mobilecrunch.com/2010/07/14/droid-x-actually-self-destructs-if-you-try-to-mod-it/

This is not  a huge concern to me because I hardly have the time to mess with hacking my phone. I realize this will keep some techies from making the purchase but I don’t think the mainstream consumer will care at all.  Still, kind of interesting from a company that embraces open source to do something so draconian.

Conclusion

As I already stated, overall the Droid X is a solid upgrade from the Droid with a lot of promise.  There are several minor glitches which I’m sure will be patched soon and so far none that can’t be overlooked for a V1 (although the GPS issue comes close). If you are comfortable being an early adopter and expecting some minor issues, go out and get a Droid X today. You won’t be disappointed. If you are easily frustrated with technology though and don’t want to have any problems, then wait a couple of months just to be safe.

Hey, on the bright side, no matter how I held the phone I never dropped a call…

«September»
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789