Friday, December 11, 2009

Why privacy matters

Bad week for privacy rights. The two companies which are running toweringly large repositories of private information, Facebook and Google, both messed up in the same week.

First there is Google. CEO Eric Schmidt, for a man of his stature and competence, as well as the person in control of the database servers that store my email, he came much too close to saying, "If you're not doing anything wrong, you don't have anything to hide." His version of the unfortunate phrase was
If you have something that you don't want anyone to know, maybe you shouldn't be doing it in the first place. (via Boingboing)

And then there is Facebook. With the introduction of their new privacy system, Facebook has published tons of private information about their users. Facebook has revealed the name, profile picture, current city, gender, networks, and the fan pages of everyone, including the information of those who had elected to keep these private.

I will not mince words. If this move, the revealing of information previously entrusted to be private, is not currently illegal under American law, it should be made so.

Snappletronics has a good collection of links discussing the issue, as well as suggestions on where to join protests that are currently being organized against Facebook.

Bruce Schneier has written an excellent piece on why privacy matters. In short, privacy protects us from abuses by those in power.

Privacy is absolutely essential for the members of the opposition party. If the government can spy on them, game over. Your democracy is dead; no challenger will ever win an election again. This is why Nixon had to be impeached. His actions were not as overt as a declaration of dictatorship, but the outcome of his spying activities, if left unchecked, would have been similar.

Privacy for journalists is also non-negotiable. Without journalists to hound the government and expose its troubles, your vote is blind. Your democracy might as well be based on tossing coins rather than votes. The press is, after all, the Fourth Estate. How many anonymous whistleblowers would there be if the journalists' phones were tapped?

Privacy for journalism students is also important. After all, any dirt gathered on them today can be used to intimidate them later in life, when they are threatening those in positions of power. And the same vein, law students must be protected, since they are likely to enter politics sometime during their career.

Similarly, political bloggers and activists will also be the targets of harassment. Their voice can be heard, and if it challenges the government, it may need to be silenced. Indeed, spying for the purpose of censorship might become the norm in the United States. Protesters now find police resistance immediately as they begin to assemble at the location of their rally. The police seem to know where to go. And they know because the phone lines were tapped.
F.B.I. Watched Activist Groups, New Files Show**, New York Times, December 20, 2005
One F.B.I. document indicates that agents in Indianapolis planned to conduct surveillance as part of a "Vegan Community Project." Another document talks of the Catholic Workers group's "semi-communistic ideology." A third indicates the bureau's interest in Determining the location of a protest over llama fur planned by People for the Ethical Treatment of Animals.



Put yourself in the shoes of a politician. He has a pretty good gig. It pays well, it has great benefits. He enjoys the exhilaration of power and the occasional bribe. The only downside -- it's nerve-racking, really -- every four years he runs the risk of losing his job because someone is smearing his name in public. The best strategy is to start early and gather as much information as possible on the opposition. If no law stops him, he might as well tap the phone lines of would-be-bloggers and anyone likely to become an activist in the future. The information might come handy.

In short, anyone with a bone to grind against the government is in danger. And that's pretty much everyone.

Thursday, October 22, 2009

???!!??

Scheme allows punctuation marks in its identifiers, which allows for some funky naming convention. One of the most widely adopted convention is to name functions which return a boolean so that they end in ? (e.g. prime?), and name functions which have side effects to end in ! (e.g. set-random-seed!).

One problem with the Scheme language is that that convention hasn't been fleshed out any further. Here is the extension Tim and I designed.


(define (foo?? fn) ...) ;; Tests whether fn is a predicate for foo.


(define (foo!? fn) ...) ;; Tests whether fn is the setter for foo.


(define (foo?! fn) ...) ;; Sets a global predicates that will be used to test for foo's. For instance...


(define (true?! fn) ...) ;; Sets how we will be testing for true from now on, a.k.a. true?! redefines the behavior of if and cond.


(define (foo!! fn) ...) ;; Sets a setter for foo's. I'm not sure what this means. I'm tempted to say it is a setter for foo's that generates a yelling sound on the pc speaker as a side effect of the side effect.




It is also interesting to consider function names consisting of nothing but suffixes.


(define (? v) ...) ;; This is the predicate which doesn't specify what it is testing for. It is the vacuous predicate, It is the predicate that always returns true.


(define (?? fn) ...) ;; Tests whether the given function is a predicate. The ?? function is a kind of runtime type system. In other words, ?? applies the (any . -> . bool?) contract.


(define (!? fn) ...) ;; Tests whether fn might have side effects. !? is part of a compiler optimization pass.


(define (?! fn) ...) ;; Sets the global vacuous predicate. I'm not sure what this means either. I think it sets which logic you want to operate with. For a good time, set it to (lambda (v) false) and watch your entire model of computation collapse under the contradictions generated.


(define (! heap continuation) ...) ;; ! is the function that sets everything. It is the function that takes in a reified heap and a continuation and sets your interpreter state, wiping off the current state, then calls the continuation.



Defining function for names consisting of suffixes of three or more bangs and uhs (and nothing else) is left as an exercise to the reader.

While Scheme allow most punctuation marks in identifiers, somehow parentheses are forbidden. What a gross oversight. If we had it we could have define the smiley operator.


(define (:) v) ...) ;;; This is the smiley operator. It consumes a value and return a happy version of that value.

Thursday, September 17, 2009

Lucid dreaming practice gone wrong

At the bottom right corner of my screen, I saw 29:54. I thought to myself, ah my clock is b0rken, I must be dreaming! But no, it just was my editor telling me I'm on the 29th line (54th character.)

Sunday, May 31, 2009

Saturday, May 30, 2009

The speed, size and dependability of programming languages

The Computer Language Benchmarks Game is a collection of 429 programs, consisting of 13 benchmark reimplemented across 33 programming languages. It is a fantastic resource if you are trying to compare programming languages quantitatively. Which, oddly, very few people seems to be interested in doing.

The Benchmark Game spends a lot of efforts justifying itself against claims that the benchmarks are always flawed and that the whole exercise is pointless. I don't think it is. In fact, I've found that The Game is remarkably effective at predicting which forum hosts programmers annoyed at the slowness of their language, and that's good enough for me.

I was happy to find that in addition to speed The Game also publishes a source-code-size metric for each benchmark programs in each language. Thanks to this The Game let us at explore a fascinating aspect of programming language design: the tension that exist between expressiveness and performance. It is this tension that gives the expression "higher-level programming language" a pejorative connotation. When you are coding this high, you might be writing beautiful code, but you are so far away from the hardware you can't possibly get good performance, right?



If you drew the benchmark results on an XY chart you could name the four corners. The fast but verbose languages would cluster at the top left. Let's call them system languages. The elegantly concise but sluggish languages would cluster at the bottom right. Let's call them script languages. On the top right you would find the obsolete languages. That is, languages which have since been outclassed by newer languages, unless they offer some quirky attraction that is not captured by the data here. And finally, in the bottom left corner you would find probably nothing, since this is the space of the ideal language, the one which is at the same time fast and short and a joy to use.

Each pinkish dot in this chart comes from one language implementing one benchmark solution, so there are 429 dots, minus a few missing implementations. Both axes show multipliers of worsening from best. That is, if a particular solution is not the best one, the axis show how many times worse it is when compared to the best. The barrier of dots on the left side means that it is common to have many solutions near the best performer. On the right side and beyond it, there are a number of distant points which are clipped out of view by the edge.

The distribution of pink points is more uniform along the Y axis (verbosity) than along the X (slowness), suggesting that the world has not hit a wall in the progression of the expressiveness of programming languages the way it has with performance.

Like many scientific datasets, the data coming from The Computer Language Benchmark Game is rich in shapes, insight and stories. In order to retain as much of the shape as possible, it is critical to avoid calculating averages, as averages tend to smooth over the data and hide interesting sources of variation. The average function does to numbers what Gaussian blur does to pictures. Avoid it if you want to see the edges.

One such source of variation that attracted my curiosity was dependability: how well does the language performs across a variety of tasks, such as those composing the benchmark suite? A language might be concise most of the time, but if once a month a quirk of the language forces the code to be five times as large as what it ought to be, it's a problem.

In order to show dependability, and to avoid relying on averages and standard deviations, I drew star charts in the following manner. Take, for example, the benchmarks for the programming language Scala, which is a mix of functional programming and Java that runs on the JVM. Starting with the previous chart and its 429 dots, I added a gray line from the XY position of each Scala benchmark to the position of the overall average of all the Scala programs.



The center of the star is Scala's average performance, and the branches shoot out to the individual benchmarks. The resulting shape says something about Scala. On the X axis (slowness), the points often come close to the left wall, showing that Scala can take advantage of the optimizations done by the JVM. But the performance is not consistent, and in one case the performance is all the way to the right. On the Y axis (code size), we see that most of its scores are amongst the background crowd, but some of the faster benchmarks might have needed convolutions to reach the speed they have, including the one data point off the chart high above.

The next chart arranges the entire collection of the 33 programming languages available at The Computer Language Benchmark Game into a 6x6 grid. The chart is a so-called 'small multiples' design: each swatch in the grid has the same axes in the same scales as each other. It's the same setup as the one for Scala that we just saw. The 429 dots in the background are the same throughout. The intent is to make it easy to compare the shape of the star between languages (across the page), and against the general trend (in the background).

The swatch of the languages are grouped into columns according to their overall performance. Thus the fastest languages are in the first column on the left and the slowest are on the right. Within each column the swatches are sorted by average code size, with the best one at the bottom. In this way, the disposition of the grid mimics the axes within the swatches.



This chart is a treasure of narratives.

The languages in the first column all have tall thin pogo-stick stars. They show strikingly consistent performance, maxing out the CPU times after times, with the exception of one gcc benchmark and one g++ benchmark. Java stands proudly among that group, having earned its place after 10 years of intense research in run-time optimization. Their code sizes, on the other hand, are spread all over.

In the rightmost two columns we find many bushy stars, flat and wide. These are the scripting languages whose communities have not invested as much effort into building optimizing compilers for their language as they have spent tweaking its expressiveness. There are, however, a few spectacular exceptions. Lua, which has always been noted for its good performance among scripting languages, shows a much rounder star in the swatch at (4, 1), counting from the bottom left. Even better, the star of Luajit (3, 1) settles itself in the coveted bottom left corner, next to two academics celebrities Ocaml at (2, 1) and Clean (1, 1).

I am told that writing high-performance programs in Haskell is a bit of a black art, and that the tweaks introduced to boost the performance occupy a lot of code space. Perhaps because of this, the Haskell star at (2, 5) is extremely tall, reaching from the very top the very bottom, while having decent performance over all. Clean is a lazy language just like Haskell, but its star is much more compact, especially in code size, as if a huge effort of optimization had paid off and that it is now possible to write performance code naturally in Clean.

Both Python (5, 1) and Ruby (5, 3) can claim many of the smallest programs in the collection, but so does Firefox 3.5's JavaScript (5, 2). Yet, only the V8 implementation of JavaScript (4, 1) can make a claim at having reliable good performance. Its star has very few points though. It will remain to be seen whether it can maintain its good profile as more benchmarks gets implemented.

Does introducing functional features kill performance?


No, it does not. In the following chart, the ordering is the same as in the large chart. Languages which include functional features such as lambda, map, and tail call optimization are highlighted in green. The C and C++ compilers are in blue. The greens are spread all over, with more presence in the left (top and bottom) than on the right. Ultimately the first factor of performance is the maturity of the implementation.



Source code


I used a data table from The Game's website for the charts above (you will need to copy/paste that page into a csv file.) The code to generate the charts runs in PLT Scheme (MzScheme) v4.1.5.

Despite it not having a particularly remarkable spot on this performance chart, I code in PLT Scheme because it has a fantastic macro system. I also have wrists problems, so coding in Scheme lets me use my ergonomic editor DivaScheme.

Monday, May 25, 2009

Hypothesis: edit wars have a lot of edits, but few editors

I put today's blog post on Kiran Jonnalagadda's Blog, instead of here. It is an interesting small chart based on Kiran's expiration of Wikipedia's edit patterns.

Friday, May 22, 2009

How would you like to be paid, Mr. Journalist?

I've been wanting to create an alternative way for bloggers to earn money aside from advertisement, because I believe that advertisement is a corrupting force in the modern world. An article that is worth reading does not necessarily draw advertisement, and so socially important subjects become underrepresented. This is the reason why, I believe, there is a business section and a car section in the New York Times, but no "world peace" section, and no "news in anticorporate activism" section.

I also worry that without income from full-page advertisers (which do not exist online) or from classified ads (which became free thanks to Craig's List), neither the print press nor bloggers will have a budget to fund large investigative journalism efforts. It would be unfortunate to see the fourth branch become yet weaker than it already is.

My idea is to create a Firefox plug-in which automatically keeps track of the articles you are reading, and then distribute a fixed monthly sum to their authors in proportion to how much of their writings you have read. If you say that all the writing you consume on the Internet is worth $10/month to you, then that is the amount the plug-in distributes.

The keys to make this work are:
  • The interface has to be super low overhead. People dislike being forced to consider values and prices constantly, which is why they prefer unlimited long-distance plans, unlimited Internet, and owning a car to than renting by the hour from Zipcar or Communauto (even though the latter is cheaper). When you think "I could speak with my mom for another five minutes, but is it really worth 1$ to me?," it is clear you would prefer to be thinking about the mom than the 1$. This is why, I believe, micro-payments are failing, and why the plug-in should not allocate 10 cent per article or some such. In addition, choosing which author is worthy of a donation and who isn't is also overhead, which is why the plug-in should keep track of your reading habits in the background.
  • The money should be pledged at the moment when you finish reading the article, but it should not be collected until the author comes and claims it. This is an approach similar to that of the group activism site The Point, where people pledge to send money or do an action, but to do so only when enough people have pledged to reach a tipping point that guarantees that there will be an impact. Waiting for the author's claim also ensures that the middleman cannot be accused of hoarding the money. This sort of accusation happened, for instance, to the Russian Organization for Multimedia & Digital Systems (ROMS) which is the governmental entity responsible for distributing the copyright fees collected by AllOfMP3.
  • A community site needs to be created to match articles to their authors, so that authorship disputes may be resolved in a way that is satisfactory for the users of the plug-in.
This approach aims to solve a number of problems with the "please donate" banners. First, chasing the banner around the many web pages of all my favorite authors is onerous. Second, often the most deserving authors are those who shy away from displaying such a banner. Third, in the case of authors you read regularly, there remain a risk to setting up a recurrent payments, namely that you may forget to turn off the payment when the time comes.

This just one idea. Another idea is that of Spot Us which is uses The Point (as above) to raise funding for individual articles. Nobody knows where they paycheck of journalists will come from in the future. However, the urgency of finding a way is certainly highlighted by the recent row of newspaper bankruptcies.

Tuesday, May 5, 2009

How long is it going to last?

New Scientist magazine recently published a ridiculous chart, with Comic Network aesthetic, bold colors and fat radial lines exploding outwards. Unfortunately, it entirely missed the reason why we make charts: to communicate an argument by using our eye's ability to compare amounts across a page.
Moreover, below the chartjunk lay an important story about resource depletion on our small planet. This story deserved to be told, and so I did. I drew a cleaned and clear version, containing the same data as the original. Here it is. (click on the image to embiggen.)

The chart above is my version, and the New Scientist's original is below.


The theory about resource depletion comes from Hubbert's Peak. The theory about chartjunk comes from Tufte's groundbreaking, beautiful, and expensive books (all three of them), as well as from Rafe M.J. Donahue's outstanding free course notes on information design. America's fair share was computed according to one particular definition of 'fair', namely, the current world consumption times the percentage of the world's population living in the US.

Saturday, April 25, 2009

The perpetual election

The Liberal party of Canada has an "idea storm"-style website. Go vote!

The original Idea Storm by Dell is a website where customers post ideas and vote on what issue the company should address next. The website borrowed the moderation mechanism of digg.com as way to draw out the voice of the consensus. Barack Obama also used this approach during the transition months, with a similar success.

The current tally at voice.liberal.ca captures the distance between my opinions and that of the aggregate constituency of the Liberal party. The first four entries are
904 votes, Review the Tax Fairness Plan
539 votes, Invest in internet infrastructure
496 votes, Net Neutrality
116 votes, Legalize marijuana
While I can get behind the third and the fourth, the first two are not even on my radar. The worst is, the environment doesn't appear until the 17th position,
6 votes, Be aggressive on climate change
It has only six votes, and three of those are mine. No wonder Dion lost.

On computer security and underwear

There is an unsettling trend in Bangalore. Starting in January, groups of men started beating up women in the street, unprovoked. These men are vigilantes who intend to impose their view of Indian culture with their fists. They justified their action by saying the woman was not wearing the right clothes, not frequenting the right bar, or not speaking the right language.

My friends in Bangalore are members of a group that is rising awareness of the attacks with the public and with the police, as well as providing support to the victims. Their Pink Chaddi Campaign asked all women of India to send pink underwear to Shri Ram, the right-wing party member who sympathized with the thugs. And indeed, he received a truck-full of boxes of underwear. It was a powerful symbol that his views are refused by the people.

Now the violence has gone online. The Facebook group of the Pink Chaddi was hacked into, and the hacker defaced the page and ultimately deleted the group entirely. In order to stop the attacks, some computer wizs installed Linux on the only computer used to access the administrator panel of the group and changed all the passwords. But the attacks continued, suggesting that the hacker is making use of a security hole in the code implementing Facebook itself.

Despite many pleas, the administrators of Facebook have not taken any actions, whether to repair the group, to punish the perpetrator or to prevent further attacks. As far as they are concerned, the administrator password must have had been stolen and there is nothing they can do.

Building secure systems is already hard enough, even for the best programmers. But the story of the Pink Chaddi hack raises another issue. Designing a computer system so that the common case is secure enough is not sufficient. You need to be secure enough so that even political activists and investigative journalists are protected from retaliation. Personally, I may not be too concerned that emails can be read by anyone with access to any one routers on the way from my computer to its destination (emails are rarely encrypted.) Like most people, I can say that I have nothing to hide. However, I care deeply for the well-being of the journalists who bring me the news, and for the activists who help move my society forward.

Friday, March 20, 2009

March 18, Quy Nhon -> Hoi An : While in Quy Nhon, I pulled a vietnamese on the Viets and invited them to drink on my round. Thank you phrasebook! In addition to making fun at the expense of the unmarried daughter, there seem be a running joke everywhere in the country where I am the subject of the joke. It's about my nose. Need to study Vietnamese further and figure it out. Arrive in Hoi An, which is incredibly romantic, in the western-sense. The city is composed of 500 tailors, 500 shoe makers, and 500 huppé restaurants. It's low season, the waitresses look desperate for company.

March 19, Hoi An -> Dong Hoi : Stop in Hué for an authentic meal cooked in the middle of the market for the staff of the booths, and it tastes just like home (Hi Cou~'ng!). I buy flowers for two of the unmarried daughters I meet. Hoi An must have rubbed off. Arrive in Dong Hoi and share diner (and beer) with the Vietnamese director of plan-international.org. Afterward, the local choral lets go and I find myself swamped amongst schoolgirls again.

March 20, Dong Hoi -> Do Luong : With 85 million people in such a small land, there is hardly any space between the villages. Riding along the highway is a long sequence of Victoriavilles stringed together like pearls on a necklace. I veer West towards the mountains but the moment the driving was turning sporty it starts to rain. Booo. The locals make fun of my drenchedness over cheerful mugs of Bia Hoi Ha Noi.

Only 300 kilometers left to reach Hanoi.

Tuesday, March 17, 2009

March 14, Saigon -> My Tho : Decide that the people up North give better pantomimed directions, and are much nicer over all. Commit to reaching Hanoi by motorbike in 9 days (1789 km). Try to get some pictures printed, but meet the entire family at the print-shop instead. All theories of North-vs-South Vietnam needing a revision.

March 15, My Tho -> Mui Ne' Beach : Grand effort to wake up at 5:00 am to take picture of the empty port, but find it filled with Vietnameses doing their Thai Chi. Spur road around Saigon most dangerous ever. Dead body on the road. The police was there. They put a chunk of cardboard on her. :-((

March 16, Mui Ne' Beach -> Middle of nowhere near Nha Thang : Wake up in my beach resort. Can't believe the price of the room nightly is less than the rent daily in Montreal. Bob up and down with the slow waves. My way out of the village find itself slowed by a sea of village schoolgirls pouring in the reverse direction. On the way, Guillaume find a place so remote there is nothing at all.

March 17, Near Nha Thang -> Quy Nhon : Practice trombone around the local pagoda. Tragedy! I lose my Vietnamese mobile with all the phone numbers of cute girls it contains. The road is an endless scenic which I fail to capture on camera. All the beauty doesn't fit in the lens.

Saturday, March 14, 2009

Once you get out of the tourists-and-w*res district, Saigon is actually quite nice. It looks like a fabulous city to be rich in. It has french cafes with realistic-looking baguettes, impeccable fashion stores, art galleries selling beautiful fakes. Name it, if your neighbor Vietnam-dong-billionaire likes it, Saigon's got it.

However, it does not have any coffee. Not any coffee to care for anyway. I suppose it never gets cold enough for a street-side Caf fe nom sua here, but don't these people ever need to wake up?

I spent the day riding around the Mekong Delta. The book makes a lot of the cultural impact that the American presence had on the South, but this is silly, I feel like I am touring the poorer parts of Louisiana.

So this is it, I going back to the North.

Thursday, March 12, 2009

Guillaume has found a place so remote there is no Internet

This trip is progressing much faster than my ability to write it down. I do visualization exercises at night to commit as much as I can to long-term memory. The places I have seen, the people I have met, the mystery meats I have eaten.

March 3, Hanoi -> Ha Phong : Separated highway, mostly motorbikes but also rural buggies pulled by orcs. The whole highway has a bicycle lane. Ha Phong is built around a park, which radiate a wonderful sense of place. Must be the feng shui. Share diner with some guys at a street-side booth, drink too much vodka for the amount of beer. Cheers abounds.

March 4, Ha Phong -> Cat Ba : Pay 3$ to the guys that loaded my motorbike on the pedestrian ferry. Ride up the mountain of this Jurassic island. Play pool at a street-side booth with 12 guys a girl and a shark.

March 5, Organized boat tour around Halong Bay, World Heritage Site : Wth I am doing in a tour? Talk politics with the Americans.

March 6, Cat Ba -> Lang Son : Breakfast pho in the fishing village. Locals feed me has much vodka as they can before the ferry leaves. Superbly cute baby plays wave-at-the-foreigner. Cute girls my age play phrasebook. In a village, share lunch with all the women of the family. In another village, coffee with impeccably fashionable 18 year old who dreams of travels (and is a killer at the phrasebook game). On arrival in Lang Son, share diner with the waitresses.

March 7, Lang Son -> Nguyen Binh : Ride up the mountains as the fog clears. Most fun driving since the Ridge Racer days. Share diner with the daughters at the hotel. Seems to be leaving behind a trail of brokenhearted 18y-olds who somehow got a hold of my phone number.

March 8, Nguyen Binh -> Ha Giang : More breathtaking views from the narrow coiled roads. Did not fall down the cliff, did not become a pancake on the front grill of a truck. Minority villagers surround my bike in silence, curious but careful, as I ask for directions with the best Vietnamese pronunciation I can manage. Share lunch with a Vietnam-China custom officer.

March 9, Stay in Ha Giang : An entire school ground of kids ask for the foreigner's name and wave, overjoyed that their hard-learned English is being heard by someone. Play phrasebook with the elderly owner of a tastefully decorated coffee house off the main road. Diner with the hotel staff. Spend most of the evening with the maids, in fact. They are learning trombone.

March 10, Ha Giang -> Hanoi : More pleasure driving. Takes longer than planned due to all the delicious coffee (and company) on the way. Lots of oddities on the road, such as a truck full of pigs, who are wrapped in stuff sacs, piled 4-high, with plugs in their bottom so they do not dirty the road. I follow it for a while, in horror. The pigs squeal.

March 11, Hanoi -> Saigon : By train, it's 60$ for me, and 20$ for my motorbike. The trains crawls at 50 km/h, feels like it's hitting turbulence every 30 minutes, and takes 33 hours to get there. The awful food is a reminder to never eat in a state-run restaurant in a communist country. Beer is plentiful though.

March 12, Arrive in Saigon : I'm in shock. It's like all the vietnameseness of the Saigoneses was pressed out of the Viets under the weight of too much money. A mere 1/5 of the faces show the happy, playful smile that I know from the North. A drive-by thief tries to snatch a handbag. Moms driving scooters stop by me : "see my daughter back, she give you gentle massage and f*k you." I haven't seen so much filth since visiting Amsterdam, and I've only been here 3 hours. Things may be better in a different district, we'll see.

Saturday, March 7, 2009

Joy is Pho, Coffee, Tea

One small plane hop, and here I am in Vietnam.

This trip began in 2005 when I took appartment into what would become the birthplace of the Vietnamese Expat community in Providence. You might have heard the joke before, during that period I had between 3 and 12 roomates depending on how you counted, since many Viets who officially didn't live there nevertheless spent most of their time with us. Every evening we hosted the group diner (feast!) which was full of fun and sillinesses et surtout, bien arrose'. I soon learned not to skip the diners, first because when in Rome you don't skip diner, and second because they did wonder for my happyness level. Nearing the end of my time in the house Cou~'ng had the best quote: "By now you may think you know Vietnamese culture, but be careful, we are, actually, pretty cool. :)"

Cou~'ng, it's time for me to find out just are cool you are.

I landed in Hanoi on Saturday (Feburary 28) and proceeded to gather the elements necessary for this trip. Motorbike, check. Helmet, gloves, road map, insurance, check check check. With my trusty leather trenchcoat, I was ready to face the mountains of North Vietnam. Trecheous yes, but they are also reputed to contain some of the best moto rides on the planet.

In Hanoi, you order Pho. Or rather, you stumble with your non-existant Vietnamese trying to order a meal, and the woman correctly assumes that you want Pho. In Vietnam, it's Pho for breakfast, Pho for lunch, Pho for afternoon snack, etc. There is a clock somewhere that counts the time before I tire of Pho, but this country isn't old enough to contain it. The Pho in Hanoi is delicious, as I expected.

What I did not expect, was to meet the love of my life in Hanoi within 12 hours of my arrival. Early Sunday morning, Nguyen took me to a coffee house for a true cup of Vietname coffee, dark, deep, sweet, rich and almony. What I wonder! I'm sorry Italy, I'm sorry expresso, for now on I have eyes only for Caffe'e no'm su^a.

Thus, with Pho and coffee, this trip was off to a good start, and it will get better as I ride deeper into the tea-producing country side. I can't wait.

Sunday, March 1, 2009

Cheap, Cheapish, and not cheap at all.

In Bangkok the most expensive mean of travel is the tuktuk. They have no meters and their drivers always quotes 200 baht (5$) irrespective of your travel distance, because (I suspect) the Lonely Planet advices that no ride should cost more than 200 baht. Paradoxally, the luxury taxis are cheaper. Cheaper still, is the metro, which at first glance looks like a fake-copy of the one in Delhi. The least expensive are the boat buses which races around the canals of Bangkok. Most Thais dislike them because the powerful rip waves from the boats often crashes on walls of the canal, spraying of sweage-water back at the boat. Yum. The more daring Thais are provided with a traffic-free commute into town, and with entertainment whenever a foreigners falls over, so it's all good.

Friday, February 27, 2009

Bangkok, Thailand

Last year, soon after I walked out of the Indian embassy in Ottawa, I was handed a stamp valid for 8760 hours of enjoyment of India. There were only 22 hours left on it when I stepped to be interviewed at the infamous "exit visa" check point. You coming back?, asked the officer. I said, I would love to come back, maybe get another teaching contract or something, India is a fascinating country, but for the time being I won't be back because there's only 22h left on my visa. He looked up and said, your visa 1 day you know?? Yes sir, I know sir, yes sir. That seems to satisfy him and he waived me along. Thanks sir!

With the bells of midnight ringing, I achieved my goal of navigating an encounter with India's bureaucracy without a chaos-storm. It was, truly, a one-in-a-lifetime event, a memorable moment.

My first stop is Bangkok, Thailand, where I sit writing this, and the next stop will be Hanoi, Vietnam. I am, essentially, traveling the world in order of cuisine preference.

The first notable moment was a courtesy of Thai Airways. I had planned occupy the 3 hours on this short-hop red-eye flight with a single sleep cycle, but the staff began to serve diner at around 2 am. Apparently the Thais eat diner even later than the Keralites. I asked for the veg option, but received a slab of tofu (I abhor tofu), which reminded me: it's a eat-meat-or-tofu world out there, India, I'll miss you.

Once landed at the hyper-modern Bangkok airport, I took much too long to find luggage carriage #16. On the South side it says, #1 to 15 here, for 16 see North side. On the North side it says, #16 to 32 here, with 16 crossed off in crayon, and written "16 on South side." They should be careful. Infinite loops are a real killer of sleep deprived computer scientists.

Hungry and eager, sought the nearest tom yum restaurant (next to the airport's taxi booth. 0.75$ for fish tom yum.) I also ate tom yum that night, and today for lunch because (1) it tastes fantastic and (2) it's the one meal I can pronounce right on the first try. Satwaaadeeeee tomyum cobcuhncuap!

Soon afterward, I sit in Lumphini Park, doing the yoga stretches (feeling awkward-ish), practicing on the trombone (feeling beginner-ish), and drinking bottled green tea (feeling sweaty). A group of schoolgirls curious about the music come over and then leave, schooling as fishes do. The engine of my tuktuk produces a sound fit for The Terminator's motorcycle. I buy a wallet written "goosi" on it for too much money. The many massage shops have names with odd double entendre. I hang out with some Thai undergrads, where one guy offers me a shot of whiskey, one guy pretends he's a ladyboy, and one girl gives me a hug and takes a picture of herself with the foreigner.

Clearly, I am in Bangkok.