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.
Month: August 2003
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!
Appy: Application Happy
Next-App Button is too geeky and not hip enough so I came up with a more catchy name: Appy, which I hereby define as Application Happy. Hey, I like it! I am so Appy!
I wonder which cellphone or PDA will sport the Appy button first?
Walking on Asphalt River
Yesterday afternoon, I stood in my driveway and looked at the black asphalt road passing by my house. I asked myself what if the asphalt was liquid and the road was a river. What a river it is, flowing everywhere people live. Six degrees of separation pale in comparison.
I imagined wading into the river up to my neck which awarded me with a smile. Not a bad return for playing with imagination a little. After spending a few more minutes picturing myself swimming in the road, I moved on to what I set out to do. I walked onto the asphalt road. Ahhh, there! A flicker of amazement visits me. I am walking on water! With that, I walked safely back to my driveway with an even bigger smile.
There are things that amaze us, but amazement itself is entirely our own making. What saddens me is how fast amazement fades into mundane. Things, places, people, understanding — nothing escapes, all fading like photos left out in sunlight — flowers, mountains, Ferrari, Walkman, campfire, my son's little toes, all becomes mundane eventually.
So I am left with cheap thrills like the one I pulled yesterday. I am still amazed with how stupid human mind is, but I am sure that will fade too.
I won't be able to blog for the next two days. Find your own supply of amazements meanwhile.
Next-App Button for Cellphones and PDAs
I had a couple of hours free last night, so started browsing through J2ME and Nokia docs to find what I needed to know to implement the Cellphone Rescue Button (in hindsight, I should have called it Fake Ring Button). Guess what? I can't implement it with J2ME.
Fake Ring Button is a very simple program. It just waits for a specific button press and plays the ring tone after some preset delay. Only tricky requirement is that it needs to be active all the time. Unfortunately there is nothing in the J2ME docs that allows me to do this.
After thinking about the problem, I concluded that there is no need to change J2ME at all. All I really need is a Next-App button on J2ME phones so that users don't have to bring up the list of midlets, scroll down to the one they want to use, and activate it to use the midlet. With it, user's hand can memorize how many clicks is needed to run the Fake Ring midlet.
Next-App button would be useful on PDAs as well. Two clicks to open my address book, scroll down to Mrs. Wong, and three clicks to make an appointment with her. Bingo.
Next-App button is, IMHO, more effective than 'function' buttons with useless icons that take up more space and cost more money. Instead of bring up your cellphone or PDAs and fiddle to get to the application you want to use, your thumb will click to your application as your hand is moving up.
Hmm. Maybe the Next-App button can be the Power button…
Are there cellphones or PDAs that do this already?
Update #1: See the Appy post.
#33 on Blogdex?
According to Blogdex, my blog is ranked #33 on the list of "most contagious information currently spreading in the weblog community". Huh? I know I have many readers and my posts get linked widely even crossing language boundaries, but #33 seems rather high up.
Update #1: I am now #79 after being #33 for over a month. If the ranking is purely based on how widely memes spread, I think this is about right. While amount of traffic I get is not among top 100, I do tend to post original and often viral memes.
Odd Nods
When I wake up each day is a special moment for me. As consciousness seeps back into my brain like someone returning home from a daily vacation, I often find odd pieces of thoughts.
I am neither gay nor religious, but their issues are interesting to me because they are so complex. I must have peeled away much of the issues in my sleep this morning because I was woke up with this seemingly clear and amusing understanding of what religious people are basically saying:
Gays are misusing the product designed by God.
Does the customer have the right to misuse, abuse, or even destroy products? Answer is yes for me. I don't care if Steve Jobs hand-assembled an iMac just for me. If I own it, I can do whatever with it and damn the warranty. This raises the following question:
Am I bought or leased?
If I am just leasing, I can't misuse the product. Religious people seems to be saying that we are all leased from God. As for me, I don't care because the supposed owner hasn't pounded on my door asking for rent yet.
Anyway, I enjoyed thinking about these things this morning, enough to wake up with a smile.
AirPort Hack Illustrated
It's always amusing to read hacking stories. Rob Flickhenger, author of Wireless Hacks, shows how he hacked AirPort using open source tools in Dispelling the Myth of Wireless Security. Oh my, it is only the first chapter!;-p
This is the perfect place for David Sifry to step in and plug his Sputnik.