Virus Storms

I got pelted by about 20 SoBig.F virus laden e-mail on Friday.  This morning, I got 20 more and the storm continues where it left off Friday.  Since other people are having a much harder time than I am, I guess I am sitting in a nice quiet paranoid patch of the online social network.

Everybody will learn to live with waves of virus storms like the way they deal with real world showers and storms.  Hmm.  I wonder Yahoo will do Virus Forecasts along side Weather Forecasts?

BTW, if you sent me e-mail and I haven't replied, chance is good that it got thrown out in my daily pile of spam and virus.  As a last resort, you might try leaving me a comment to one of my recent blog posts or post a blog of your own referencing my blog so I can find it via trackback or Technorati.

Negotiation as a Game

Negotiation is a fascinating yet difficult subject.  First negotiation probably took place in the Ice Age between cavemen, but the art of negotiation hasn't advanced much since then.

While there are countless papers on negotiation theories, strategies, tactics, psychology, and even philosophy, negotiation still comes down to people talking face to face, just like the cavemen.

Ross Mayfield's Negotiation and Social Software post got me thinking about web-based negotation tools.  Ross writes:

Social software can support negotiation, at the least, by revealing what kind of argument is in play. […] There are three kinds of arguments: Fact, Value or Policy. You can argue over what is, what should be or how it should be. […] Social software can support negotiation, at the least, by revealing what kind of argument is in play.

Unless I am mistaken, Ross wants to use tools to identify and classify arguments.  Assuming Ross is thinking about using Wiki, I am not sure how effective this approach is using purely textual solutions like Wiki.  I am of the opinion that more visual approach is necessary.

Ross also touches on an important point:

Tools that allow mediators the flexibility to structure dialogue while deemphasizing personalities can accelerate constructive conversation.

Personalities and emotions are difficult to isolate and deemphasize in negotiations.  Even act of doing so can backfire.  I think a game-like interface might encourage negotiators to detach themselves emotionally from the arguments similar to the way chips in casinos detach gamblers from monetary value.

People often see negotiation as a game of sort.  Unlike games like Chess and Go, negotiation has no game board nor game pieces, just an optional table to rest hands on and mouths to create or move pieces in your opponent's head.

What would negotiation look like as a game?

Here is my Swiss Cheese answer.

Game area looks like a Crap table, a flat surface divided into two major areas: Common Areas and Player Areas.  Two-party negotiation would have one Common Area and two Player Areas.  Each area is divided into subareas representing player-specified categories.  Some area-specific effects would be interesting.

A mediator is a player with some special privileages such as ability to view hidden pieces.  More than one mediator can participate in a game.

Game pieces look like a stack of chips and can be created by any players.  When a player creates a piece, matching piece appears in each Player Area.  Height of a piece is determined by its value which is assigned by the player who owns it.  Hidden pieces are visible to all but it's content is opaque to all except the piece creator and mediators.

A Deal is a Wheel-like balance in the Common Area.  Players contribute pieces to the Deal using the pieces' value as weights.  If a Deal is balanced, it lights up in green color.

<

p dir=”ltr”>Like Swiss Cheese, it has a lot of holes yet to be filled, but I like the way the issues are visualized and players become detached.  Call it work in progress. <g>

Spam Filters and Trash

I have been using SpamBayes since others have suggested it in response to my Death of E-Mail post.  SpamBayes is good, probably good enough most of the time, but not good enough for all the time.

SpamBayes is like my wife.  Since my wife pays the bills, she also does the mail.  Everyday, she checks the mail, throws out apparent junk mail, set aside bills, and brings me the rest.  With her standing there, I separate junk out so she can recognize new types of junk next time.  After ten years of this, she rarely has to bring me mail.

One key advantage my wife has over SpamBayes is that she can expect important mail like tax refund or my son's report card.  She knows ahead of time when, from where, and how (i.e. FedEx or US Postal) mail will come.  She also handles unexpected mail well.  This is why I trust her and why I don't trust SpamBayes completely.

Despite all the fancy algorithms behind today's spam filters, all they do is tossing mail into a trash can.  This is sufficient most of the time, but is prone to failure at exceptional times.

When was the last time you digged into your trash and why?  Would you do that daily?  You can't do it weekly because the pile would be way too big, even daily pile is starting to get too big.  You won't unless there are some important e-mails you have been expecting.  That leaves important yet unexpected e-mails that get thrown out every day with rest of the garbage.

<

p dir=”ltr” style=”margin-right:0;”>Message to my wife: Honey, you are so much prettier than SpamBabes, er, SpamBayes.

Cute CSS-based Rollover Trick

Typical rollover uses multiple images, one for each state.  Petr Stanicek shows how CSS2's background-position attribute can be used to do rollover with just one image containing subimages for multiple states.  Cute.  Via Paschal L.

For the impatient, here is the meat:

#menu a { …
    background: url("button.gif") top left no-repeat;
… }
#menu a:hover { …
    background-position: 0 -39px;
… }
#menu a:active { …
    background-position: 0 -78px;
… }

Outsourcing and Unions

Alarming increase in outsourcing of technology jobs is not new, but Dan Gillmor's Outsourcing Our Future article is a sign of recent increase in alarm bells.  Just in time too because outsourcing trend is accelerating.  The real fun will begin when Presidential hopefuls start peddling this issue.

One solution I thought might work is encouraging unionization of IT workers in both India and US.  Unionizing IT workers in India will increase labor cost there.  Unionizing IT workers in America will discourage outsourcing here.

Unionization is a powerful force.  Just look at how unions are destroying manufacturing industry in Korea.  Did you know it cost 25% less for Hyundai to manufacture cars in Alabama than in Korea?  Oops.  That was the before the most recent labor deal Hyundai was forced to sign under which Hyundai auto workers gets 150+ days off per year (women get 170+ days off).

I am not talking about yesterday's unions.  These days, unions are highly organized both internally and externally.  In the near future, unions armed with cellphones, e-mail, IM, and socialwares, even small unions will weave themselves into larger networks of allied unions spanning nations and even continents.  Massive long term conflicts between global union networks is not unimaginable either.

Expect to be held hostage by unionized IT workers of tommorrow

Bindows

Erik Arvidsson, the DHTML guru behind WebBoard and WebFX, revealed what he had been working on since last year: Bindows.  Bindows is a DHTML framework that emulates Swing/WinForms UI, similar to what Convea and Oddpost.  I am not sure yet, but Bindows seems to use XML to define its GUI.  It seems pretty slow though.  I suspect that most, but not all, of the slow speed is due to the server-side misdesigns.

Head-Body and Neck

Head-Body is a well known design pattern for markup languages such as XML, HTML, and RSS.  Most common example is HTML which has <head> and <body> elements under <html> root element to separate metadata from content.  Another example is SOAP where Head-Body pattern is used to separate information on the envelope from the payload inside the envelope.

While the Head-Body pattern is well-known, it can be confusing in practice as Mark Pilgrim and Sam Ruby's recent posts indicate.  The pattern also adds verbosity and complexity to document structure and language bindings because it adds an extra layer of elements between the container elements and contained elements (i.e. dog.body.tail instead of dog.tail).

I came up with an alternative to the Head-Body pattern while waiting for Vikingsholm tour to start at Emerald Bay: the Neck pattern.  The basic idea is to use a divider (<neck> element) instead of two boxes (<head> and <body>).

Here is a silly example of Head-Body:

<animal>
    <head>
        <eyes>2</eyes>
        <nose>1</nose>
        <mouth>1</mouth>
    </head>
    <body>
        <legs>4</legs>
        <tail>1</legs>
    </body>
</animal>
And here is Neck version of the same:
<animal>
    <eyes>2</eyes>
    <nose>1</nose>
    <mouth>1</mouth>
    <neck/>
    <legs>4</legs>
    <tail>1</legs>
</animal>
FYI, the Neck pattern is an instance of the Road Sign pattern.

Asphalt Waves

Asphalt Waves

I don't know who came up with this idea, but I was impressed with it.  The waves make noticeable noise when tire goes over the center divider line.  Too bad I didn't get a chance to see the line at night to see if there are any reflective effects at night.

Update #1: Changed the title to "Asphalt Waves" from "Waves of Asphalt River".  Much better.  Thanks Jay.

Lake Tahoe

I just returned from camping at Lake Tahoe.  We camped at D.L. Bliss State Park which has a great beach and is just a trail away from Emerald Bay.  We hit the beach and some trails including Vikingsholm and Eagle Lake.  Here are some pictures from the trip.

My wife and son at Eagle Lake

Both the best and the worst part of the trip happened this morning during our hike up to Eagle Lake located near Emerald Bay.  The trail to Eagle Lake is 1 mile straight up a steep and rocky mountain, a bit tiring but the view of Eagle Lake was fantastic as you can see above.  Unfortunately, it begain to rain heavily as soon as I took that picture.  By the time we got down, we were very cold and wet.  Brrrrh!