Monday, January 26, 2009

Kongregate: Casual Meta-Game ?

Since a few weeks now, I play some casual games and other flash games on Kongregate. Kongregate is a portal promoting new games and helping developers to develop better games by getting more feedback and to earn more money because it remains the main reason for work.

By playing Kongregate's games, it is possible to earn points, badges, and level up. Earned badges and total scores appear on the players' profiles; often motivating them to play earn more badges by playing more games.

This game-around-the-games mechanism - or Meta-game - is quite interesting as players are motivated to play more to games they like; until they earn all badges for example. It also pushes players to discover and play new games.

This mechanism is also enforced thanks to the existence of Kongai, an online battle-oriented card game. Kongai relies on similar (but less complex) concepts than older classical card games like Magic The Gathering or Decipher' Star Wars Customizable Cards Game. Cards can be of course purchased but also and preferably earned through playing any game hosted on Kongregate. This is called challenges). More cards can be earned by playing Kongai itself. As for any collectible cards game, these come with several editions and you can view them through an online card album.

This concept of Meta-games or games around games is quite thrilling. Once you start caring for your score, the race is up and you will quickly try to reach just another level. As Kongregate proposes thousands of games, you will always find some that you like or care enough to earn one more badge. The online card game attached around is also a good idea even if in this particular case the Kongai game itself could probably be a bit more sophisticated.

Now I wonder if a meta-game concept could be used with massively multiplayers online role-playing games (MMORPG) ?

Saturday, January 17, 2009

Google is the Heir of Sun Tzu

A few days ago I posted a pretty long article about my experience with setting up a SharePoint intranet. Less than twenty-four hours later, I received a LinkedIn invitation from someone working for the same company as I do but located at the other side of the world. That person kindly introduced himself to me, wrote a couple of nice words about my SharePoint article, and asked to be connected to each other. My first reflex was to immediately accept his network invitation - after all we are colleagues - and to thank him for his kind word.

I then started wondering how he had found my SharePoint blog article. My article was not the first one to be written about SharePoint. It is surely not the most detailed or the most complete article about that topic. Additionally my blog is not (yet ?) one of the most read and famous blogs of the world wide web. So how could he find me through that article so quickly ? Not even a day had passed since I had posted it on BlogSpot.

I then remembered that a few hours before getting the LinkedIn invitation, I had received my usual Google Alert digest. For those ignorant of Google Alerts mechanism, Google Alerts are email updates of the latest relevant Google results (web, news, etc.) based on your choice of query or topic. In other words, you enter a keyword or two and Google will bring you the search results right into your mail and when something new it added on the Internet concerning that keyword then a it will appear in your next Google Alert. And on that day, my Google Alert digest tuned for my company name contained my SharePoint article. Needless to say that from there it became as clear as 1 + 1 = 2. All people using Google Alerts with the same keyword had received the link to my blog. This was the right explanation. It could not be otherwise and a few hours later I even received the written confirmation. It was a good guess.

So what is the true meaning of this story ?
Google knows it all. It knows everything available online about you, about your company, about your competitors. It knows what has changed or what is new, and it knows it before you do. As such, Google sets itself in straight line with Sun Tzu so famous principle:
Know thy self, know thy enemy. A thousand battles, a thousand victories.

Wednesday, January 14, 2009

Installing SharePoint Services 3.0 in a Snap

Whenever you have to implement an Intranet project, there is always a time when someone asks something like "Could you come with a very cheap solution for an small Intranet proof-of-concept in the coming days ?"

So last week I decided to create a small Intranet prototype with limited features for a limited audience and using Windows SharePoint Services 3.0. Why WSS ? Simply because we started implementing SharePoint Server 2007 (MOSS 2007) for another project and as such I tried to remain coherent in my implementation choices.

I started with a virtual machine running Windows Server 2003 R2 and checked it was fully patched before going further. I then installed the .Net Framework 3.0 on it.

The second step was to enable the Internet Information Services (IIS) role on that server. Once enabled I needed to check if ASP.NET 2.0 was indeed used by IIS. For that, go to IIS manager -> Websites -> Properties and check that ASP.NET 2.0 is used. If an older version is used then under command prompt type:

%windir%\Microsoft.NET\Framework\[version]\aspnet_regiis.exe" -i


regsvr32 %windir%\Microsoft.NET\Framework\[version]\aspnet_isapi.dll

Don not forget to replace [version] by your ASP.NET version. In my cas, it was v2.0.50727.

The next step is about installing Windows SharePoint Services and I strongly advice to read beforehand this Microsoft document about how to create the right accounts. Even if you think that Microsoft recommendations are way too complex, the minimum is to use a different account to install WSS and SQL. Use an administrator or generic installer account but do not use your own domain account to perform the installation on the server.

Once you have created the (right) accounts (including your installer account), you can download WSS. Simply follow the instruction and use the same installer account to configure your database.

Once done, under command prompt, type stsadm. If that command is unknown then add this file to the PATH environment variable: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN.

I then decided to immediately Install most of the SharePoint Fantastic 40 Applications Templates, starting with the ApplicationTemplateCore.wsp. The installation is quite simple still using command prompt:

stsadm -o addsolution -filename [path to file]\ApplicationTemplateCore.wsp

stsadm -o deploysolution -name ApplicationTemplateCore.wsp -allowgacdeployment -immediate

stsadm -o copyappbincontent

The complete installation instructions for the templates installation are available from Microsoft. In short, you only need to pull the solution file, template_name.wsp, from the extracted distribution. To add the solution file to the solution store, type the following commands:

stsadm -o addsolution -filename [file_path]\.wsp

stsadm -o deploysolution -name template_name.wsp -allowgacdeployment -immediate

To check the deployment status, browse to the WSS Central Administration site. Click the Operations tab, and then click Solution management under global configuration.
Once all solutions are marked as "Globally Deployed", run iisreset from the command line.

I then realized that IIS had a default website running on port 80 and the WSS Centra Administration site was running on some exotic port. As I did not need the default IIS site, i decided to disable it (from the IIS Manager console) and to switch the WSS site to the port 80. Happily I found an excellent article on TechNet explaining how to change the Central Administration Web site port number (Windows SharePoint Services).

At this point, I had a small SharePoint site up and running and started creating some sites in order to test the templates and get familiar with the permissions and other settings of SharePoint. I was slowly getting to where I wanted to be.

The next step involved the upgrade of the standard SharePoint search engine to Search Server 2008 Express and this TechNet article about Search Server 2008 installation was of great help.

I got a small frustration when noticing that SharePoint and Search Server did not support PDF documents. After googling a bit, I found a solution for the missing PDF icon display and even a simple way to have Search Server crawling through and indexing PDF documents. The solution involves installing Adobe Reader 8.x or 9.x on your SharePoint server. While the above article was written for Adobe Reader 8, it worked just fine with Adobe Reader 9. While testing the search server, I noticed that no Adobe PDF documents were returned in the search results but i could quickly fix it thanks to a KB article. (Microsoft KB 927675)

As I felt confident now that everything worked as expected, I even spent some time to add a company theme which is a simple operation perfectly described this article about custom site theme for SharePoint 2007. Well to be honest, I merely threw out the foundation of the theme and still have to update the CSS file.

Finally I even cared about online presence using MSN accounts. Once you fill in the SIP address of your user account personal settings with your MSN or Windows Live email address then you have a cheap way to see if some of your colleagues are online, providing your company does not block all MSN traffics. The trick here is to have a recent Windows Live messenger client on your PC (and not an old v4.x like I still had) and to add your colleagues on your contact list.

For those wishing to consult their WSS / MOSS log files through the Central Administration, there is a cool Log Viewer project on CodePlex allowing so. Simply download the WPS file and install it like any other solution using your installer account. Then do not forget to perform an iisreset to be able to see the link in your Operations tab under Logging and Reporting.

And that's it.
Within 3 to 4 days you have (at least I have now) a very cheap and decent Intranet perfectly suited for small department or projects management. By cheap I mean it only costs one Windows 2003 R2 license and a few days of work. For that price you get an Intranet platform with simple workflows, pre-defined themes and templates, some simple document management features including approvals and versioning, a decent search engine crawling Office documents and PDFs, and even a simple online presence add-on. On top of that, you got familiar with the basics of that monster which is SharePoint. Those days were quite well spent if you ask me.

Thursday, January 8, 2009

Never Release Software Before a Leave

This is one of the first rule I learned and of course i learned it the hard way: Never ever release any piece of code into production before going to bed, vacations, leaving your computer or even before Christmas.

Even without taking Murphy's Law into consideration, it is only best practice to remain available immediately after any change to your IT production environment. And of course you only deploy changes after having carefully developing them in a dedicated environment and testing them in yet another environment (classic 3-tier environment).

This rule, we - at SW Combine - learned it the hard way several times, releasing some new game features right before going to bed only to find a crashed server only a few hours later when waking up. naturally we decided not to let that happen anymore and to never ever release anything before leaving.

However we had underestimated the dark side of temptation. Despite all our good resolutions and even also some pretty decent precautions, we released a very important game upgrade immediately before going to bed and while having the main developer also leaving for Japan for two weeks only hours later. And guess when it all happened ? Around midnight on the 23 of December 2008 when everyone was more thinking to partying, eating, and drinking than coding and when availability was a scarce resource.

So what was the result ? Well we got a crashed server. We got instabilities on our MySQL database leading to further random crashes and we got over 270 reported bugs during the following two weeks.

And do we regret it ?
Not a single minute. The release of this important patch has federated the team into a joined effort like we too rarely had before. All available developers put their hands into the mud (1). During the last fifteen days, we fixed over 170 of these bugs and released a patch every 2 or 3 days (5 patches in total) to solve the immediate problems. Aside of the new features fixes, a lot of minor improvements were released by the rest of the team contributing to the global effort and improvement of the game. Ultimately the entire team feels stronger and more motivated after these two weeks. We did the opposite of what every software development manual would say and yet we have no regret. This is probably one of those exceptions which confirms the rule.

I would not want to end this post without thanking those who worked hard and long on this upgrade: kudos and thanks go to Sin, Khan, BK for the main effort but also Mach, Mikel, Aurius, Git, Jeb, Syn, Jen and those I forgot. You helped, it counted, we progressed.

(1) I know some who will surely try to kill me for implicating that their code could be compared to mud. ;)

Friday, January 2, 2009

Microsoft Zune Dies on New Year

Many Microsoft Zune music players went out of use during the New Year's night. It has been observed that these MP3 players were programmed to work for 365 days in 2008 instead of 366 as 2008 is a leap year. 2008 was a day too long for Zune. Complaints have been flooding on every Zune user's forums.

According to Microsoft, a bug linked to the date system is the root cause. The internal clock driver did not take into account the 2008 leap year and based itself on a normal 365-day long year. Still according to Microsoft, these start-up problems only concern the 30 Go Zune version launched during 2006.

Similar errors are more frequently observed during year changes. The most famous date-related software bug was of course the Y2K Bug which generated a lot of fear for very few damages.

Microsoft pointed that the Zune problem should disappear by itself. In order to fix the problem, Zune users have simply to completely discharge their Zune players before charging it again; a simple cold start for new year in fact.