Friday, May 23, 2014

SharePoint 2013 Search Errors and Permission Settings

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
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)

 
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


Tuesday, January 14, 2014

Confessions of a Recovering Windows Phone User

After two years on the Windows Phone platform, I switched back to IOS to see how things had changed and what the Microsoft mobile ecosystem might be missing.  Here are my random observations so far, in no particular order or priority.

[Before the Android fans chime in, I absolutely will not trust Google with any of my personal communications, so don't waste time trying to convince me - it won't do you any good.  Just move along, nothing for you here.]

  • The only real innovation that Windows Phone introduces is the UI.  Everything else falls far behind the competition.  Don't get me wrong, the UI is hands down the best mobile experience IMO - it makes IOS look like a Palm Pilot circa 1999.  But that's where it ends.  There are so many little things missing, simple stuff that more mature platforms already have, that Microsoft will probably never catch up without doubling or tripling the size of their core development teams.  And that's what is needed just to keep pace - jumping ahead seems totally impossible at this point.

  • The predictive text typing experience in IOS is simply archaic.  Really, Apple, one choice and that's it?  But then that pretty much sums up the entire Apple experience, doesn't it?

  • Microsoft really needs to figure out their device specification story (CPU + Memory).  The iPhone 5S is blazing fast compared to all the latest WP devices.  Apps pop open, screen transitions are snappy, pages render quickly - none of which happened on any of the Windows Phones I tried.  The whole OS just feels sluggish.  I know a lot of that is the underlying app framework - believe me, I've been writing XAML code for years now and it can sometimes be excruciating even on the desktop - but perception is reality and it just feels like everything takes longer than it should.

  • Xbox music sucks.  In every way imaginable.  It's not like iTunes is so great - it's not - but XBOX music really is terrible.  Zune was and still is the best music app - why can't we get that experience on our phones/tablets?  It's not like they don't already have the code!  Get a grip and get it right.

  • The IOS email client may just be worse than XBOX music and that's saying a lot.  I stuck with WP because of email and it's almost enough to make me want to go back.  OWA on iPhone is OK but not the same as an integrated email app.  Apple obviously has no clue how real enterprise email works.

  • The app ecosystem is where it's at and Apple simply owns the appverse.  If Microsoft wants to have a prayer in mobile they'd better start doing anything and everything to get more apps.  And don't tell me that all the apps for IOS are junk.  That's a cop out - sure there's a lot of crap but there's so much quality stuff available it's frightening.  Even the crossover apps are better on IOS (like Facebook and Twitter just to name a couple).  Part of the problem here is the horribly fractured development story for phone and tablet, requiring completely different code for the two platforms.   As a Windows developer, I can attest that this is a real PITA; in IOS  I need only worry about screen size and some device functions but for my native platform I have three separate solutions (Windows 8, Windows 8 ARM, and Windows Phone) requiring different emulators, with different capabilities and using different sets of reference assemblies with varying  degrees of functionality.  It's maddening.  Microsoft has got to figure out a "write once, run anywhere" strategy and they need to do it fast.  But I fear it's probably already too late.

  • I had forgotten what a tremendous aftermarket there is for iPhone accessories.  There were maybe five cases for my HTC 8x and that was it.  Having an iPhone is like getting a never ending set of Legos - you just keep snapping things on until you are happy for a while then you tear it apart and start over.  Perhaps a reduction in the number of form factors would help Windows Phone in this regard (maybe Microsoft becomes the sole hardware manufacturer) but I don't see how anyone ever gets close to the sheer volume of iGadgets. 

  • One of the most refreshing aspects of being back on IOS is the unified messaging and video experience.  I travel internationally on a regular basis so staying in touch with the family is of utmost importance.  On IOS, FaceTime and iMesaage are baked in as native apps.  Even better, the messaging app automatically uses the free Apple service when the recipient is also on an IOS device.  That saves a ton on SMS charges - and if you think that's peanuts then you don't get out of the country very often.  On Windows Phone there's Skype which, honestly, just isn't anywhere close.  It's buggy, crashes often, doesn't sync messages across platforms reliably, and isn't integrated into the core OS.  I don't want a separate app for messaging that's separate from all my other messages - I want it all to be integrated with no thought required on my part.  Oh, and FaceTime rarely, if ever, crashes or fails to login.  Skype?  Um, yeah…

  • I know SkyDrive takes a lot of knocks but I rather like it and I wish it were integrated into my iPhone like it was on my Windows Phone.  Sure, the SkyDrive IOS app is OK but it was better on the native platform.  iCloud just isn't my style. AirDrop is an entirely different matter - it works great (so long as other iPhone users are the ones you want to share with) and SkyDrive could use a similar feature that makes it dead easy to share stuff without going through the invitation email process.  Yeah, I know Windows Phone has NFC tap and send but AirDrop just feels more natural and has the advantage of being able to connect to non-mobile devices (granted, they have to be Macs, so that's a big negative).  I suppose it's a wash but maybe some tweaks to SkyDrive could give Microsoft a leg up here. 

  • Apple made a huge blunder with their less-than-impressive maps application but even that is better than the horrible atrocity that is maps on Windows Phone.  A blind mule with a broken compass has more of a chance of finding an address than a Windows Phone user.  And trying to search for places within the maps app?  Just forget about it - the closest thing to you will always be "No results found".  Whip out your ten pound blue Nokia brick and try to find a location when you're anywhere an iPhone user and they will literally laugh until they can't breathe - not that you'll be able to hear them as they'll already have arrived at their destination (and found all the swank places to eat, booked a reservation, and ordered appetizers).  Of course, Apple can't do too much of a victory dance as I'm pretty sure the first app every iPhone user installs and anchors to the home screen is Google Maps but at least Siri can actually find stuff around you when you ask her nicely.  Which brings me to another big problem...

  • Voice control.  Wow, did Microsoft miss the boat on this one.  Apple is on their third iteration of this feature and Windows Phone still doesn't have anything comparable.  The built-in voice commands are a complete joke - it's impossible to even send "on my way" via SMS because you'll never even get it to find the right contact in the first place.  If it responds at all, that is, which is rare.  This isn't a make-or-break feature for me but it's handy when you're driving or walking around and don't want to break your neck while thumbing.  Siri isn't perfect by any means but she sure does run rings around anything Windows Phone can do.  I've read a few rumors that Microsoft is working on this but again that just brings them up to some level of parity - it doesn't move the needle towards "Awesome".

  • I thought I would miss Live Tiles but I don't.  Most apps don't really take advantage of them anyway and the ones that do are mostly just annoying.  The auto power saving feature when the battery reached a certain level was nice, and the low light mode was killer for discreetly checking messages in a movie theater, but what I really miss is the lock screen status icons.  I like being able to tell how many emails and messages there are without having to swipe but since Windows Phone completely lacks anything even approaching a notification center or control center the productivity advantage still resides with Apple (and yes, I know there are tweaks for jailbroken phones that allow the lock screen to be customized).  

  • Wow, is IOS 7 ugly.  I mean make-a-train-take-a-dirt-road F-U-G-L-Y.  As I mentioned at the outset, Microsoft scored a big win with Metro/Modern UI/Whatever The Heck We're Supposed to Call It interface and Apple hasn't figured out how to change their aesthetic in a similar fashion.  IOS 7 is a half-hearted attempt at keeping up and it shows - the unified visual theme from previous versions is now just a haphazard mess of melted crayons and disjointed fonts.  It makes my eyes hurt.  At least on a Windows Phone all the necessary commands were down at the bottom of the screen or hiding behind an ellipsis.  I can't even count how many times I've tried to press and hold an app icon in IOS trying to get to a context menu, or hunted for a back arrow, "Add" button, or some other basic navigational element which used to be easy to find.  Here's a big hint for Apple and all IOS app developers: we all use our thumbs on a phone.  Stop putting navigation elements at the top where they are hard to reach.  Put them at the bottom so they are actually within range of the digits we're using to interact with the device.  Time for all those pretentious design mavens in Cupertino to go back to the drawing board and come up with something entirely new - 'cause this is just embarrassing.    
   
One final thought.  The Microsoft culture encourages product managers to think small by constantly evaluating features using the dollar method ("you only have a dollar to spend so what are you going to spend it on and what are you going to cut?").  This puts the focus on getting lots of small, relatively unimportant features into the spec at the expense of big, earth-shattering features that burn the entire budget.  It's an approach that completely stifles innovation - you can't leapfrog the competition when you're constantly working under such contrived constraints. 

What the guys earning the big paychecks in Redmond really need to ask is this: Do we want to win this market?  If the answer is yes, then throw out the feature cutting exercises, put "whatever it takes" into the budget line item, and innovate until the competition screams for mercy.  It's too late for incremental improvements - you've got to go big or go home.  And no more excuses about cost cutting or politics or OEM's or anything else. Either mobile is important or it's not - make a decision. Because right now you're getting your butt kicked and it isn't going to change until the current play book gets thrown out the window and a new one is written from scratch.  Talking about how much your own captive market grew year over year when you're in a very distant third place isn't exactly a rallying cry for victory.  For Pete's sake, after several years and billions of dollars invested Windows Phone is still only a few points ahead of BlackBerry in market share and they're dropping faster than the mercury during a polar vortex. Even Charlie Sheen knows that's not the definition of "Winning!".

At the end of the day, I'm a Microsoft guy and I want them to succeed.  I tried really hard to stick with their mobile offering but I grew tired of waiting for them to deliver the goods.  I'd happily switch back if they can knock my socks off with a future release.  I really don't want the ghost of Steve Jobs dictating what I want, when I'm going to get it and how much I'm supposed to like it.  But whether we like it or not Apple is setting the pace in this market and I just don't have high hopes that the situation will change anytime soon.

(This post was thumbed on an iPhone 5S.  Now my thumbs hurt and I'm depressed.  Siri says I need a drink.  And now that I have become an Apple drone I must do what Siri tells me...)   
   
 

Monday, May 27, 2013

Converting Word Documents to HTML in Powershell with DefaultWebOptions

In working on a SharePoint-related project I found myself needing to convert a large number of Word documents to clean HTML while maintaining the integrity of the embedded images.  So I turned to PowerShell to automate the process but found it wasn't as easy as I had hoped.  After digging through some rather unhelpful MSDN documentation (is there any other kind?) I finally figured out how to force it to do what I wanted.

If you've ever used the "Save As Web Page" option in Word, then you know that the HTML it creates is a complete mess, full of Word styles and formatting options, and nothing you would ever actually use on a real web page.  Thankfully, there is a "Web Page, Filtered" option that strips most of the nonsense out of the resulting markup.  But for some reason it still insists on exporting down-sampled GIF images instead of full-fidelity JPEG or PNG.  The fix for this problem, which apparently cannot be set on a global basis without slinging some VBA code, is in the Tools > Web Options > Browsers menu next to the "Save" button in the "Save As" dialog.

(NOTE: You can also change the 'screen size' and 'pixels per inch' options for images under the "Pictures" tab but I found that it only resizes images with anti-aliasing so they end up blurry and unreadable.)

Now, that's all well and good for saving individual files, but it's no help at all for converting a bunch of them at once.  This is where PowerShell saves the day.  A quick script with some Word automation will get us most of the way there, allowing us to specify the type of conversion we want (WdFormatFilteredHTML, which equates to a value of '10' in the WdSaveFormat enumeration - see here for a complete list of supported formats) but it uses the default web options when performing the save operation, resulting in the same poor quality image conversions.

After hours digging around in C# samples and Word automation docs, I finally found a way to set the image conversion options in code.  Turns out the Word application object exposes the DefaultWebOptions collection through the WebOptions property, allowing us to specify values for all the options exposed in the Tools menu.  Setting "AllowPNG" to TRUE did the trick and all images came through the conversion process looking much better than they did before.

Here is the final script, which iterates a single directory using Get-ChildItems, instantiates a new Word application object, the runs the conversion with the proper web options:


$files = gci -filter "*.docx"

$savedir = "F:\ConvertedFiles\"

$word = New-Object -ComObject "Word.Application"

$word.Visible = $true

foreach ($document in $files)



{


write-host $document.Name

$existingDoc=$word.Documents.Open($document.FullName)

$name = $document.Name.Replace(" ","_");

$saveaspath = $savedir + $name.Replace('.docx','.htm')

   
$wdFormatHTML = [ref] 10

$existingDoc.WebOptions.AllowPNG = $true

$existingDoc.SaveAs( [ref] $saveaspath,$wdFormatHTML )

$existingDoc.Close()



}


$Word.Quit()

Monday, February 11, 2013

Solving the Word Wrap Problem in Firefox with Javascript

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?

Friday, November 30, 2012

Windows Phone 8 Comparison - Nokia Lumia 920 and HTC 8X


When Windows Phone 7.5 was released I made the switch from an iPhone 4 to a Nokia Lumia 900.  I haven't regretted the move once; sure, there aren't as many apps in the store and Windows Phone is still a bit immature but the fresh UI and near-perfect Exchange integration make it a clear winner for me.  The one thing I wasn't really happy with were the phones themselves.  Before Nokia got into the game all the offerings were pretty poor - grainy screens, cheap construction, abysmal battery life - and just plain boring.  But the Lumia was different - strong design aesthetic, solid construction, and an amazing screen.  Definitely a step up from the competition.

After embarking on my Windows 8 adventure I discovered that I had a problem - Windows Phone 7.5 won't sync with the native Phone app in Windows 8.  It still works with the Zune software just fine but I really wanted the native integration with a dedicated app (which, it turns out, isn't all that great - the Phone app is very basic and falls quite short of the Zune experience).  Fortunately for me, this happened right around the time Windows Phone 8 was launching and, since I needed to add another device to my plan anyway, it made sense to upgrade.

Since the Lumia 900 had treated me pretty well I decided to go with the Lumia 920.  It didn't take long before it became apparent that I had made a mistake.  The Lumia 920 is a massive device in every way - tall, wide, thick, and heavy.  I mean really heavy - like old-school flip-phone heavy.  It's a huge brick of a phone that doesn't fit well into any kind of pocket and is hard to hold comfortably in one hand.  The major drawback to the Lumia design - sharp corners where the flat ends meet the rounded sides - is made much worse by the extra weight.  Holding it up to your ear without some kind of case causes the edges to bite into your palm (it's actually quite painful).  And while the increased size makes viewing the phenomenal screen easy on the eyes it pretty much demands two-handed typing unless you have hands like Shaquille O'Neal.  But the reall killer is the weight.  I don't know what Nokia has done or why they did it but there's just no excuse for a phone to be that heavy.

So after a couple of weeks I took the Lumia 920 back to the AT&T store and traded it for an HTC 8X.  When I originally purchased the Lumia they had a couple of 8X devices on display but none in inventory so I didn't give it much thought.  Plus, I was really disappointed by HTC's earlier Windows Phone offerings.  The Titan, Radar, HD7S, Arrive and others were pretty much copies of existing Android phones and there was nothing about cheap plastic, average screens, and dismal audio to get excited about.  Despite this, I didn't really have much choice but to give HTC another try - since the Lumia 920 was no longer a viable option for me, I either had to go with the 8X or wait for another manufacturer to release something new (as an aside, the Lumia 820, which doesn't have the same drawbacks in terms of size and weight, wasn't a consideration as the screen is subpar).

The first thing that struck me about the HTC 8X was the size - it appears to be razor-thin compared to the Lumia.  It's actually not - at their thickest points the two phones are nearly identical but HTC chose a more ergonomic design that tapers to a thin bezel around the edges whereas the Nokia is just one thick chunk of rounded plastic.  The result is deceptive; it looks and feels like you are holding a very thin device. 

The 8X is also much narrower, with a 4.3" screen as opposed to the Lumia's massive 4.5" screen.  You wouldn't think less than a quarter of an inch would make much difference but it does - everything is just a bit smaller on the HTC.  This is immediately apparent when typing with the on-screen keyboard.  The extra-large keys on the 920 result in fewer typos and faster texting but at the cost of doing so two-handed.  The smaller keyboard on the 8X isn't much of an improvement (if at all) from earlier Windows Phone models but at least you can comfortably use it with one hand.  The size difference is also apparent when browsing web pages - text and images are all just a bit smaller and I constantly find myself pinch-zooming which I hardly did at all on the Lumia.  My eyes aren't getting any better as I get older so this could end up being an issue for me as I use my phone a lot when I'm traveling. 

As for the screen itself, I was a bit worried based on my previous experience with HTC devices that it would be average at best.  Fortunately, I was wrong - it may not be quite as good as the Lumia 920 but it is still exceptional.  Everything is crisp and clear, with deep blacks and rich, vibrant colors.  The Nokia screen has received a lot of hype and deservedly so - it's truly magnificent.  There are probably a bunch of technical differences between the two that give the Nokia a significant edge but for all practical purposes they're not that far apart.  I'm really pleased with the screen and everyone I've shown it to has commented on how good it is; a subjective measure, I know, and the Lumia owners are quite correct in claiming victory on this point, but it does demonstrate how good the display on the HTC is perceived to be.  One other note in this category - the Lumia screen can be set to a high sensitivity mode that allows for operation with gloved hands, a blessing for those in colder climates who are constantly chilling their digits in order to send LOL's and smiley faces to all their friends.

When it comes to weight, the HTC 8X is the clear winner.  The technical specs indicate a 55 gram difference between the two devices (130 grams for the 8X versus 155 grams for the Lumia) but it feels more like 550.  The HTC device seems like it weighs half as much, a perception that is reinforced by the tapered design and thin edges.  Everyone who picks it up says the exact same thing I did when I first handled it: "Wow, that's light!".  It's not quite as light as the iPhone 5 (112 grams) but it feels just about the same. 

Naturally, the reduction in weight comes with a few trade-offs.  The 8X doesn't feel nearly as sturdy as the 920 and it probably isn't - I suspect dropping them both onto a hard surface would have dramatically different results.  The battery in the HTC (1800mAh)is smaller than the one in the Lumia (2000mAh) but, surprisingly, there doesn't seem to be much difference in run time.  With battery saver off, push email for Exchange and Hotmail enabled, several live tiles on the home screen, and using a mixture of Wifi and LTE to do some light surfing along with a couple of hours in actual talk time over Bluetooth, both phones seem to last about a day on a charge. 

I'm a pretty poor photographer even with the best equipment so I can't really make any judgment as to the quality of cameras in either phone.  The Lumia camera got a lot of press and is supposedly far superior but pictures look good to me on both devices.  The front-facing camera on the HTC is a bit better, pulling 2.1MP as opposed to the Nokia's 1.92MP, but I doubt that small difference is even noticeable (I didn't try any video calls on the Lumia so I can't say for sure).  They both record 1080P video on the front and rear cameras.

Other features that set the two devices apart include wireless charging (the Lumia has it, HTC does not), storage (a max of 16GB for the 8X, 32GB for the 920) and sound (the HTC gets Beats audio while the Lumia comes with Dolby sound).  Neither device has an SD expansion slot.  I don't put much music or video on my phone but if you have an extensive audio collection you'll fill up the 8X in a hurry.  I can say that the HTC sounds better over headphones than the Lumia; it may just be me but it seems there is someting to the Beats Audio hype after all (other than a cool logo). 

Although it doesn't offer wireless charging, which is a shame, the 8X does have a nifty Attentive Phone feature.  Once enabled, it allows the phone to behave differently when you receive a call.  Pick it up while it's ringing and the ring volume automatically goes down.  If the phone is lying face up when it rings, flipping it over will silence the ring.  That's handy - we've all left our phone on in a meeting at some point when we shouldn't have; fumbling with the silence button always results in at least two or three rings before it can be squelched.  Flipping it over is much faster and potentially less embarassing.  Another option supposedly increases the ring volume when the phone is in a bag or a pocket, although how it knows when you've tucked it away is a mystery to me.

When it comes to vendor-provided apps, Nokia is leaps and bounds ahead of HTC.  The 8X comes with basic out-of-the-box Windows Phone 8 features plus an HTC-branded live tile.  The Lumia comes with Nokia Drive (turn-by-turn voice navigation), Nokia Music (mix stations and offline music caching) and Nokia City Lens (an augmented reality "what's nearby?" app).  These are all pretty handy but the Drive app is far and away the best - it takes a bit of setting up to download maps and voices but once you have things going it works amazingly well.

One feature that Nokia just can't seem to get right is Bluetooth.  Both the 900 and 920 behaved erratically with various headsets and connections.  Certain headsets would pair with the 900 but not the 920 and vice versa.  The Bluetooth radio would turn itself off seemingly at random.  In my vehicle, whenever I turned the ignition off, thereby breaking the connection, the Bluetooth radio would disable itself.  It also did this frequently after a call was ended even though the vehicle was still on.  There were lots of reports of this kind of thing happening when the 900 first came out and I assumed it would be fixed in the 920 but it wasn't - same problems (in different vehicles, I might add).  The HTC 8X just plain works.  The radio never disables itself - I can take off my headset in the office, walk out to my truck, turn it on and keep right on talking.  All of my headsets work without issue even with streaming music.  Even though the HTC has an inferior radio (BT 2.1 versus 3.1 in the 920) the functionality is far superior.

The button placement on both phones seems a bit strange to me.  The Lumia 920 has a single row of buttons on the right side - Volume Up/Down, Power and Camera.  The HTC moves the power button to the top of the phone and keeps the remainder on the right.  Neither has any buttons on the left side at all.  I never really liked the power button being on the right side, preferring instead for it to be on top like the 8X but the right-side button placement on the device is all wrong for me.  No matter where I grab it to turn the power on or off I'm always pressing another button - usually Volume Down.  But I also hit the camera button a lot.  I think the reason for this is that the buttons start rather far down the side, right where my fingers are if I'm gripping it left-handed or where my thumb rests if I'm holding it in my right hand.  The camera button is only a problem in my right hand as it hits dead center in the heel of my palm.  It's a small but irritating annoyance.  I never had this problem with any other phone.  I think the Samsung Focus had the best arrangement with two buttons on the right, one on the left, all in the right places.

So what's the verdict?  For my money, I'm sticking with the HTC 8X.  The Lumia 920 is actually a better phone but Nokia completely missed the mark on size and weight.  And I just can't stand those sharp edges - for the sake of comfort and usability they should adopt the 820 design across the range and ditch the post-modernist approach.  I miss the big keyboard and large screen but I'm willing to sacrifice those for a phone that fits in my hand (and can actually be used with one hand).  The Bluetooth issues were a real annoyance for me and I'm happy to have them resolved.  I would like to have the Drive app back but it's certainly not a deal-breaker.  It seems that HTC have learned from their mistakes and finally delivered a top-notch product.  Perhaps the Samsung Ativ S will change my mind but for the time being the HTC 8X is my choice for best all-around Windows Phone.  

Tuesday, November 27, 2012

What's With the New Blog?

A number of people have asked me why I've started posting here as opposed to my regular hangout on The SharePoint Cowboy.  There are a few reasons for this:

1. I need someplace to post non-SharePoint material.  I recently spent some time re-organizing my main blog and realized there's a lot of stuff in there that doesn't pertain to SharePoint and even more stuff I never posted because it's a work blog.  So this serves as a bucket for all my random nonsense.

2. I'm in the process of moving and updating the BinaryWave servers and I don't want to create a bunch of material that I will lose at some point.  Once the migration is complete I'll kick the SharePoint posts back into gear - there's a whole stack of 2013 stuff piling up on my desk.  In the meantime hit The SharingPoint for any new content.  This was my old blog before I moved it in-house to dogfood the SharePoint blog capabilities (way back in 2007 - yikes!) and I'm now using it as a mirror site and temporary sandbox.

3. I hate to say this but the SharePoint blog functionality is rudimentary at best (I'm being kind).  After fighting hard to get 2010 to emulate some basic blog features (like clean article links, automatic archives and permalinks - see here and here) without having to install something like CKS:EBE I got frustrated and decided to see how the real blog platforms had evolved over the years.  Sadly, it seems we're still light years behind in the SharePoint world and not gaining much ground.

So there you have it.  I'll be popping up on here from time to time, talking about things like mobile computing, smartphones, tablets, and a whole range of other topics.  But no SharePoint.  Or at least as little as I can possibly manage...

Friday, November 23, 2012

Living with Windows 8 - A Report from the Front Lines

Unlike most new OS releases I was a bit slow to adopt Windows 8 as part of my daily work routine.  First, I wanted to have a touch-enabled machine so I could really get a feel for both the tablet and desktop experiences.  Second, I wanted to convert a large number of existing virtual machines to Hyper-V and I knew that process would be time consuming.  Finally, and perhaps most importantly, I was happy with Windows 7.  I knew how it worked, understood the limitations, and was generally comfortable with all the ins and outs.

I finally took the plunge when the RTM bits became available. Surprisingly, the install on a Lenovo W520 notebook went quite well.  At the time there were very few native drivers from the manufacturer but the Beta ones worked well enough to get me going.

Once I was up and running, I dove right in and started using Windows 8 for daily work tasks.  I should probably mention that I wasn't really flying without a net - prior to installing the OS on a new SSD drive I did a Physical-to-Virtual conversion of my existing Windows 7 desktop AND preserved the original disk.  Just in case things didn't work out so well.  On the other hand, I wasn't just playing around in a throw-away virtual machine - I needed to be productive from hour one with all my core applications - Office, Hyper-V (for SharePoint VM's), Lync, Visual Studio, and so on. 

In addition to running Windows 8 on the ThinkPad, which is a hulking brute meant to serve as a desktop replacement, I also picked up a Lenovo Ideapad Yoga convertible tablet to get a flavor for the consumer features of the new OS.  I decided early on that Windows RT is just not for me - I don't need another device that can't run full versions of Office and other desktop software.  So I wasn't really interested in the Surface but I've been a tablet user since the 90's (no, Apple fans, Steve Jobs did not invent the tablet, no matter how much you'd like to think so; in fact, Microsoft has done more for touch computing than just about all other software companies combined) and a touch-enabled device, even if it is a bit larger than the modern consumer tablet, held a lot of appeal for me.

So how has it all worked out so far?  Read on for the pros and cons from my perspective.  Bear in mind, I'm coming at this from the viewpoint of a business user, developer, and Microsoft adherent.  Your mileage my vary.

PROS

Overall, Windows 8 seems fast and responsive.  This really doesn't come as much of a surprise as I run my core machine on top-of-the-line hardware with tons of RAM but even on the Ideapad Yoga, which is a Core i5 model, things just zip right along.  Applications pop right up and dialogs snap in and out like they should.  I've noticed a few minor areas that seem to have improved greatly, like the acquisition of wireless networks, printers and bluetooth devices, but that may be a subjective analysis. 

Surprisingly, all of my Windows 7 software seems to work without a hitch.  As one would expect, all the latest Microsoft applications run well, but so to, it appears, do all the legacy applications I have scattered about my hard drive.  I was expecting things like the control panel application for my NAS device, Logitech mouse and keyboard utilities, WinImage, Zune and so on to behave erratically but they are all humming along nicely. 

A welcome addition that adds a bit of efficiency to my day is the file explorer ribbon.  I've never been a big fan of the ribbon concept overall but in this context it works quite well.  Having the most common commands available at all times is helpful.  On the Yoga, when I'm in tablet mode, the ribbon is a huge boon - it saves a ton of time that would otherwise be spend pressing and holding to get a right-click menu.  And the ability to (finally!) mount ISO's natively is something we've needed since the dark days of Windows 95.

Personally, I'm counting the disappearance of Aero as a positive thing.  I was never a big fan of glassy buttons and all that shining chrome.  I'm not advocating the flat dullness of X-Windows or Mac OS but a return to a more-or-less 2D paradigm is just fine by me.  I need to find the Close button quickly not gaze in admiration as it glints in the afternoon sunlight.

Perhaps the best feature in Windows 8 if you live within the Microsoft ecosystem is the direct integration of the OS with all of the Microsoft services - Live, Messenger, SkyDrive, etc.  Being able to use a single login across multiple machines with a cohesive experience is good, maybe even great in its own right, but having direct integration with the Cloud is simply fantastic.  Although some sites and services require additional logins for the most part my Live ID follows me wherever I go.  This can be a bit too much of a good thing when I'm logging in and out of various Office 365 sites using different ID's to test various code deployments but overall it's a welcome addition.

The touch experience in tablet mode is quite good; better, in fact, than I was expecting.  This may be due in part to the excellent hardware and drivers Lenovo provides but the core UI elements also work very well in a touch-only scenario.  Swipes and gestures are smooth, tiles are responsive, menus fly in and can be easily dismissed.  Alas, this only goes as deep as the rather superficial Metro skin; once in Desktop mode the picture isn't quite as rosy.  Although the ribbon can be a big help there are still a ton of menus and selection items that display small text better suited to a pointy mouse arrow than a stubby index finger.  Take, for example, one of the most critical Windows components: Control Panel.  By default, all the options are shown in Category view, and the links are almost impossible to hit accurately using a finger or rounded stylus.  Switching to Large Icons view helps but then all the organization disappears.  It's quite apparent that Microsoft focused their efforts on touch-optimizing the Metro UI and left the desktop to pretty much fend for itself.

On a related note, the on-screen keyboard in Windows 8 is on par with the best Android keyboards and, in my opinion, far superior to the IOS offering.  The keys are big and well-positioned, especially in split-mode, and the number/symbol pad seems much more logical than the SHIFT+KEY combination on other keyboards.  For those like myself who still believe in pen-enabled input, the one-touch access to script and remarkable character recognition capabilities of the inking utility set Windows far above the competition.  This is one area where the long legacy of tablet support from Microsoft shines through and it makes a big difference for professionals who rely upon accurate script-to-text conversion in the field.

The biggest win for me with Windows 8 is native Hyper-V support.  For years those of us who need to run virtual machines on portable computers have been forced to either buy a competing product or install a server OS on hardware that it was never meant for.  It was always a bit embarrassing to be on stage at a Microsoft event running demonstrations of Microsoft products on a competitor's virtualization platform.  Finally, they got the message and gave us a proper client virtualization environment.  I realize this doesn't mean much to the vast majority of Windows users but it's a huge win for a small but very visible portion of the technical community.  It's not perfect, mind you - we still don't have folder sharing or direct USB support - but definitely a big step in the right direction.

CONS

Microsoft had a hard task in front of them - create a new OS to serve the exploding consumer tablet market without sacrificing features or functionality for their core enterprise customers.  It's too soon to draw any definite conclusions on the consumer front but based on my own experience using the Ideapad Yoga in tablet mode they seem to have finally figured this one out, successfully transferring the lessons learned from Windows Phone to a larger device format.  Unfortunately, they may have done so at the expense of their core user base who rely upon Windows to accomplish their day to day tasks. 

Nowhere is this more evident than when you first switch from the Start page to the desktop.  Getting rid of the Start menu was, in my opinion, the wrong move.  Same for the inability to natively boot right to the desktop.  I get what they are trying to do here and from a consumer perspective it makes sense.  Consumers have all the time in the world to play around with cutesy "charms" and full-screen apps but in the workplace time is money; the lack of a Start button, and all the associated functions we've come to expect over the last 15 years, makes it feel like there are a few extra steps involved for every task.

Pressing the Windows key and typing to find the application I'm looking for is just not an effective replacement for Start > All Programs.  It sounds more efficient, and in some cases it actually is, but that's not how millions of users work.  We like our program folders, our shortcuts to most used programs, and quick access to our libraries.  Not to mention the power and search options all being together in one place.  Turns out, the Start menu was actually a good thing - and the quickest way to stifle adoption is to get rid of what was working just fine and replace it with something that requires users to learn a new way of doing things.

Speaking of impediments to user adoption, the lack of proper menus now forces all of us to memorize a whole raft of new keyboard shortcuts.  Not one or two, mind you, but at least a dozen or more.  I already have enough to do - I can't be asked to make extra room in my mental hard drive for Win + D, Win + I or, at the extreme end of ridiculous, Win + . (period).  And no, Win + X absolutely does NOT serve as an effective replacement for Start menu shortcuts.  I don't want to leave my desktop to search in some full-screen app.  The old way of just typing into the search box and getting in-place results was more efficient, especially as I didn't have to Alt + F4 or Win + D to get back to where I was.

As mentioned above I really like the native integration between local and cloud accounts but there are some rough edges.  For instance, when I changed the password of my Live account it refused to sync with the login account on either of my computers, forcing me to use the old password to login and the new password for SkyDrive, Messenger, etc.  In the end I had to switch back to a local account, logout, login with the new account, then switch to my Microsoft account, then repeat the process again on my second machine.  It really shouldn't be that difficult.

There are lots of other small areas that also need some improvement.  The side-scrolling when using a mouse seems to be quite random.  On the Start page it works just fine - move the mouse all the over to the right and the page scrolls accordingly.  But try the same thing in the People or Music apps and nothing happens.  That's downright frustrating.  Mouse scrolling seems to work in this case but the using the scroll gesture on a trackpad takes more effort than just moving the pointer to the edge of the screen.  

On the browser front, IE 10 is fast and looks good - no question about that.  But, like so many versions before it, things just don't seem to work quite right.  As soon as I fired it up I noticed that the CSS on my home page wasn't displayed correctly.  It looked fine in all other browsers and in previous versions of IE all the way down to 7 but page elements were all out of whack in 10.  I'm not alone here - after using it for a while I've noticed many web pages that don't render the way they should.  And then I discovered, as many others have, that dialog buttons in all my SharePoint 2010 pages failed to fire.  I had to switch out to Firefox or hit F12 and switch to IE 9 mode just to save or cancel an operation.  Yet another annoyance that I really don't need in my day.   

Having a dual-monitor setup also reveals some quirky behavior.  Extending the desktop across monitors is easy enough and a lower left corner click will bring up the Start page on one monitor while leaving the desktop showing on the other.  That's nice - until you click on the desktop.  Then the Start page disappears.  So my plan to run run Start and full-screen apps on one screen while working happily away in Visual Studio on the other had to be scrapped.  This is strange behavior and speaks to the version 1.0 flavor of the whole experiment.

And that leads me to my final and most important observation.  This is the umpteenth release of the core operating system that runs most of the world's computers used for business.  This is not a toy - it's a critical piece of technology that companies rely upon to be stable and reliable.  Which it was (for the most part) in the last release.  But now it's a weird crossover experiment that tries to cram two competing visions together without really succeeding at either.  It does not give corporate IT managers confidence in a new platform nor does it provide any assurances that their needs are an important part of the feature-planning process; in fact, it would appear that quite the opposite is true.   What IT wants is security, compatibility and reliability not a bunch of eye-candy designed to (hopefully) lure twentysomethings away from their iWhatevers.  My suspicion is that many corporate IT departments will take a pass on this release.  While Windows XP is starting to slowly die off in the enterprise it's still holding on because Vista failed to deliver the goods.  In the near future I suspect that XP will likely be replaced by Windows 7 instead of Windows 8 - and that's not good news for Microsoft no matter how you spin it.

CONCLUSION

My experience thus far is that Windows 8 is a mixed bag.  On the one hand, it shows a lot of promise for consumers in the portable device segment.  On the other hand, it has very litte to offer Microsoft's primary customer base inside the enterprise.  I believe they could have avoided all this by taking the Media Center approach (another good product sadly put out to pasture) - deliver incremental improvements to business users while providing consumers with the ability to enable the portable features (or, alternatively, make the portable UI the default but allow corporate IT to disable it via policy).  Then both camps would be happy - business users get their familiar desktop and consumers get live tiles (assuming, of course, that you consider live tiles a feature worth having).  Instead, we have a clunky amalgamation of competing feature sets in which no user truly gets what they want. 

I applaud the effort to break new ground but a one-size-fits-all strategy probably isn't going to cut it.  While Windows Phone and XBox were two areas of great success (you can argue about Windows Phone adoption and its relative immaturity but the UI makes every other platform look like a bunch of old Palm Pilots) it doesn't mean that same design philosophy can carry over into other areas.  Trying to force business users to buy into consumer features is just not smart - they won't pay for functionality they don't want, especially if it ends up making their jobs harder instead of easier.

The bottom line for me is that I'll happily keep Windows 8 on my convertible tablet where I can actually take advantage of the new UI elements.  But if it wasn't for the native Hyper-V support I would switch my primary desktop back to Windows 7 in a heartbeat.  I've got enough to do without the OS getting in my way and, quite frankly, I was happy with Windows 7.  It did what I wanted it to do and I didn't have to think about how to use it.  For better or worse it felt natural whereas Windows 8 is uncomfortable in all the wrong ways.  I can only hope that Microsoft gets the message and does something in a service pack or R2 release to fulfill the needs of business users.  But that may be a long time coming, if ever, so until then I'll just Win + Curse my way though it and hope for the best.
             

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