Review: Minesweeper for Windows Phone 7

Minesweeper for Windows PhoneLast month, Microsoft released two free Xbox Live games for Windows Phone 7, one of which being the classic Minesweeper. While releasing any game for free is a great way to ensure a lot of people play it, is Minesweeper for WP7 worth your valuable time?

Being the nerd that I am, I was excited to see Minesweeper see a release on WP7. I’ve sunk many hours into this game over the years, becoming quite good at Expert level puzzles. Originally released for the Windows platform in 1990, this version manages to add some nice new features while staying faithful to the original.

Gameplay

The core of the game consists of the original gameplay we all remember. If you love Minesweeper on the PC, everything will feel familiar here. The game board consists of a matrix of little squares, with the size of the board and number of mines varying based on the difficulty. The game starts when the player clicks on an arbitrary square, at which point the mines are randomly generated and hidden behind the squares. Of course, the challenge comes from figuring out which squares contain the mines. Clicking on a non-mine square will reveal a number indicating how many adjacent squares contain mines, giving a clue as to where the mines may be hidden. However, make a single mistake, and BOOM! It’s game over.

New Features

Gameplay
Updated, yet simplistic graphics for your finger-poking pleasure.

While the core game is definitely not groundbreaking, Microsoft has added some new twists to make the game really shine. The most obvious new feature is the power-up system, which gives the player certain powers designed to help solve the puzzle. One power-up acts as a shield and allows the player to click a single mine without losing. Another uncovers a certain amount of squares and automatically flags any mines within the range.

As the game is played, experience points are earned which unlock new power-ups. Each power-up has a cost associated with it, and each time it is used, tokens are deducted from the token bank. Over time, the tokens regenerate, at which time the player can use more power-ups. This system definitely helps add a new dynamic to the classic gameplay, while paring down the difficulty of some of the harder puzzles. Did I mention that highest difficulties are downright tough?

Aside from the power-up system, this version also adds Speed Mode, which is nothing more than playing with a count-down timer, rather than the classic count-up timer. You will also find Xbox Live Achievements, with a paltry 50 Gamerscore available to be earned. More importantly (this is a mobile game after all) Microsoft has given players the ability to suspend a game at any time and resume it later. This is perfect for receiving phone calls or texts, or when your real life requires you to temporarily stop playing, without losing any of your progress.

The only drawback of the game being free is that it is ad-supported, so be prepared to watch ads come in and out across the top of the screen. It in no way hinders gameplay or enjoyment of the game, but it is worth noting.

Bugs

I did experience one minor bug worth mentioning during my extensive playtime with the game. Occasionally when I would try to start a new game, the power-up selection screen would pop up, even when I had not clicked on it. I’d click the exit button to get it to go away, and then start the new game. This would seem to cause the new game board to be unresponsive, forcing me to exit back to the main menu. It’s definitely annoying, but it’s not a game-breaker and fortunately, it doesn’t occur all that often.

Summary

Overall, the WP7 version of Minesweeper is a solid brain-teaser. Minor glitches aside, if you love the classic Minesweeper you’ll probably love this updated version as well. If you never got into the classic game, this version may add enough fluff to warrant a second look.

How to get banned from the PlayStation Network in 30 days or less

PlayStation Network BAN
If you know what you're doing, it's not that hard to pull off.

I’ve written about the sorry state of customer service in the world today and PlayStation’s Customer Service Department is no different. In fact, Sony has assembled a highly talented team of individuals when it comes to bungling customer relations to the point of losing a loyal customer forever.

A loyal customer for 16 years that’s spent an unfathomable amount of money since the original PlayStation was released in 1995. A loyal customer that sold his Xbox 360 to buy a PS3 the week it came out.

This is how I described myself, before yesterday.

Yesterday was the day my PlayStation account was banned forever.

I’ve always wondered how one can possibly get their account banned. The PlayStation network is full of anti-Semitic, racist, sexist usernames, and none of these users seem to have any problems accessing the PSN so they can verbally abuse every person they ever meet online. Sure, there’s a system to report these types of individuals, but how often does Sony ever take action against them?

Being one of the lucky few who’s been banned, I’ve decided to compile a step-by-step guide of a sure-fire way to get banned from the PlayStation Network in 30 days or less. 

1. Store your credit card information on your PSN account.

In hind-sight, this was a stupid thing to do, especially after witnessing Sony’s highly talented team of network security specialists in action. However, this step is necessary for getting your account banned.

2. Wait for your PSN account to get hacked.

There’s not really much to do here except wait. But rest assured, Sony’s network engineers have all but guaranteed that it will happen sooner or later.

3. Allow the hacker to purchase $220 worth of content in 6 minutes.

The $220 will be charged to your credit card. I actually feel kind of lucky that $220 was all that was taken from me. I also feel lucky the hacker didn’t hijack my account by changing my password. Either way, the specific dollar amount doesn’t matter so much, but a larger amount will increase your chances of success.

The 30 days or less starts here.

4. Call PlayStation and report unauthorized use of your PSN account.

This step is fairly self-explanatory. You will get a lecture about fraud, and they will tell you to dispute the transaction with the issuer of your credit card. After being on hold for what felt like ages and finally getting to explain the situation, I was actually told “Sorry, I can’t help you.”

5. Dispute the transactions with the issuer of your credit card.

This was actually a surprisingly painless process. I spent 5 minutes on the phone with a representative from my bank, who asked me a series of questions about the disputed charges. About a week later, I had to sign an affidavit confirming my intent to dispute the charges, and I also received my new credit card.

6. Wait a few weeks for your credit card company to refuse payment.

The transactions should be removed from your account immediately, but you’ll find out in a few weeks if your dispute was successful or not. Make sure you didn’t fraudulently dispute legitimate charges, as you could end up in legal trouble.

7. Turn on your PS3, and be notified of your ban.

PSN Account Banned
Success!!!

8. Create a new PSN account, or buy an Xbox 360.

You will still be able to access your downloaded games as long as you don’t delete your banned account from the console. The only thing that will be lost is Trophies, so be prepared for your online ego to take a hit.

How To: Change your cellular phone number with Verizon Wireless

Verizon Wireless
Customer Service at it's finest?

In the Digital Age, most corporations give their consumers ways to manage their accounts online, without having to visit the nearest retailer to update their information, account settings, or other information related to their account. This is not only a great way to provide excellent customer service and allow changes to come into effect quickly and easily, but it is the norm in today’s society, a trend that has been continuing since the 90’s.

I moved from Grand Forks, ND to suburban Chicago a year and a half ago and I finally decided to change my cell phone number to a local Chicago-area number. I know, it took me long enough, but what can I say? Anyway, my 2-year contract with Verizon Wireless was up for renewal, and I was looking to upgrade to a Windows Phone. I figured changing my number and getting a new phone along with it should be no problem.

I was wrong.

I picked out an HTC Trophy (which is an excellent smart phone, by the way), and the representative activated it for me and renewed my contract. I also told her I wished to change my number to a local number and her response was to “do it online, or we have to charge you a $15 service fee to do it in-store.” She went on to explain that one can change to a local number at any time for free, thus it made sense for me to do this online. I was agreeable, as it seemed to make sense to me, also. Plus, I was already signing my soul over for 2 more years, and didn’t feel like offering any more of my money toward the cause.

Once I got home, I went straight to the My Verizon website. I entered my User ID and password, and started looking for a link to change my number. I couldn’t find it on the main page, or in any of the other sections of the site. Fortunately, searching for “change number” gave me the result I needed. Upon clicking on the first search result, a page came up displaying a curious error, stating something about pending changes on my account. And the date I had to wait until to make any changes? Three weeks in the future. Three weeks! So I was somewhat upset, but what’s a guy going to do?

After three weeks passed, so I thought I’d try again. I logged into the My Verizon website again, and went to the page to change my number. The error message was no longer there, so we were off to a good start. I selected my device to change the number, and…

Massive fail.

The phone numbers I had to choose from were from Grand Forks, ND, the same as my current number. I’ve clearly changed my address to my current address in Illinois, and clearly expressed my desire to change to a local Chicago phone number, but Verizon can’t even seem to get that right. I closed my web browser in disgust, and hopped in my car.

In the end, there are three easy steps to changing your Verizon Wireless phone number:

  1. Tell the representative that you wish to change your number to a local number.
  2. Demand that you change your number in store.
  3. Refuse to pay $15.

In this day and age, there’s something wrong when consumers can’t efficiently manage their accounts online. We shouldn’t have to waste our time driving to a store, and sales persons shouldn’t have to waste their time on simple customer service requests.

Has anyone else had similar issues with Verizon? Do other wireless carriers provide the same level of customer service?

Review: Official Twitter App for Windows Phone 7

When it comes to smartphones, there are certain apps that people cannot seem to live without these days. Sure, any old cell phone can make phone calls and send text messages, but who wouldn’t want to tweet random thoughts throughout the day, upload photos and comment on their friend’s walls during a long road trip, or check-in to each and every fine establishment they ever set foot in? Social media has changed the way we live our everyday lives, making these apps an essential download on every smart phone.

Available as a free download from the Microsoft Marketplace, the official Twitter app functions about as well as you would expect. With the touch of a finger, you can view recent tweets from all of the people you are following. With one more touch of a finger, you can create a new tweet to send to the world. Add in a few swipes, and you can see all of your mentions, messages, and lists, all without leaving the home screen. There’s nothing really groundbreaking here, but it works well.

It’s entirely possible to manage your entire profile and all of your Twitter settings straight from this app without need to use the Twitter.com website at all. However, there are some places the user interface that could be tweaked to be a little more user-friendly. For instance, to access your profile, you must click the “…” in the lower right corner and then select “profile.” This will allow you to view your profile, but how would I edit it? The pencil icon in the bottom toolbar looked a lot like an “edit” button to me, but upon poking it with my index finger, the app wanted to start a new tweet. To edit your profile, you must again hit the “…” in the lower right corner and then select “edit profile.” Here you can upload a new photo from your phone, as well as modify your personal information. Why it’s hidden under so many extra clicks and deceiving icons, I’m not sure. In the end, it does work well, albeit a little clumsily.

Another feature the official app doesn’t offer is the ability interact with other social networking sites, specifically the ability to simultaneously post your tweets to your Facebook profile as status updates. Other third-party apps provide this functionality, but I have not had the opportunity to work with any of them. I tend to shy away from third-party apps due to the threat of malware, at least until they’ve been released for a while and build a solid reputation.

And did I mention the official app is free? Who doesn’t like free?

Overall, the official Twitter app for Windows Phone 7 is a great app, providing all of the functionality you would expect from Twitter.com. None of the interface flaws or questionable design decisions hold it back too much, and future updates are sure to shore up some of my complaints. While I haven’t had the opportunity to spend time with competing apps, this one more than whets my tweeting whistle.

PlayStation Plus: Worth the fuss?

PlayStation PlusOn June 29th, 2010, Sony unveiled its premium service, PlayStation Plus, to its community of users. While many customers complain that it offers features that should be offered for every PS3 user, such as the ability to back up game saves to the cloud, the meat and potatoes of PlayStation Plus is the free and discounted content. Priced at $50 for 15 months, or $18 for 3 months, many gamers (excluding myself) have opted to pay the extra money for the benefits.

Is the service worth the price tag, or is it a waste of gamers’ hard-earned cash?

While PlayStation Plus has been out for a full year now, I didn’t get my first taste of the service until a few weeks ago, when Sony provided every active PSN account with a free month as an apology for their abysmal security architecture. None of the special offers through the service ever enticed me enough to fork over any money, but since it came my way for free, I gave it a shot.

Warning: The following article details my enjoyment, or lack thereof, with PlayStation Plus. Your enjoyment may differ greatly.

Premium Themes and Avatars

In the few weeks I’ve been able to download a slew of dynamic themes and premium avatars, which is undoubtedly cool. But would I spend my paycheck on them? Absolutely not. I figured I’d snag everything that I could while it was free, because the best tasting lunch is always free lunch.

  • Avatars: $0 value
  • Dynamic Themes: $0 value

Free Downloadable Games

I’ve also been able to download two stand-alone games for free. The first of which is Streets of Rage 2, which I enjoyed for about an hour and earned a handful of trophies. Yawn. The classic Sega Genesis game would have cost me $5 without PlayStation Plus, but I’ll probably never touch the game again. The other game was Magic: The Gathering, which I’d be lying if I said I enjoyed it even a little bit. Free or not, I can’t help but feel I wasted a part of my life I can never get back.

PlayStation Plus also offers a feature called Full Game Trial, which allows the user to download a full retail game and play it for an hour. My problem with this feature is that I’ll spend four hours downloading a 7 GB game, and the trial only lasts for one hour. Spending 80% of my time downloading and 20% playing isn’t exactly my idea of fun. Whatever happened to demos?

  • Streets of Rage 2: $5 value
  • Magic: The Gathering: -$5 value
  • Full Game Trial: $0 value

Discounted Content

For the past few weeks, discounted downloadable content has been available for several games, all of which I do not own. Since I own none of the games, I haven’t been able to take advantage of the discounts. Aside from DLC, several downloadable games have been offered at a discounted price. However, since I had no desire to buy any of them in the first place, why would I buy them at a discount? I still don’t want them. While it’s not Sony’s fault that I don’t happen to like the provided selection, it still provides me with no value.

  • Discounted Content: $0 value

Qore

The other free content included with PlayStation plus is Qore. I was able to download and watch the May and June episodes. While it’s kind of cool to get an “inside scoop” into upcoming games and movie releases, there’s no real value here. I could just as easily hop on my laptop or my new HTC Trophy and find the information, along with a plethora of additional tidbits.

  • Qore: $0 value

Early Access Content

Everybody knows that the American consumer loves to feel special. As a society, we just eat it up. Naturally, Sony leverages this by offering early access to content such as demos, new releases, and even highly-anticipated Beta programs such as Uncharted 3 . Maybe I simply don’t have enough time on my hands to dive into all of this content, or maybe I’m just a chump, but again, I have failed to take advantage of this portion of what PlayStation Plus has to offer.

While none of the early access content has a real monetary value, there definitely is some value to be had here. But between work, being married, owning a house, and feeding my evil cat, I don’t have time to jump into the free stuff. I’m still finishing Dragon Age: Origins, after all.

  • Early Access Content: $0 value

Additional Features

Aside from downloadable content, there are a couple of “premium features” that PS3 users receive. One such feature is the aforementioned ability to back up game saves to the cloud. This is supposed to be nice if you want to game on multiple PS3s, or frequently play over at your friend’s house. However, I’ve never had a need to use the feature. I understand that it’s probably an invaluable feature for many users, but not for me.

Another feature is the ability to auto-update your 10 last-played games, even when you are not using your system. The idea behind this is that you won’t have to wait to download and install a patch before you can jump back online and trash talk some guy living in his mother’s basement.

  • Additional Features: $0 value

Overall

In the end, I’d have to say that unless Sony ups the ante with its PlayStation Plus offerings, I won’t become a paid subscriber any time soon. It seems to follow a very popular business model of getting consumers to spend more money than they otherwise would.

  • Grand Total: $5 – $5 = $0

There’s no doubt about it: PlayStation Plus is a great $0 value. I can’t complain about the few weeks I’ve been a member because it was free, but is it worth the price tag for me? Absolutely not. Is it worth the price tag for you? Maybe.

If you’ve yet to try PlayStation Plus, I hope you find my overview of the features and benefits to be useful, and you can make your own judgment. If, like me, you tried PlayStation Plus for the first time because of the Welcome Back offer, how was your experience? Will you become a paid subscriber?

SharePoint: Resolving Access Denied errors for Site Owners

Recently, I experienced a very strange problem while working on a client’s SharePoint 2007 install. SharePoint’s permission management isn’t always the easiest or most intuitive, but for the most part it works pretty well. And then there are the head-scratchers, which make absolutely no sense until the cause of the problem is discovered.

The Problem

Users belonging to the Site Owners group were receiving “Access Denied” errors on a particular site. The Site Owners group has Full Control permissions, so logically they shouldn’t be receiving “Access Denied” for any reason, unless a specific page or library does not inherit its permissions from the site. Thus, this was the first thing I checked. All of the lists in the site were indeed inheriting permissions, so this could not possibly be the issue.

Access Denied
But I'm a Site Owner! I have Full Control!

The “Access Denied” error made it clear that the users in the Site Owners group did not have permissions to access something, but what could it be? After Googling around for a while, I found a blog post detailing a similar issue and the possible solution. In the case detailed by the blogger, the Master Page Gallery for the site collection had been set up with custom permissions. Even though users had Full Control of the site, they did not have permissions to load the Master Page, causing the Access Denied error throughout the site. This prompted me to check the Master Page Gallery permissions on my client’s site, but I found this was not the cause.

What could possibly be the cause?

With no other ideas, I decided to look in the SharePoint Group settings and make sure they were configured correctly. I noticed that all of the groups were set up so that only the group members could view membership of a group. Essentially, this means that someone in the Site Owners group cannot see which users are in the Site Members or Site Visitors groups, or any other custom groups that may be configured.

Somehow, SharePoint was trying to view group membership of a group to which the logged-in user was not a member. I toggled the group settings so that so that everyone could view group membership, and Voila! The “Access Denied” error went away.

Group Settings

Now that I’d identified the source of the error, I needed to identify the root cause. Why was SharePoint trying to view group membership using the current logged-in user?

This particular site had many custom web parts built by a third-party, so I started there. I set the groups back so that only members could view group membership, and then removed the custom web parts from a page. Once this web part was removed, the “Access Denied” error did not occur, meaning that the custom code in the web part was the culprit. It apparently was written to access SharePoint groups through the SharePoint Object Model, but was using the current user’s credentials instead of using elevated privileges or impersonation.

Attack of the poorly written web part

The moral of this story is to make sure your custom SharePoint solutions use the proper privileges when appropriate. The web part cannot do any more than the permissions it is given, and oftentimes a user, even a Site Owner, does not have privileges to perform many of the actions available in the SharePoint Object Model. Properly written code can mitigate this problem, while still maintaining proper security throughout the site. Poorly written code can cause headaches for everyone, especially Site Owners.

Dealing with Workflow Failed On Start (retrying) errors in Microsoft SharePoint

I don’t know why I expect SharePoint to work without problems. In almost every project I’ve done, some unforeseeable problem pops up that seems to make little sense. Maybe, after beating my head against the wall so many times, I’ve developed SharePoint amnesia, but I always expect the project to be a pleasant experience. I guess that’s just my inner masochist rearing its ugly head.

Recently, I had a working Visual Studio workflow for SharePoint 2007 which was designed to set access permissions at the list item level based on the metadata assigned to the document. When a document is added or updated in the library, the workflow will update the permissions associated with the document. Simple stuff.

Then we had a new requirement. Since permissions are assigned base on metadata values assigned to documents, what happens when the SharePoint groups and/or users associated with a value needs to change? With the current workflow, it would be necessary to manually run the workflow for each and every document. In a small document library, this would not be a problem. But when you’re dealing with a document library containing several thousand documents, this would be a life sentence.

In order to accommodate the new requirement, I had to modify the workflow to be able to loop through all of the documents in the library and re-apply permissions. Making the change was easy enough; the code that sets the permissions on one document simply had to be wrapped in a foreach loop of all documents in the library. Problem solved, right?

Failed On Start (retrying)
It's lying!

I deployed the workflow to the test environment and started it. It ran for several minutes with no apparent problems. The workflow history list was logging all of the tracking messages for each document, and permissions were being set as expected. Then all of a sudden, the workflow status switched to “Failed on Start (retrying).” Workflow history logs stopped appearing, and the workflow was certainly not “retrying”.

After several Google searches came up largely empty, I began making changes to the code to see if I could get a different result. Nothing was working. No matter what I changed, the workflow would run for several minutes and fail again. Then I decided to add more workflow history logging to pinpoint a particular line of code that may be causing the error.

With the new workflow history logs added into the code, I redeployed and ran the workflow again. This time I noticed the workflow was much quicker to fail. It seemed that the workflow history list had something to do with the problem. To test my hypothesis, I commented out the workflow history logs and tried again. Sure enough, the workflow ran to completion, without any problems. After I verified on a random selection of documents that permissions had been set correctly, I did my happy dance. Problem solved.

So what happened?

My best explanation of what the problem could have been is that the workflow was logging too many workflow task items, which eventually caused the workflow to crash. Since the workflow was originally written to run on a single document, it was adding 5-10 workflow history logs per document, depending on the values of the metadata tied to the document. Multiply this by 5000, and you get 25,000 to 50,000 new list items per workflow instance.

It is generally recommended to keep list sizes below a few thousand list items in SharePoint 2007, so the plethora of workflow history items was essentially crushing the workflow under its own weight.

CampfireThe moral of this story is this: Logging is great for debugging and ensuring proper operation of your workflows, but don’t go overboard. It’s like they always say: “Too many logs in the fire means no more roasted marshmallows.” Or something like that.

 

 

Internet Explorer 9: If Chrome jumped off a bridge…

There’s no doubt that Google has done something right with its increasingly popular web browser. I wrote an article earlier this year about my switch to Chrome from Firefox, mainly because the good folks at Mozilla decided that they should copy many of the core elements from Google’s acclaimed browser. It’s not that this is a bad thing, but it made me realize that if Chrome is good enough for Mozilla to copy, it must be worth using.

Now comes along Internet Explorer 9, fully compatible with Vista SP2 and Windows 7. As a web developer, I really couldn’t care less about another iteration of the worst browser in the history of the internet which constantly forces me to write two versions of my CSS. But as a tech enthusiast, I was curious to check it out to see if Microsoft could do anything to fix the problems that have plagued their browser for years.

I went to download the browser at http://www.beautyoftheweb.com/, fresh off the assembly line, and I’ve been using it almost exclusively since its release on March 14th, 2011. Not surprisingly, the newly designed browser looked very familiar.

To be fair, I expected it to look familiar; Internet Explorer typically doesn’t change too radically from release to release. But I am surprised, however, that it looked more like Chrome than Internet Explorer 8. Microsoft has streamlined the UI, providing as many pixels for page viewing as possible. But to be different, instead of utilizing the space above the address bar for tabs, Ballmer & Company decided to shrink the address bar down and squeeze the tabs into the space next to them, leaving an entire row of wasted space at the top of the window. The new design is definitely welcome, but it still feels like they missed the mark just a bit.

Bridge
Image courtesy of Brian @ http://www.geograph.org.uk/photo/370994

Aside from copying Chrome’s robust feature set and minimalist UI, they have added a few nice features, such as the ability to pin a website to your task bar. If you have a particular web site that you visit frequently, it is now easy to get there with a single click, saving precious seconds of your time and extending the life of your mouse a few clicks at a time. Unfortunately, this feature is only compatible with Windows 7.

Overall, IE9 is a huge improvement in design, features, and speed for Microsoft’s web browser. While many of the changes are a few years behind their competitors, it is without a doubt a step in the right direction. However, I can’t help but feel like IE9 is the crippled result of Google Chrome jumping off a bridge and landing on the rocks below.

If only Microsoft would do something to wean Windows XP users off of IE6…

MLB.TV: It’s That Time of Year Again

Batter Up!

At about the same time every year, I find myself with too much time on my hands. The Vikings have finished another season without a Lombardi Trophy, the Timberwolves are hardly a basketball team, and the Wild fail to do The State of Hockey hockey proud. What is a Minnesota sports junkie living in Chicago supposed to do?

Thankfully, the start of baseball season is upon us. Teams have reported to Spring Training, and the first game of spring is this Sunday night (February 27). All across the country, sports fans like me live in hostile territory, transplanted from their home market with few options for keeping up with their favorite team.

Fortunately, one option is fantastic in every way.

MLB.TV

MLB.TV allows sports fans to stream any out-of-market game during the regular season over the internet. For an arguably reasonable price of $120, fans of America’s Pastime have the entire season at their fingertips, in their living rooms, at the airport, at work, or anywhere else you can imagine. The package comes with video broadcasts of every out-of-market televised game, as well as the radio broadcasts of every game for the times when watching the game is not an option.

This works quite well using the web-based player on a PC, but it truly dazzles when it comes to my favorite PS3 app (sorry, Netflix). On days where my home internet was running fast, I was able to stream Twins games in 720p. On the other days, the video quality could be degraded gracefully to match connection speed, keeping me from missing any of the action. Since living in Chicago would otherwise limit me to watching the Twins play the White Sox if the Cubs don’t have a game the same day, this subscription is a godsend.

Features

As for the user interface, it’s all fairly standard design. The video player has pause, rewind, slow motion, and fast forward controls, as you would expect. If you have a DVR, this won’t add much to your viewing pleasure. If you’re like me and stuck with obsolete DirecTV equipment, you’ll wonder how you ever watched a sporting event without it.

A couple of the more attractive features include the ability to switch between broadcasts for the current game. If the game is televised in each team’s home market, you can choose which feed to watch on the fly. Also, if watching A-Roid run up the score with his artificially enhanced muscles gets boring, you can easily pick a different game to watch, all without leaving the UI. Overall, it’s much more convenient than the less-developed PC interface.

Drawbacks

MLB.TV is not without its drawbacks, however. For one, the commercial breaks are incredibly boring, even by baseball’s standards. On the PS3 app, you just get a blue screen informing you that your game will resume shortly. On the PC, they play lame commercials later on in the season, and is about as exciting as a game of curling. Occasionally, the game fails to resume streaming after a commercial break, which the only fix is to exit the game screen and re-load it. Nothing horrible, but annoying nonetheless.

With the second season of MLB.TV on the PS3, I’m sure the app will be better than ever. If they can make the commercial breaks less boring and fix the occasional streaming glitch, Major League Baseball just may knock another one out of the park. If you’re a huge baseball fan and you didn’t check it out last year, make sure you don’t miss out on any of the action this year.

How to Perform SharePoint Development On A Client Workstation

One of the most difficult restrictions for a SharePoint developer to deal with can be the requirement to do development on a SharePoint server.  Personally, I prefer doing my development on my local machine, eliminating the need to establish a remote desktop connection to a different machine in order to write code.

Unfortunately, SharePoint development requires many DLL files which are included with an installation of SharePoint on a server.  To make matters worse, SharePoint 2010 requires an x64 server, further complicating the issue.  Fortunately, there is an easy workaround that can allow a SharePoint developer to be productive, even while using their laptop on the road without an available internet connection.

Copy the SharePoint DLLs

As I mentioned before, SharePoint development requires DLL files that are included with a SharePoint 2007 or 2010 installation.  The first step is to grab these off of a SharePoint server.  For SharePoint 2007, they are located in the hive at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\ISAPI\, and for 2010 at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAP\.  Copy the DLL files in this directory from the server, and paste them at the exact same file path on your local machine.  Since your PC likely does not have SharePoint installed, you may have to create the directory structure yourself.

SharePoint 2007 DLL Directory
SharePoint 2007 DLL Directory

Register the Assemblies to the GAC

Now that you have the DLL files on your workstation, you will be able to include them as references in your Visual Studio projects just as you would with any other DLLs.  However, if you want them to auto-register with your project when you use a Visual Studio 2010 SharePoint template or a WSPBuilder template, you must register the DLL files in your local Global Assembly Cache.  To do this, open the directory on your workstation that contains the SharePoint DLLs and drag them into the C:\Windows\assembly\ directory.  This will register them with the GAC on your workstation, and Visual Studio should successfully find the assemblies when a template is loaded up.  Although these assemblies may be 64-bit, this will work fine even though your workstation may be 32-bit.

Global Assembly Cache
Global Assembly Cache

If you’ve successfully completed the two steps above, you should be able to write your code and successfully compile your project.  Once you generate your WSP file, you can then deploy it like any other WSP.

Please Use Caution

If you do development for both 2007 and 2010, you can do this for both on the same workstation; just be sure to complete both steps for each version.  Since the 2007 and 2010 assemblies have different Assembly Versions (12.0.0.0 and 14.0.0.0), you don’t have to worry about conflicts in the GAC.  Be sure to use caution, however, because in my experience, Visual Studio tends to grab the SharePoint 2010 version of the DLL even for a SharePoint 2007 project if they’re both registered on your workstation.  If this happens, remove the incorrect reference, and add a reference to the correct 2007 DLL from your 12\ISAPI directory.