February 2006 Archives

Great neighborhood!

tokyo metro map precis

Was just looking at the metro map for Tokyo to see what some of my daily commutes might look like this time around. VERY sweet. Everything within reach.

Direct from Shimo-Kitazawa:
- Harajuku
- Shibuya
- Shinjuku (and from there up to Ushigome Kagurasaka of course ;)
- Akasaka

Within one transfer:
- Jiyugaoka
- Ebisu
- Meguro

Here's approximately the area contained in above Metro Map, in GoogleMaps satellite view.


tokyo itinirary

I had to do this. It may seem insane to take off now but I have to do this. The next 3 weeks are going to be off the hook as I wrap up old work and engage all the new stuff. I am really looking forward to this temporary relocation, and I am equally looking forward to getting back in time for CHI2006 and spring in Montreal.

Also hoping to hop over to Beijing and Shanghai while I'm out there. Might as well, right?

Vhat ze heck ist zis?

I'm not sure what to make of this series of new Volkswagen GTI commercials: "de-pimping your auto."

Part of me is laughing pretty hard, but another is cringing, especially at the racial/cultural stereotyping: ugly rigid "weirdo eccentric" german guy pulling "urban street style" crouched pose and VW handsign while saying: "Vee und Double You in ze house, rrreprezenting Deutschland."

Cringe. Funny as hell, but cringe nonetheless. Makes me not want a MkV VW GTI (as if the fact that it looks like a rice burne... ahem... Honda Civic, the arch-nemesis of the VW Golf line, wasn't enough... ;)

Not that I am looking to buy, mind you. My beaten up 5 year old Mk4 VW Golf 2.0l is paid for. Amen.

Clearing communications

The key to telling a joke that will get you laughs, is telling it the way the audience would (if they knew how).

Same goes for clients.

If you cannot tell the joke, then perform it. Slapstick.
Generally folks don't get my "jokes" until I "do" them, and this is fine by me.
Guess I did get some of my mother's clown.

"America's Online Censors"

Rebecca does an absolutely great job of summing up many of the issues and thoughts and results of the U.S. Congressional hearings held last week concerning U.S. technology companies and their roles in Internet censorship regimes around the world.

We must not allow American companies to deprive Zhao and his generation of their right to shape their country's political future. But we must do it in a way that shows we respect the rights of the Chinese people--and the rights of every human being on the planet--as much as we respect our own.

Adding missing features

I spent the end of this past summer building the USC Interactive Media Department's website/weblogs/aggregator system. As I said back then, it was a heck of a fun project and I realize now that it gave me many of the skills and certainly a lot of the technical confidence I needed to then tackle GlobalVoices Online as well as everything that has come up since then. Nothing beats learning by doing and trial by fire.

I briefly explained the slug system I built for the IMD site, and I won't get into the details here now, but in a nutshell... All IMD users have their own blog, from which they have a "del.icio.us-like" tag (I call them slugs, because they are a controlled, system defined and relied-upon vocabulary) selection UI which "marks" an entry for "cross-posting", or more accurately, it adds a keyword which the concerned aggregators built into the site then look for.

The homepage is an example of this. It displays entries "tagged" (slugged) as "main" in the center column.

Now, that was 6 months ago. From day one, Scott had complained that entries in the aggregators would roll off the page after the proscribed 20 "most recent entries", with no way to "find them again". In other words, the date context was lost. I needed to figure out a way to get back to them: an archive system.

Six months went by, and I learned all about multi-axis contexts. Heh. I also kept putting it off.

Until tonight.

You'll notice on the main page, as well as the Research area "weblogs", Games, Immersive & Mobile, that a small pulldown menu appears under the green title. The menus allow you to select a month that is known by the system to contain entries, as well as a count of those entries. (The display of this is kinda iffy... not sure I will leave it like that.)

I'll get back to the pulldown in a moment, for it is the "really cool" part of this.

The first thing I needed to do was to modify my slug.aggregator function so as to accept a date context. In english, that means if I ask for "the main page archive for August, 2005", that's what I want to see. (Notice the "2005-08" in the URL there? That is my date context.) This was mostly quite easy to do, especially once Francis taught me how to request database entries throttled by year and month:
MONTH(entry_created_on) = '08' AND YEAR(entry_created_on) = '2005'
(Notice the brilliance of that SQL WHERE: first it looks for entries created in August, the from those only the ones created in 2005. So efficient! Merci encore Francis! ;)

Ok so that went well. Now, the pulldown...

The information I needed in order to generate this pulldown seems pretty straightforward--"give me a list of months where entries with the slug "X" appear, and give me a count of how many entries there are while you're at it"--but the reality of the situation was not so rosy.

You see, the dirty little secret, the Achilles heel of what I built for the IMD site is the fact that the slugs system relies on the keywords field associated with each blog entry. If I want to get all the entries that have been slugged as "main", I have to run though the entire table, looking into each keywords field and character matching in search of the string "main". Some of you are already cringing... yes... I do a "keywords LIKE %slug%" request. This is a dirty, nasty, mean thing to do to a database. But let's not dwell on that.

The fact of the matter is that executing such a request on every page load is not a good idea... especially since I am already doing just that just to render the content. Heh. Also, realistically, the data that generates that pulldown only needs to be requested from the database every so often.

Enter CRON and JSON. (I just lost 95% of those left reading... )

So the solution goes like this: every 24 hours the server runs a script which goes and gets the date-context arrays I need to generate the pulldown, converts it from volatile PHP memory to a string of JSON and writes it to a cache file. Coincidentally, the PHP library that handles this JSON conversion was written by my pal Michal Migurski who just keeps doing cooler and cooler stuff. Getting this JSON stuff to work was a snap. It was SO easy, I literally got up and danced a jig. Thank you Mike!

With that figured out, writing a small function to read the cached data, convert it back to a PHP array and then output the html that renders the pulldown was child's play. Copy and paste the function call across aggregator screens, done.

I feel So much better now that I got this done. Not only to have finally delivered the goods, but it was an easy quick learn of a few things that will serve me VERY well as I move back to extending GVO's interface (as well as a few others...)

Virtual Real Estate

From Dav's Flickr stream:
Dav SL 1
Dav SL 2
Dav SL 3

Dav laments and sells his Second Life plot of land because of the overdevelopment in his neighborhood over the last year. Amazing!
Dav, I'll come visit your new waterfront spot!

Open borders?

Consider this:

U.S. Senate Majority Leader Bill Frist said the Bush administration should put on hold a deal to stop state-controlled Dubai Ports World of the United Arab Emirates from managing sea ports in New York, New Jersey, Baltimore, New Orleans, Miami and Philadelphia.

Now, aside from this being offensive to Arabs and Muslims due to inferred ties to "terrorist" and all that, isn't it the epitome of ironic? Of absurdity even?

While millions of travelers, individuals who for the most part could possibly do limited real damage , are hassled daily in airport "security" checks with metal detectors, pat-downs, removal of clothing and shoes, chemical swabs and even interrogation... the folks higher up are about to hand over 6 whole ports to a nation that they themselves have identified, albeit with lots of ring-around-the-posey language and actions, as "the enemy".

There are no words that can explain this. An attempt on my part was left in Haitham's comment stream:

the offensive nature of the debate aside for a moment, the true absurdity lies within the contrast of all this with the Department for Homeland Security, at who’s behest little old ladies are patted down, passed though metal detectors and who knows what else just to get into the country, meanwhile, their bosses are selling off major parts of the country’s economic infrastructure to foreign nations (regardless of diplomatic relations and status of regard for those nations, to put it nicely.

It is absurd. With one hand they are stoking the fires of xenophobic nationalism, and with the other they are selling the farm to their competitors. Nothing good can come of this. At least in the short term. In the long run it will all level out of course. In historic perspective, America is due for a civilization-wide collapse anyways.

So fast

The last time I marked the anniversary of my father's passing here was 3 years ago. He passed 7 years ago. So fast. Sigh.

Context, inertia, collisions, and Getting Things Done

"Context" is very much my favorite word these days. People around me must be getting really sick of hearing me yammer on about it.

Anyways, Karl shares this great entry from Tao of Mac:

Doing less things at a time is, as usual, the best way to get more work done, but that seems to be lost on the modern organizational paradigm of "ad-hoc cross-competency teams" that assumes (wrongly) that:
  1. you can slice your time across many different projects provided you are given clear bounds on your assignment.
  2. you're flexible enough to accommodate everyone's whim.
  3. you and the rest of your so-called "team" will have compatible schedules.

I need to "go offline" more often, allow myself to stay "in context" on a project or task for longer periods of time. Being pulled in 20 directions at all times, while I seem to have adapted quite well to it, is still a sub-optimal way of being and causes me a near constant, albeit mild and subtle, anxious tummy ache. ;p

Yahoo! designates Kevin Sites a world region

kevin sites yahoo

(I promised myself not to make cynical comments about such things as weblogs and web 2.0 and all that silliness anymore but...)

A wonderful glowing example of how "media" perverts "reality".

"I don't care what is going on in the Middle East, Europe, latin America, Africa, Asia, Canada (!?!) or Australia/Antarctica (!?!?!?!?)... Just gimme Kevin Sites to read me my bedtime story!!"

Also notice the label on the pulldown directly beneath, which allows the reader to choose to search "All News & Blogs", "Yahoo! News Only", "News Photos" or "Video, Audio".

I can't aptly verbalize why this is absurd, even obscene, to me. Sorry. For now I point and laugh. Please join me if you happen to find it so too.

Best IM status message ever.


Awesome. Merci Francis. ;)

WordPress Loop hack/replacement with logical operands for multicategory listings

I just posted this on the WordPress support forums, see if it gets me anything. If you here have any thoughts please please please get in touch. :)

Hi gang,
While poking around for this post, I discovered that WP does handle multi-category listings when you feed it ?cat=23,54,76 but does so with (I think) an OR logical operand.
In other words, it returns posts categorized as any one of the requested categories.

My needs are bit more elaborate... First of all, I'd like the above example to return *only* posts categorized as *all* the requested categories (post is categorized as 23, 54 and 76. If not, I don't want it.)

Further, and this is where it gets really tricky, at least too tricky for me right now, I'd like to mix and match both logical operands.

for example I'd liek all posts that are categorized as 23, and either 54 or 76 (23 and 54, 23 and 76, and --if existent-- 23, 54 and 76)

This means introducing logical operators in the query string and parsing them out right?

?cat=23-AND-(54-OR-76) or some such.

For now I'd settle for the first one though... any ideas? Any existing plugins? I'm willing also to forgo pretty URLs for this feature (i.e. no .htaccess rules required.. dealing with /categories/china-OR-india-AND-free_speech could get nasty.)

Ice sailing downtown


The sidewalks are slicker than skating rinks.
The wind is gusting up to 78km/hr (50 miles an hour).

Unless you weight upwards of 120lbs and have spikes on your shoes, stay home.

Or, go the other extreme, rig up a sail of some sort (an open jacket will do) and have some fun...


- "Hey how's it going?'
- "Good good. I'm really tired though. I woke up at 5am, flew to Toronto, had a bunch of great meetings and conversations. I just got back."
- "Wow, that a pretty crazy job you have!"

It's a job I have given myself, and I cannot imagine doing anything else, really. At all.


Happy 2nd Birthday Flickr!

Mosaic: Happy Birthday Flickr!
Originally uploaded by jbum.
Wow, I totally missed it this year.
Happy birthday gang!! Thanks SO much for this wondrous world of marvels.
I moblogged Stewart, Ben and Eric introducing Flickr at ETech 2004, and I was lucky enough to be in Vancouver for the 1st birthday too. Sigh. :)

I forgot something...

My writings here have dropped off for about a year now because I seem to have forgotten something that had previously been a hard won affordance: don't worry too much about what people think of you.

If you've been reading me long enough you remember all my crazy way-out rambling on all sorts of topics. I've kept my mouth shut about such topics in here, for various reasons, but have found myself "letting loose" quite verbosely in emails and IMs and "real world" conversations a lot more lately.

I don't know what the reactions are to these brain-streams but you know what? I don't care so much. And I'm gonna start acting like that here again. (I won't do just that stuff but I will definitely start doing it more often again. My random over-wrought thoughts need out. Like my essay on how rough chopped meat/poultry/fish dishes--bones and all-- in some cuisines point to a deep-seated cultural understanding of distribution of labor, resources and energy...)

*cough* looks around nervously *cough*

The fine line is of course being regarded as a complete quack but I think I've proven to enough people, myself included, that i am not insane, that I am frighteningly intelligent, if sometimes misguided. ;)

Remember, my first "blog tagline" was "speaking sense to myself and non-sense to others"...

So there, I've said it. Deal. ;)

Mimi's site

Mimi Ito's Weblog

Whew! I just launched Mimi Ito's new website. I actually launched it earlier this evening while running back and forth to the laundromat, and after having dinner with Steven and attending a vernissage quickly, I spent the rest of the night tweaking little details and fixing some HTTP redirects and such stuff.

There are a few little navigation issues yet to work out, and a whole phase two addition to get ready for (hello Bento Blog!)

This site was so much fun to design and fiddle with. It's the first time in a while I really got to explore my design style. Despite all the really great work I'm going to be doing with Berkman and GlobalVoices, those projects don't allow me to go all design-cra-zee...

Ahem. Thanks Mimi for the opportunity! :D

I have a feeling you-know-who's gonna come knocking soon... ;)

Stupid smoker

Listen, it's bad enough that you are smoking in here (even though legally for the moment you are still allowed), but the fact that you are one of these idiots who leaves his cigarette burning in the ashtray is beyond excuse.

A lit cigarette left to burn without being hauled on and/or ashed for more than 60 seconds begins to stink several orders of magnitude more than one that is being smoked. I know this from having been a smoker for 10 years, having lived with forgetful smokers for a number of those years... and from having a fucking brain connected to my nose.

It's one of the most painful odors, in my esteem. It viscerally contorts me, immediately burning the walls of my nostrils and making me nauseously ill. I am not a violent person but OMG do I want to come over there and put that thing out on your forehead. Perhaps that will wake you up out of your stupor.

I cannot believe this. The asshole lit another one and is just sitting there with his hands behind his head...

On the success of weblogs et al

The success of all these things such as weblogs, websyndication, etc, is directly attributable, I think, to one basic fact: weblogs are basic, rudimentary Content Management Systems. At risk of over-simplifying, I say that human intellect, human intelligence itself, in vasty varying levels of sophistication, is also a Content Management System.

And while over the course of human development we have evolved methods to bridge all our individual Content Management Systems, by using such technologies as speech, writing, printing and their myriad extensions, in keeping with the acceleration afforded to it by "electric communication", it is in the past 10 years that we have built the infrastructure for what we have over the last 3, seen emerge.

It is still early. We have not yet transposed semantics into what we have built recently yet. That will come. Soon.

I gleefully repeat to anyone who will listen, that we are "building out telepathy", echoing McLuhan's "we are extending our central nervous systems"... though we have overshot that already! The nerves are laid out in fiber optic, cable, wireless and POTS world-wide, the basic methods of sending data standardized in protocols layered in the TCP/IP stack (HTTP is a layer in that; the Application layer).

We began relaying messages at first. Now we have begun structuring the messages. This will continue.

All our technology is externalization of ourselves. As such it is fundamentally organic and follows easily predictable paths; if you have the patience and know how to tend a bonsai tree...

Help Push? Anyone?

I'm thinking I'm going to set up a resources matchmaking service on a subdomain of helppush.org. I keep getting emails like this one from friend Jon Lebkowsky:

My WorldChanging colleague Emily Gertz has just set up a blog for her OneAtlantic nonprofit - and she's looking for a designer to help out. Is this something you might be interested in?

These types of requests usually come with a disclaimer of the sort: "there's probably not that much money involved", which was never really an issue for me; I'd just pick up and try to do what I could. But right now, I am overcommitted. So much so that I can't even, at the moment anyways, set up and manage a sub-contracting situation.

So this post has two goals:
1- Somebody please get in touch with us if you are interested in helping out OneAtlantic. It looks to be a fairly simple MT templating job. (The more familiar you are with MT, the quicker you can do the work, the more you maximize your return...)

2- I want to start building a network of quality subcontractors to do these kinds of jobs. We do not do commercial, corporate work of any sort. Non-profit, NGO, civil society, education.. that sort of stuff. The money's better than you think* AND you are not propagating evil, consumerism, greed.

Get in touch.

* Ok not always, but the karma usually makes up for it. ;)

Upon reading the back cover of "Diamond Age"

"The Diamond Age : Or, a Young Lady's Illustrated Primer" (Neal Stephenson)

I thought:

Nanotech will bridge cyberspace and "realspace". Why? Because if indeed in cyberspace anything is possible, it is so because anything can be created from scratch and manipulated at any level. Advanced nanotech, in theory, will allow this as well.

"Create" is the key word here. If men are gods in cyberspace...

This thought is probably nothing new. Just wanted to share what just shot though my head.

Some cool obscure web politics and geekery

While I was out to dinner, I was alerted via IM to two interesting things.

First, the BBC has become a member of the W3C. That is fantastic news. Especially with this past information in mind.

And, while already 3 years old (not that that matters), "Gregorian Calendar URI Space" seems somehow VERY cool and interesting to me, even though I am not entirely sure how or why yet, and despite not being particularly keen on having "interval" or "gregorian" (or the full name of any other time keeping system) written out like that in a URI. (Not that that really matters either... a URI is an address, an abstraction not necessarily meant to be human readable.) But certainly I find the idea of setting a time-based context slice via URI very intriguing, especially with a formalized standard.

"The content of this resource is specifically contained within this time space." A timestamp alone is either too precise -- at this very second now -- or far too general -- today, this hour, this minute, this month, this year. With a range you can much more clearly bind something to the temporal context. "During these 3 hours of this day."

Anyways. To keep in mind.