Wrong Atom

To me, the intricate pile of MUSTs and SHOULDs piling up in Atom format spec is a display of short-sighted technocrat bullshit.

For example, what is the point of requiring all entries to have a unique identifier when feed clients have no incentives to reject feeds that violate that requirement? Filtering of duplicate entries from multiple sources is a quality of service problem that is best dealt with in a separate opt-in specification. Clients and servers that support the opt-in spec will be more popular if resulting differences in user experience and distribution are significant enough. If not, there was no need for it anyway.

Ignored mandates are much worse than ignored opt-ins because mandates leave no room for failures, competitions, nor changing needs. Opt-in approach can also embrace RSS so that clients can check for the extension elements regardless of what the container feed format is.

Will the Atom WG see the light? I doubt it because they are thinking more about their product than the market.

Chopstick Science

Apparently, chopstick skills contributed to the recent stunning advances in stem cell research.

I grew up using steel chopsticks (actually, I used silver chopsticks at home and still do) in Korea so I guess my hand is more dexterous than your average wood chopstick users. For example, I can easily pick up individual strand of hair or a spec of dust with my micro2005 chopstick.

My wife and son, however, can't so the chopstick gene might be in a decline. I know that thick beards are rarely seen in Korea and it's also disappearing in my family (notice the hairless cheeks and the missing spots in my jawline?). Thankfully, at least the thick eyebrow is declining more slowly although I can't hold a pen on top of my eyebrowse like my father can. I am still hoping my son might be able to when he grows up.

China also has a chopstick story related to stem cell research although it stems (sorry) from lack of dexterity. I am impressed, however, by the display of kung-fu power necessary to penetrate human skull with wooden chopstick.

Over the Java 1.5 Wall

I noticed that MyEclipse update for Eclipse 3.1M7 was available, so I finally made the switch to JDK 1.5, Tomcat 5.5, and Eclipse 3.1M7 which took about 30 minutes of scavenging and scrambling. The combo is so unreasonably stable and functional that it's almost boring.

Oh, I've also been using Visual Studio 2005 Beta2. Unlike Eclipse 3.1M7, it's quite unstable and annoying to use. I guess VS team had another experience drain because it feels more like a pile of parts and features instead of a luxury SUV we all need to ride over the unexplored territories in comfort. Maybe they need some fresh ideas. So, I am still using VS2003 for real Win32 and .NET works.


A rather alarming new trend in the blogosphere is role-blogging: blogging in characters other than yourself.

If you find vampires fascinating, you can start a blog as a vampire, posting stories a real vampire might post. Others who are into vampires subscribe to your feed and post comment as fellow vampires. Eventually a community of pretend-vampires emerges.

Hard to believe? Recently, a Korean teenage girl was arrested for stabbing a man because she was afraid the man might report her and her friends to the police after he saw them doing something suspicious with a syringe. She and her friends, whom she met through her vampire blog, were tasting each other's blood drawn with the syringe.

I have no idea why she thought stabbing the man might encourage him not to report her, but I think using a blog as a way to experience another life is something to take notice. It's like using the Net as your closet.


Here is an interesting hardware project I don't have time to do: iChatBot.

The idea is to take one of several vacuum robots in the market and strap on top of it a Mac Mini, a LCD monitor, a camera, and a microphone. Reprogram the vacuum to take command from the Mac Mini. Likewise, Mac Mini is configured to run iChat exclusively. Once built, let it loose in an office. An office can dedicate an iChatBot to each remote worker (remote senior staff) or maintain a pool for a group.

When a remote worker launches a special version of iChat, he will see what the iChatBot's camera sees. Likewise, his face is displayed on the LCD. With mouse and keyboard, iChatBot can roam around the office and participate in meetings or converse with anyone that happens to cross the bot's path. iChatBots equiped with Nurf ball launcher can, of course, do far more…

Hmm. The idea needs a catchy name. Tele-presence? Where have I heard that before? iRisma? iThere?

Classroom Clickers

Classroom Clicker is a great idea that will change classroom education forever, particularly in countries like Korea and Japan where classrooms are as interactive as TV is, meaning not at all. Like TV remotes, these clickers will let students change the channel.

The orange clicker is made by Hyper Interactive Teaching Technology from Arkansas. Dialpad-like clicker in the middle is made by GTCO CalComp of Maryland. Simplest looking blue clicker is made by eInstruction Corp. of Texas.

Eclipse Performance Bloopers

While reading about new and noteworthy features in Eclipse 3.1M7, I ran across Eclipse performance bloopers page which I found interesting.

For example, I didn't know that String.substring().intern() can prevent garbage collection of original string's character buffer because substring() grabs a reference of the buffer which intern() adds another reference at that won't be released until VM shutdown. I think some XML parser, DOM, and XSLT implementors might be doing this unintentionally.

Another blooper is, IMHO, a general design problem with Java stream I/O API. Specifically, there is no direct way for library implementors to tell whether an InputStream or OutputStream passed into their library (i.e. XML parser) is buffered or not.

If the implementor assumes it is and the caller forgets to buffer, then I/O performance crawls. If the implementor always buffers and the caller also does, then I/O performance suffers again. Of the two evils, double buffering is better than unbuffered I/O but, if you have N layers of libraries, you could end up with N buffers.

IMHO, the code that creates a stream should buffer the stream as needed. Libraries can also use markSupported() for input treams, which returns true for most buffering input stream implementations, to decide whether to add buffering or not. For output streams, you are out of luck.


A cool suggestion was made in comments to Dave's rant against IDG's Syndicate conference organizers' unreasonable demands: conference-jacking!

The way I interpret it, the idea is to use conferences as a tag of sort to hang podcasts off of, effectively creating alternative conference tracks anyone can contribute or listen to for free from anywhere anytime.

I've felt that most of the available podcasts were too radio show like, meaning they are pumped out everyday on whatever topic each podcaster is interested in. So topics are scattered and so are the podcasts.

Conference-jacking brings the podcasters together to a single location (a wiki + an OPML feed would work) to talk about a small focused set of topics that coincides with a meatspace event that someone else organized and spent money to publicize.



I've registered alterence.* domain. Looks like Tyler Karaszewski couldn't resist either. He registered openconferences.org.