Good Texture Synthesis Paper

Once in a while, a good paper appears in the endless river of PhD thesises, one that stands out because it's likely to impact the near future. This time it is Solid Texture Synthesis from 2D Examplars . Check out the video and, if you are into computer graphics, read the 22mb paper.
In case you are wondering, I no longer actively keep track of research papers. I ran into this one while researching the current state of art in realtime in-game editing. Answer: recent progress is rather disappointing.
Update: Pete Shirley's blog seems to be a good source for pointer to graphics-related papers. A single cascading topic focused search will reap more results than one has time to read but it would be nice to have a federation of insightful blogs specializing in computer graphics.

Technorati Down

Yup. Technorati is down. I had to comment out Technorati scriptfile loading code from the front page so the page can finish loading. I don't know if the scriptfile is really needed after a blog has been successfuly claimed but less dependency on other site the better so I won't be restoring it when Technorati comes back.

This incident is unfortunate because they appeared to be on their way back recently.

Rare Earth: Technology Showstopper

I doubt blogs like Engadget will run out of new products to post about any time soon but the rate at which we are depleting rare earth is a concern. Rare earth is used in a wide variety of high tech products like LCD and cellphone yet 90% of it comes from China.
Will China tighten its grip  on rare earth export like OPEC does with oil? I think it is in their best interest to do so. Even worse, I think China may stop exporting rare earth all together to initially monopolize manufacturing then eventually to dominate development.
Will nano-technology advance fast enough to erase our dependency on rare earth before we run out of it? Whatever the answer is, it's going to an exciting race.

Meanwhile, my MBP is no longer the top of the line. Dang. 4G of RAM is nice.

SaveMyHusband.com

During my daily visit to Cute Overload, I noticed what looked like a plea for help. Clicking through, I ended up at SaveMyHusband.com 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.