During my daily visit to Cute Overload, I noticed what looked like a plea for help. Clicking through, I ended up at site where there were two videos, one by the wife of the abducted man and another of the abduction taking place. The site and videos smelled fake but I didn't notice anything that clearly indicated that site is a marketing gimick by CourtTV.
I don't know who is responsible for this highly offensive marketing stunt but it disgusted me enough to never look at another CourtTV program. I am also unsubscribing from Cute Overload because they allowed this highly deceptive ad to run on their blog.
I guess marketing breeds intolerance too.
UPDATE: The 'plea' video is now clearly marked to indicate it's just a dramatization. Good. Their ad at CO still has nothing more than an easily overlooked gray Premium Ad link at the bottom. Even noticed, all that say is that someone paid for the ad, not that it's a game.

Technology Breeds Intolerance

Out of sight, out of mind. How do we reconcile that with technology bringing the world closer, close enough for everyone to be within sight of everyone? When etiquette and freedom of speech collides in a world-size room from which no one can exit from, which should have the upperhand?
There are no clear answers to these questions but I think that people will choose to build private spaces within the 'room', spaces which appear to be pockets of tolerance when viewed from inside and pockets of intolerance when viewed from outside.

Thoughs on Microsoft Surface

Microsoft Surface is an impressive execution of multi-touch HCI concept. In particularly, they've extended the idea to embrace not just fingers but objects to the repertoire of interaction.

However, I can see several issues that prevents surface computering from being practical for personal and general uses.

  1. Internal camera provides object identification and location info but it's too bulky.
  2. Flat horizontal viewing-angle could be too stressful for prolonged use and for reading detailed info which means, even in retail setting, information will have to be provided in paper form. Inclined viewing-angle is more comfortable but not for reading.
  3. Traditional laptop designs will tend to tip over. Tablets are better but tablet's are typically held in one hand into inclined position so two-handed multi-touch will be less handy.
  4. I've yet to see several multi-touch applications running simultaneously and I suspect windows metaphor as-is will be confusing for multi-touch use, particularly when mixed with multi-touch's tendency to use 'real objects'.
  5. Multi-touch enabling legacy applications will be difficult to say the least.

Given these and other issues, it's undersandable why Microsoft Surface is being initially targeted to be used in retail and casino settings. Both settings use a handful of domain-specific hand-integrated applications. In contrast, personal computers support open set of applications integrated through general window-based GUI support. But then where would we engineers be without problems? ;-p

Flash 9 Object Serialization Note

It wasn't clear from docs exactly what gets serialized when an object is saved or sent so I thought I would share what I found.

  1. Any public instance variable.
  2. Any state accessible via matching public get/set method pair.

Read-only properties are not serialized. Why is obvious but unnecessarily leaky class design is the price to pay in practice. A related problem is that Event subclass can't be serialized without implementing IExternalizable because the 'type' property is read-only.

Overriding type property in Event subclass conflicts with internal dispatchEvent implementation which apparently ignores the overriden value, causing events to be  dispatched using the internal type. A workaround is to clone the serialized event before dispatching. Not pretty but this enables events to flow across systems, a requirement of mine.

Silverlight as GUI Platform

Silverlight 1.0 is a graphics presentation platform which means it can be used to present information graphically. But Silverlight is not yet a graphics user interface platform because the host browser's scripting language, which it depends on to add dynamic behavior, is not fast enough to prevent sluggishness and jerkyness from showing up in highly interactive applications like Popfly. For GUI developers, Silverlight 1.1 should be their target because interactive behaviors can be coded in .NET languages, leaving overall page-level behaviors to be coded in browser scripting language.
Silverlight 1.0 is a highly focused subset of .NET so there are areas where it lacks even as a graphics presentation platform. For example, images can be loaded but image pixels can not be accessed directly. This is because most Silverlight 1.0 objects are just a bundle of properties without methods (they have a handful of common model maintenance methods but they don't provide object specific behavior). API to host browser scripting language is simply the hierarchy of those objects and their properties. Understanding this makes it easier to grasp the limitations of Silverlight 1.0. IMHO, it's a smart compromise. While it is theoretically possible to extend the granuarity of Silverlight object model all the way down to pixels, it is not practical to do so.
CLARIFICATION: When I say host browser scripting language is not fast enough, I don't mean just the language. Binding mechanism between scripting language and Silverlight plugin is subject to browser and platform implementation quirks and limits which will result in platform/browser specific slowdowns and other problems. Following has to happen for each UI event like mouse move:

  1. Silverlight: detects mouse move
  2. Silverlight: calls host browser javascript event handler.
  3. Binding: marshall parameters and wait for javascript engine thread
  4. Browser: event handler manipulates Silverlight object model (i.e. move object to match new mouse position).
  5. Silverlight: update display to match object model.

I don't know how Silverlight exposes its object model in each platform and browser combination but accessing external object model from a scripting language is a potentially expensive operation.