Emperor Quest Won Peer Awards for Mobile Monday Global Summit 2008

Since the last 2 years I have been working with another developer on a multiplatform, multilanguage, and multiplayer game called Emperor Quest. Well, I was doing this on a part-time basis. Actually my role is more towards the architecture of the game involving gameplays, characters, items, and skills. To my surprise, this game has won the "Peer Awards for Mobile Monday Global Summit 2008". I was very happy when I heard this news from Just Mobile (M) Sdn Bhd. CEO, Mr. Melvin Wong.
What is Emperor Quest?
Emperor Quest is a multiplayer, multiplatform, multilanguage mobile game, first of its kind in the world. This game is multiplayer where players play against other players in duels. There are multiple duels to choose from.
Set in an ancient civilization era, players play against one another for two triumphs – to win the chance to be the Emperor, ruler of the game, or to win real world merchandise.
You will enter the game as a Citizen. You shall be given points to play. You will use those points to win more points from other players. The more points and experiences you gained, the higher your role will be, and the more power you will have.
Go to http://www.emperorquest.com for more info.
How does it work?
This game is multiplatform because player can play on either SMS, WAP, Java, Symbian, Windows Mobile, Flash Lite, EDGE, GPRS or 3G platforms. This way, no matter how old or advance a player’s phone may be, he can still play the game.
. Game Platforms:
  . Mobile platform. Playable on SMS, WAP, Java (J2ME), Symbian, Windows Mobile, Flash Lite, GPRS, EDGE & 3G
  . PC platform. Playable on Web (optional)
. Game Languages:
  . English
  . Chinese
  . Malay
  . Thai
  . Arabic
  . Spanish
  . Russian
Mobile Data Type
. Java (J2ME)
. Flash Lite
. 3G

My Experience with Mr. Darkie…

Hmm.. Just wanted to share some of my experiences dealing with Mr. Darkie last year. For those who knew me you’ll know who I’m actually referring to.. (try to imagine… people with dark skin). "laughing cunningly"

Scenario 1

Me: Hi darkie..

Darkie: Hi Loh. Morning. How are you?

Me: Fine.

Darkie: I need a favor from you.

Me: Yup. What can I do for you? (I sense something is really fishy)

Darkie: I need your help to add two fields, F1 and F2 into table T.

Me: Sure. No problem. When you want this to be completed?

Darkie: Yesterday.

Me: (CELAKA.. @#$%@#$% Yesterday and today you only tell me. ) Yesterday?

Darkie: Yup. Sorry about that. My PC crashed.

Me: (CELAKA.. You think I’m a small kid. What is PC crashed has to do with assigning task?) Oh. Sorry to hear this.

Scenario 2

Darkie: Hi Loh. Are you free now?

Me: Yes. Of course.

Darkie: I need your help.

Me: (yelling in my heart "die hard this time") Oh.

Darkie: Can you fetch me to the LRT station?

Me: Sure. No problem.

Darkie: Can you fetch my wife as well?

Me: (Sweat.. Can I say no?) Sure.

Darkie: Arr.. Instead of fetching me and my wife to the LRT station, can you fetch me to Mid Valley?

Me: (As expected…) Sure.

Comparing SQL Server Express with MSDE

Early this month, I have delivered a number of START.NET program workshops (.NET Framework 3.0- Windows Workflow Foundation, .NET Framework 3.0- Windows Communication Foundation, and .NET Framework 3.0- Windows Presentation Foundation). There are some participants who asked me to compare SQL Server Express with MSDE. I’ll do a more thorough comparisons on the two products over here as I have promised.
SQL Server 2000 MSDE is the predecessor to Microsoft SQL Server 2005 Express Edition (SQL Server Express), and is based on SQL Server 2000. If you are updating your applications to use SQL Server Express, you must consider the changes in feature support from MSDE to SQL Server Express.
SQL Server Express and MSDE Limitations
The following table lists the limits that have been set for MSDE and SQL Server Express databases.

Limitation                              MSDE Limit                 SQL Server Express Limit
Concurrent workload governor (throttle) Yes                        No
Database size limitation                2 GB                       4 GB
RAM support                             2 GB                       1 GB
SMP support                             2 (or 1 if MSDE is run on  1
                                        Windows 98 or Windows
                                        Millennium Edition)
MSDE and SQL Server Express Feature Support
The following table lists the changes in feature support between the products.
Feature Area                  Supported in MSDE?        Supported in SQL Server Express?
Merge Replication             Yes                       Yes, as a Subscriber only
Transactional Replication     Yes, as a Subscriber only Yes, as a Subscriber only
Snapshot Replication          Yes                       Yes, as a Subscriber only
SQL Server Profiler           No                        Yes only if another edition of SQL Server
                                                        2005 is installed on the same machine as
                                                        SQL Server Express.
Database Engine Tuning Wizard No                        No
SQL Server Agent              Yes                       No
Active Directory registration No                        Yes

First Look- ADO .NET Entity Framework

These few days I have been playing around with the ADO .NET Entity Framework. To my surprise this framework is comparable to Castle ActiveRecord. The following are some code snippets that I have played around in these few days.

Using the ADO.NET Entity Provider

// named connection points at model files

using (EntityConnection con =
   new EntityConnection("Name=Northwind"))
  // command uses eSQL
  using (EntityCommand cmd = new EntityCommand(
     "SELECT VALUE c FROM Northwind.Customers", con))
    using (EntityDataReader rdr = cmd.ExecuteReader(
        // DataReader has a variety of shapes
        // process DataReader here

Using Object Services

using (ObjectContext ctx = new      
  ObjectQuery<Customers> query1 = 
    "select value c from Northwind.Customers as c");

  // query executes here
  ObjectResult<Customers> result = query1.Execute(

  ObjectQuery<Customers> query2 = 
    "select value c from Northwind.Customers as c");

  // query executes here
  foreach (Customers c in query2)

Using LINQ to Entities

Northwind nw = new Northwind()

// select entire entity
   var query2 = from c in nw.Customers
                select c;

   foreach (var cs in query2)
     Console.WriteLine("{0} {1}",
                cs.Customerid, cs.CustomerName);

// simple projection
   var query2 = from c in nw.Customers
                select new {
                  CID=c.CustomerID, CName=c.CompanyName              

   foreach (var cs in query2)
     Console.WriteLine("{0} {1}", cs.CID, cs.CName);

Additional Resources

An Entity Data Model for Relational Data Part I: Defining the Entity Data Model , Code Magazine

An Entity Data Model for Relational Data Part II: Mapping an Entity Data Model to a Relational Store , Code Magazine

Programming Against the ADO.NET Entity Framework, Code Magazine

Windows XP Service Pack 3

After a long wait, Windows XP users can now download Windows XP Service Pack 3 <http://go.microsoft.com/?linkid=8903765> via Windows Update or the Microsoft Download Center. The Service Pack includes all previously released updates for the operating system, in addition to a small number of new updates. It will not significantly change the Windows XP experience. If you are a TechNet subscriber, you will also find links to TechNet subscriber downloads, as well as the Service Pack overviews, updated deployment guidance, and related downloads.
Do check it out.

Moving existing “Data” and “Log” onto two separate disks

Lately one of my customers asked me whether they can move their existing "Data" and "Log" (i.e., Transaction Log) onto two separate disks. The answer is "yes. you can.". You need to follow the following 2 steps:
Step 1: Use sp_detach_db to detach an existing database from a specific SQL Server instance. To perform this step, you type the following command (at the SQL Server Management Studio):
USE master;
EXEC sp_detach_db @dbname = N’YourDatabase’;
Step 2: Manually move your "Data" and "Log" files to your target directory(directories). I would strongly recommend that you place your "Data" and "Log" files each on a separate disk. Then you type the following command (at the SQL Server Management Studio):
USE master;
ON (FILENAME = ‘D:\Data\YourDatabase_Data.mdf’), 
(FILENAME = ‘E:\Log\YourDatabase_Log.ldf’)