Modelling the system

image

 

Here's a nice pretty diagram of the various components of modelling a (any) world.

In my case here, the world is a virtual world.  You would noticed quickly:

  • The strong MVC reference.  If you really don't see it, try look at the colours
  • World is made of models - which are actually no different from a business application.  The same model pretty much applies
  • SilverLight 2 Beta 2 has strong work done on the visual manager, which I think is best used to utilize for rendering the world
    • In fact, in most games, the graphics component is the main component, in my little model here, it isn't.
  • The command logic is largely work from WPF's command syntax - in a business application, this means we can wire up multiple events to the same command (aka, control-C, menu)
    • In the context of a game, it means we can offer key-bindings and the user can choose what keys he'd rather use instead of the defaults
  • The blue part is the least ironed out section of my little model here - in a pure MVC situation, perhaps the Commands should be responsible for directly making the calls to the server / modifying the game objects.
    • Should I wait for server response before making the object move?  or should I trust the client and let it start moving, and allow the server to 'validate' the client's behaviour

One final work remains in this modelling exercise:

  • Some sort of dependency-injection for making it all work in SilverLight, this way, I can work on each component one at a time and have them plug in/out
    • And unit-test separately
    • There's some good work in the AssemblyPart class
      • Not sure about security implications though

Lack of statistics for Windows spaces.live.com

The statistics capabilities for Windows Live wetted my appetite for better statistics reporting.  Why on earth:

  • Record only up to the last 3 days
  • No user detail breakdown - where from?  Unique visitors?  Returning visitor?
  • How are people finding my blog?  Word of mouth or blog reader or searching for keywords in Google where my blog showed up?

Anyway, the lack of statistics really is beginning to be a pain in the neck, makes me feel that no matter what I do, Windows Live spaces just doesn't support me to grow my blog, unlike other service providers like Blogger or WordPress.  (Both of them easily integrates with Google Analytics).

Which drives people back to use AdWords.

Sure we hate all things Google ;-)
But where's MS's offering?

Silverlight 2 Beta 2 coming really soon

All signs points to Silverlight 2 beta 2 coming within the week:

http://blogs.msdn.com/swiss_dpe_team/archive/2008/06/03/silverlight-2-beta-2-available-later-this-week.aspx

http://msdn.technetweb3.orcsweb.com/maximelamure/archive/2008/06/03/new-features-annonced-in-silverlight-2-beta-2.aspx

The biggest news I can find:

  • "Pushing" data from Server to Silverlight:
    • this is a new duplex channel which implements a smart-pull, the client sends a request to the server but the server does not respond unless there's something to say, and the client will just happily wait on that request (Silverlight does have multi-threading). 
    • If this was implemented in AJAX we'd see the browser seems to be waiting for something (a waiting connection progress bar).
    • I guess when the client receives a response, it fires a new request to the server immediately and keep waiting for new messages.
    • Various people have chipped in that they feel this may be cleaner than working with sockets - may be they just didn't like the way sockets sound, perhaps too low level and not abstracted enough ;-)
  • A tab control!
    • Still no combo drop down?
    • Or trees
  • Commercial go-live license
  • Controls are in the runtime now, instead of being packed with your app
    • Bigger initial plugin download but smaller file?
    • I wonder why they don't allow the missing components to be downloaded from a signed-MS redistribution package when you need it, and have Silverlight install that on-demand.  (instead of putting it in isolated storage where it can't be shared with other apps).
    • Flex solutions pack controls into the swf file and no one seems to be complaining

Edit:

  • Sockets goes cross-domain

GMail getting slower and sloowweerr

There could literally be thousands of reasons for why GMail seems to be running slower and slower for me:

  • FireFox Extensions?
    • I use FireBug (which Google has told me to switch off)
    • I use GreaseMonkey
    • I use the Web Developer AddOn
  • Network connection?
    • The firewall behaves funnily at work
  • Too many processes running?
    • Doesn't explain why other websites run fine though.
  • FireFox default caching mode?

The thing is, it really shouldn't be "my problem" to work out what's wrong with GMail.  As far as I'm concerned, other websites continue to work fine, and if I switch to the basic GMail view, it works fine too.  So there must be something wrong with the standard version of GMail.

 

Which really got me to think about the whole connection between web and PC.

I use GMail because:

  • Lots of space - but that's hardly new now - everybody is out there throwing hard-drive spaces at you
  • Can use everywhere, simple and fast - again I'm not so sure about the speed anymore
  • Easy to get my centralized data out - this turned out to be a bit of a false impression.  It is difficult to get data out of Google.  May be there will be new Google API eventually, I can only hope.

I use an offline mail program (like Windows Live Mail) because:

  • Offline reading, if mail server is down I don't lose access to my mail
  • Composing experience offline is better, GMail with its auto-save and FireFox's build-in dictionary comes pretty close though
  • Stripping advertising
  • Combines blog reader, podcast and videocast facilities - which I can then synchronize to a portable player
  • Speed of browsing emails, waiting for an webpage to load is silly

You would think Microsoft should theoretically have an advantage with their desktop/web integration strategy, I'm just not sure why it hasn't been executed (or received favourably) yet.