<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-1594097932719209060</id><updated>2009-10-29T17:02:07.666-04:00</updated><title type='text'>Square root of x divided by zero</title><subtitle type='html'>Guillaume Marceau's blog away from home</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gmarceau.qc.ca/blog/atom.xml'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-9088250101329492817</id><published>2009-10-22T13:14:00.010-04:00</published><updated>2009-10-22T22:15:34.460-04:00</updated><title type='text'>???!!??</title><content type='html'>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!).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (foo?? fn) ...)&lt;/span&gt; ;; Tests whether &lt;span style="font-weight: bold;"&gt;fn&lt;/span&gt; is a predicate for foo&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (foo!? fn) ...)&lt;/span&gt; ;; Tests whether &lt;span style="font-weight: bold;"&gt;fn&lt;/span&gt; is the setter for foo&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (foo?! fn) ...)&lt;/span&gt; ;; Sets a global predicates that will be used to test for foo's.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;For instance...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (true?! fn) ...)&lt;/span&gt; ;; Sets how we will be testing for true from now on, a.k.a. &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;true?!&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; redefines the behavior of &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;if&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; and &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;cond&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (foo!! fn) ...)&lt;/span&gt; ;; 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.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is also interesting to consider function names consisting of nothing but suffixes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (? v) ...)&lt;/span&gt; ;; 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.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (?? fn) ...)&lt;/span&gt; ;; Tests whether the given function is a predicate. The &lt;span style="font-weight: bold;"&gt;??&lt;/span&gt; function is a kind of runtime type system. In other words, &lt;span style="font-weight: bold;"&gt;??&lt;/span&gt; applies the &lt;span style="font-weight: bold;"&gt;(any . -&gt; . bool?)&lt;/span&gt; contract.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (!? fn) ...)&lt;/span&gt; ;; Tests whether &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;fn&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; might have side effects. &lt;span style="font-weight: bold;"&gt;!?&lt;/span&gt; is part of a compiler optimization pass.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (?! fn) ...)&lt;/span&gt; ;; 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 &lt;span style="font-weight: bold;"&gt;(lambda (v) false)&lt;/span&gt; and watch your entire model of computation collapse under the contradictions generated.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (! heap continuation) ...) &lt;/span&gt;;; &lt;span style="font-weight: bold;"&gt;!&lt;/span&gt; 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.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;(define (:) v) ...) &lt;/span&gt;;;; This is the smiley operator. It consumes a value and return a happy version of that value. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-9088250101329492817?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/9088250101329492817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=9088250101329492817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/9088250101329492817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/9088250101329492817'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/10/blog-post.html' title='???!!??'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-5916797101792136123</id><published>2009-09-17T18:53:00.002-04:00</published><updated>2009-09-17T19:01:10.195-04:00</updated><title type='text'>Lucid dreaming practice gone wrong</title><content type='html'>At the bottom right corner of my screen, I saw 29:54. I thought to myself, ah my clock is b0rken, &lt;a href="http://en.wikibooks.org/wiki/Lucid_Dreaming/Reality_Checks/Time"&gt;I must be dreaming&lt;/a&gt;! But no, it just was &lt;a href="http://plt-scheme.org/tour.html"&gt;my editor&lt;/a&gt; telling me I'm on the 29th line (54th character.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-5916797101792136123?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/5916797101792136123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=5916797101792136123' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5916797101792136123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5916797101792136123'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/09/lucid-dreaming-practice-gone-wrong.html' title='Lucid dreaming practice gone wrong'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-5247387861509618070</id><published>2009-05-31T12:57:00.001-04:00</published><updated>2009-05-31T12:59:08.678-04:00</updated><title type='text'>Done! .... Nope! (ha! ha!)</title><content type='html'>Andrew Trumper posted an excellent analysis of &lt;a href="http://andrewtrumper.blogspot.com/2009/03/have-you-ever-seen-progress-bar-that.html"&gt;how progress bars are all wrong&lt;/a&gt; (and what to do about it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-5247387861509618070?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/5247387861509618070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=5247387861509618070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5247387861509618070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5247387861509618070'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/05/done-nope-ha-ha.html' title='Done! .... Nope! (ha! ha!)'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-3215969516577125843</id><published>2009-05-30T09:16:00.067-04:00</published><updated>2009-06-03T11:43:04.087-04:00</updated><title type='text'>The speed, size and dependability of programming languages</title><content type='html'>&lt;small&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Note: &lt;/span&gt; This article has been updated. The earlier version was based on 2005 data, and included data from benchmarks that should not have been included.  You should read this version, but if needed the &lt;a href="http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependability-of-v1.html"&gt;the earlier version&lt;/a&gt; is also available.&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://shootout.alioth.debian.org/"&gt;The Computer Language Benchmarks Game&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;The Benchmark Game spends a lot of efforts justifying itself against claims that the &lt;a href="http://shootout.alioth.debian.org/u32q/miscfile.php?file=benchmarking&amp;amp;title=Flawed%20Benchmarks"&gt;benchmarks are always flawed&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;I was happy to find that in addition to speed The Game also publishes a &lt;a href="http://shootout.alioth.debian.org/u32q/faq.php#gzbytes"&gt;source-code-size metric&lt;/a&gt; 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?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability--context-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 400px;" src="http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability--context-3.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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 &lt;em&gt;multipliers of worsening from best&lt;/em&gt;. 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;One such source of variation that attracted my curiosity was &lt;em&gt;dependability&lt;/em&gt;: 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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;, 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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability--scala.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 329px; height: 358px;" src="http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability--scala.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability-2009.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability-2009.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This chart is a treasure of narratives.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://gcc.gnu.org/"&gt;gcc&lt;/a&gt; benchmark and one &lt;a href="http://en.wikipedia.org/wiki/G%2B%2B"&gt;g++&lt;/a&gt; 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. &lt;br /&gt;&lt;br /&gt;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. &lt;a href="http://shootout.alioth.debian.org/u32q/lua.php"&gt;Lua&lt;/a&gt;, 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 &lt;a href="http://luajit.org/"&gt;Luajit&lt;/a&gt; (3, 1) settles itself in the coveted bottom left corner, next to two academics celebrities &lt;a href="http://caml.inria.fr/"&gt;Ocaml&lt;/a&gt; at (2, 1) and &lt;a href="http://clean.cs.ru.nl/"&gt;Clean&lt;/a&gt; (1, 1).&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.haskell.org/"&gt;Haskell&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;Both &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; (5, 1) and &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; (5, 3) can claim many of the smallest programs in the collection, but so does Firefox 3.5's &lt;a href="https://wiki.mozilla.org/JavaScript:TraceMonkey"&gt;JavaScript&lt;/a&gt; (5, 2). Yet, only the &lt;a href="http://code.google.com/p/v8/"&gt;V8 implementation of JavaScript&lt;/a&gt; (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.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Does introducing functional features kill performance?&lt;/h4&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability-paradim-2009.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://gmarceau.qc.ca/blog/uploaded_images/size-vs-speed-vs-depandability-paradim-2009.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Source code&lt;/h4&gt;&lt;br /&gt;I used &lt;a href="http://shootout.alioth.debian.org/u32/summarydata.php?d=data"&gt;a data table&lt;/a&gt; from The Game's website for the charts above (you will need to copy/paste that page into a csv file.) &lt;a href="http://gmarceau.qc.ca/files/shootout.ss"&gt;The code&lt;/a&gt; to generate the charts runs in &lt;a href="http://www.plt-scheme.org/"&gt;PLT Scheme (MzScheme)&lt;/a&gt; v4.1.5. &lt;br /&gt;&lt;br /&gt;Despite it not having a particularly remarkable spot on this performance chart, I code in PLT Scheme because it has &lt;a href="http://blog.plt-scheme.org/2007/05/macros-matter.html"&gt;a fantastic macro system&lt;/a&gt;. I also have &lt;a href="http://gmarceau.nfshost.com/articles/your-wrists-hurt-you-must-be-a-programmer.html"&gt;wrists problems&lt;/a&gt;, so coding in Scheme lets me use my &lt;a href="http://www.cs.brown.edu/research/plt/software/divascheme/"&gt;ergonomic editor DivaScheme&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-3215969516577125843?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/3215969516577125843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=3215969516577125843' title='101 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/3215969516577125843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/3215969516577125843'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependability-of.html' title='The speed, size and dependability of programming languages'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>101</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-1049578976049637075</id><published>2009-05-25T01:32:00.006-04:00</published><updated>2009-05-25T01:42:36.409-04:00</updated><title type='text'>Hypothesis: edit wars have a lot of edits, but few editors</title><content type='html'>I put today's blog post on &lt;a href="http://jace.zaiki.in/2009/05/25/my-hypothesis:-edit-wars-have-a-lot-of-edits-but-few-editors"&gt;Kiran Jonnalagadda's Blog&lt;/a&gt;, instead of here. It is an interesting small chart based on Kiran's expiration of Wikipedia's edit patterns.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://jace.zaiki.in/2009/05/25/my-hypothesis:-edit-wars-have-a-lot-of-edits-but-few-editors"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 389px; height: 208px;" src="http://gmarceau.qc.ca/img/wikipedia%20-%20edits%20-%203%20-%20medium.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-1049578976049637075?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/1049578976049637075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=1049578976049637075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/1049578976049637075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/1049578976049637075'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/05/my-hypothesis-edit-wars-have-lot-of.html' title='Hypothesis: edit wars have a lot of edits, but few editors'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-5122303198710336007</id><published>2009-05-22T16:53:00.007-04:00</published><updated>2009-05-22T17:39:45.769-04:00</updated><title type='text'>How would you like to be paid, Mr. Journalist?</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;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), &lt;a href="http://www.shirky.com/weblog/2009/03/newspapers-and-thinking-the-unthinkable/"&gt;neither the print press nor bloggers will have a budget&lt;/a&gt; to fund large investigative journalism efforts. It would be unfortunate to see the &lt;a href="http://en.wikipedia.org/wiki/Fourth_branch_of_government"&gt;fourth branch&lt;/a&gt; become yet weaker than it already is.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;The keys to make this work are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;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.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;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 &lt;a href="http://www.thepoint.com/"&gt;The Point&lt;/a&gt;, 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. &lt;a href="http://www.museekster.com/allofmp3faq.htm#Artists_and_labels_claim_that_they_do_not_receive_royalties_from_ROMS"&gt;This sort of accusation happened&lt;/a&gt;, for instance, to the Russian Organization for Multimedia &amp;amp; Digital Systems (ROMS) which is the governmental entity responsible for distributing the copyright fees collected by &lt;a href="http://en.wikipedia.org/wiki/AllOfMP3.com"&gt;AllOfMP3&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;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.&lt;/li&gt;&lt;/ul&gt;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.&lt;br /&gt;&lt;br /&gt;This just one idea.  Another idea is that of &lt;a href="http://www.spot.us/"&gt;Spot Us&lt;/a&gt; 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 &lt;a href="http://www.editorandpublisher.com/eandp/news/article_display.jsp?vnu_content_id=1003974087"&gt;recent row of newspaper bankruptcies&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-5122303198710336007?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/5122303198710336007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=5122303198710336007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5122303198710336007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5122303198710336007'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/05/how-would-you-like-to-be-paid-mr.html' title='How would you like to be paid, Mr. Journalist?'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-1425913830494097138</id><published>2009-05-05T11:00:00.007-04:00</published><updated>2009-05-18T21:21:31.826-04:00</updated><title type='text'>How long is it going to last?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.qc.ca/blog/uploaded_images/resource-depletion.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 1157px; height: 600px;" src="http://gmarceau.qc.ca/blog/uploaded_images/resource-depletion.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;New Scientist magazine recently published a ridiculous chart discussing the depletion of the world's resources. Their chart had an Comic Network aesthetic with 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.&lt;br /&gt;&lt;br /&gt;The chart above is my version, and the New Scientist's original is below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.newscientist.com/data/images/archive/2605/26051202.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 350px; height: 214px;" src="http://www.newscientist.com/data/images/archive/2605/26051202.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The theory about resource depletion comes from &lt;a href="http://en.wikipedia.org/wiki/Hubbert_peak_theory"&gt;Hubbert's Peak&lt;/a&gt;. The theory about chartjunk comes from &lt;a href="http://www.edwardtufte.com/"&gt;Tufte's groundbreaking, beautiful, and expensive books&lt;/a&gt; (all three of them), as well as from Rafe M.J. Donahue's outstanding &lt;a href="http://biostat.mc.vanderbilt.edu/twiki/pub/Main/RafeDonahue/graphicshandout20080717_01.pdf"&gt;free course notes on information design&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-1425913830494097138?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/1425913830494097138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=1425913830494097138' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/1425913830494097138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/1425913830494097138'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/05/how-long-is-it-going-to-last.html' title='How long is it going to last?'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-775422356460800571</id><published>2009-04-25T12:45:00.006-04:00</published><updated>2009-04-25T13:43:49.774-04:00</updated><title type='text'>The perpetual election</title><content type='html'>The &lt;a href="http://voice.liberal.ca/"&gt;Liberal party of Canada has an "idea storm"&lt;/a&gt;-style website. Go vote!&lt;br /&gt;&lt;br /&gt;The original &lt;a href="http://ideastorm.com/"&gt;Idea Storm by Dell&lt;/a&gt; is a website where customers post ideas and vote on what issue the company should address next.  The website borrowed the moderation mechanism of &lt;a href="http://digg.com/"&gt;digg.com&lt;/a&gt; as way to draw out the voice of the consensus. &lt;a href="http://change.gov/newsroom/entry/wrapping_up_the_citizens_briefing_book/"&gt;Barack Obama also&lt;/a&gt; used this approach during the transition months, with a similar success.&lt;br /&gt;&lt;br /&gt;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&lt;br /&gt;&lt;blockquote&gt;904 votes, &lt;a href="http://voice.liberal.ca/pages/on_probation/suggestions/152616-review-the-tax-fairness-plan-and-the-tax-on-income-trusts"&gt;Review the Tax Fairness Plan&lt;/a&gt;&lt;br /&gt;539 votes, &lt;a href="http://voice.liberal.ca/pages/on_probation/suggestions/145294-shouldn-t-we-invest-in-internet-infrastructure-"&gt;Invest in internet infrastructure&lt;/a&gt;&lt;br /&gt;496 votes, &lt;a href="http://voice.liberal.ca/pages/on_probation/suggestions/154384-net-neutrality"&gt;Net Neutrality&lt;/a&gt;&lt;br /&gt;116 votes, &lt;a href="http://voice.liberal.ca/pages/on_probation/suggestions/153042-when-will-we-stop-providing-funding-to-organized-crime-"&gt;Legalize marijuana&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;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,&lt;br /&gt;&lt;blockquote&gt;6 votes, &lt;a href="http://voice.liberal.ca/pages/on_probation/suggestions/160138-why-can-t-you-be-aggressive-in-the-war-on-climate-change-"&gt;Be aggressive on climate change&lt;/a&gt;&lt;/blockquote&gt;It has only six votes, and three of those are mine.  No wonder Dion lost.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-775422356460800571?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/775422356460800571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=775422356460800571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/775422356460800571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/775422356460800571'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/04/perpetual-election.html' title='The perpetual election'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-7742392416504836971</id><published>2009-04-25T02:59:00.007-04:00</published><updated>2009-04-25T03:37:43.821-04:00</updated><title type='text'>On computer security and underwear</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://boingboing.net/2009/02/09/indian-women-pink-ch.html"&gt;Pink Chaddi Campaign&lt;/a&gt; asked all women of India to send pink underwear &lt;a href="http://ibnlive.in.com/news/not-only-shiv-sena-ram-sene-dislikes-cupid-too/84360-3.html"&gt;to Shri Ram&lt;/a&gt;, 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.&lt;br /&gt;&lt;br /&gt;Now the violence has gone online.  The &lt;a href="http://www.facebook.com/group.php?gid=78995563572"&gt;Facebook group&lt;/a&gt; of the &lt;a href="http://www.bangaloremirror.com/index.aspx?page=article&amp;amp;sectid=10&amp;amp;contentid=200904142009041401232752515d6370&amp;amp;sectxslt=&amp;amp;pageno=1"&gt;Pink Chaddi was hacked into&lt;/a&gt;, 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-7742392416504836971?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/7742392416504836971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=7742392416504836971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/7742392416504836971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/7742392416504836971'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/04/on-computer-security-and-underwear.html' title='On computer security and underwear'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-8491265693738823651</id><published>2009-03-20T09:40:00.004-04:00</published><updated>2009-03-20T10:35:38.960-04:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;March 18, Quy Nhon -&gt; Hoi An : &lt;/span&gt;&lt;span&gt;While in &lt;/span&gt;&lt;span&gt;Quy Nhon, &lt;/span&gt;&lt;span&gt;I&lt;/span&gt; pulled a vietnamese on the Viets and invited &lt;span style="font-style: italic;"&gt;them&lt;/span&gt; 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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 19, Hoi An -&gt; Dong Hoi : &lt;/span&gt;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 &lt;a href="http://www.plan-international.org/"&gt;plan-international.org&lt;/a&gt;. Afterward, the local choral lets go and I find myself swamped amongst schoolgirls again.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 20, Dong Hoi -&gt; Do Luong : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;Only 300 kilometers left to reach Hanoi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-8491265693738823651?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/8491265693738823651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=8491265693738823651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/8491265693738823651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/8491265693738823651'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/03/hoi-while-in-quy-nhon-i-pulled.html' title=''/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-8724175219626219848</id><published>2009-03-17T09:32:00.008-04:00</published><updated>2009-03-17T10:10:51.854-04:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;March 14, Saigon -&gt; My Tho :&lt;/span&gt; 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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 15, My Tho -&gt; Mui Ne' Beach :&lt;/span&gt; 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. :-((&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 16, Mui Ne' Beach -&gt; Middle of nowhere near Nha Thang :&lt;/span&gt; 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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 17, Near Nha Thang -&gt; Quy Nhon :&lt;/span&gt; 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-8724175219626219848?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/8724175219626219848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=8724175219626219848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/8724175219626219848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/8724175219626219848'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/03/march-14-saigon-my-tho-decide-that.html' title=''/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-1775321316834988711</id><published>2009-03-14T09:19:00.002-04:00</published><updated>2009-03-14T10:02:37.330-04:00</updated><title type='text'></title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;However, it does &lt;strong&gt;not&lt;/strong&gt; have any coffee. Not any coffee to care for anyway. I suppose it never gets cold enough for a street-side &lt;em&gt;Caf fe nom sua&lt;/em&gt; here, but don't these people ever need to wake up?&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;So this is it, I going back to the North.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-1775321316834988711?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/1775321316834988711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=1775321316834988711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/1775321316834988711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/1775321316834988711'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/03/once-you-get-out-of-tourists-and-wres.html' title=''/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-8875460288154369272</id><published>2009-03-12T12:04:00.008-04:00</published><updated>2009-03-17T10:16:47.737-04:00</updated><title type='text'>Guillaume has found a place so remote there is no Internet</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 3, Hanoi -&gt; Ha Phong : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 4, Ha Phong -&gt; Cat Ba : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 5, Organized boat tour around Halong Bay, World Heritage Site : &lt;/span&gt;Wth I am doing in a tour? Talk politics with the Americans.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 6, Cat Ba -&gt; Lang Son : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 7, Lang Son -&gt; Nguyen Binh : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 8, Nguyen Binh -&gt; Ha Giang : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 9, Stay in Ha Giang : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 10, Ha Giang -&gt; Hanoi : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 11, Hanoi -&gt; Saigon : &lt;/span&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;March 12, Arrive in Saigon : &lt;/span&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-8875460288154369272?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/8875460288154369272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=8875460288154369272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/8875460288154369272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/8875460288154369272'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/03/guillaume-has-found-place-so-remote.html' title='Guillaume has found a place so remote there is no Internet'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-2848847523122146830</id><published>2009-03-07T09:34:00.014-05:00</published><updated>2009-03-07T10:32:04.900-05:00</updated><title type='text'>Joy is Pho, Coffee, Tea</title><content type='html'>One small plane hop, and here I am in Vietnam.&lt;br /&gt;&lt;br /&gt;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. :)"&lt;br /&gt;&lt;br /&gt;Cou~'ng, it's time for me to find out just are cool you are.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-2848847523122146830?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/2848847523122146830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=2848847523122146830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/2848847523122146830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/2848847523122146830'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/03/joy-is-pho-coffee-tea.html' title='Joy is Pho, Coffee, Tea'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-3749606026229827634</id><published>2009-03-01T10:05:00.014-05:00</published><updated>2009-03-01T12:13:06.152-05:00</updated><title type='text'>Cheap, Cheapish, and not cheap at all.</title><content type='html'>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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-3749606026229827634?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/3749606026229827634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=3749606026229827634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/3749606026229827634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/3749606026229827634'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/03/cheap-cheapist-and-not-cheap-at-all.html' title='Cheap, Cheapish, and not cheap at all.'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-9051027119584691490</id><published>2009-02-27T11:34:00.015-05:00</published><updated>2009-02-27T13:35:54.166-05:00</updated><title type='text'>Bangkok, Thailand</title><content type='html'>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!&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Hungry and eager, sought the nearest &lt;span style="font-style: italic;"&gt;tom yum&lt;/span&gt; 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. &lt;span style="font-style: italic;"&gt;Satwaaadeeeee tomyum cobcuhncuap!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Clearly, I am in Bangkok.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-9051027119584691490?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/9051027119584691490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=9051027119584691490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/9051027119584691490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/9051027119584691490'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2009/02/bangkok-thailand.html' title='Bangkok, Thailand'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-6650132760530313292</id><published>2008-10-28T11:36:00.011-04:00</published><updated>2008-10-29T21:56:31.748-04:00</updated><title type='text'>Happy Diwali!</title><content type='html'>Let's take a moment to list some good news.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;First,&lt;/span&gt; yesterday was Diwali, a holiday in honor of someone or other, depending on who you ask. It's about this guy, who is a God, and who slayed a Dragon. Or it's about some other guy, who is also a God, who came back home and people lit lights for him. The &lt;a href="http://en.wikipedia.org/wiki/Diwali"&gt;full list of interpretations&lt;/a&gt; is on Wikipedia, including the different opinions on when exactly it should be celebrated (Sunday, yesterday, or tomorrow. Trivandrum itself seems divided on the issue). Alternatively, it is a festival in honor Lakshmi, the goddess of wealth, and so during the celebration people convert their money into fireworks and burn it. It's a fun way to flaunt how rich you are, and to teach young children how to play with explosives. For instance:&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0045-2-748770.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 322px;" src="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0045-2-748766.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;&lt;huge&gt;&lt;span style="font-weight: bold;"&gt;&lt;----Before      &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;       After----&gt;&lt;/span&gt;&lt;/huge&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0057-2-734010.JPG"&gt;&lt;img style="cursor: pointer; width: 297px; height: 333px;" src="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0057-2-733997.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Good good. Quite an improvement there Kini!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Second,&lt;/span&gt; more good news. I am a volunteer coach for two speed roller skate athletes. Binesh, here on the left, is seen winning the his race at the regional qualifications, and Shery, on the right, seen winning her race during the same event.&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0063-710572.JPG"&gt;&lt;img style="margin: 0px auto 10px; cursor: pointer; width: 200px; height: 150px;" src="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0063-710222.JPG" alt="" border="0" /&gt;&lt;/a&gt;                             &lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0072-711091.JPG"&gt;&lt;img style="margin: 0px auto 10px; cursor: pointer; width: 150px; height: 200px;" src="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0072-710710.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;With the help of a small &lt;a href="http://plt-scheme.org/"&gt;PLT Scheme&lt;/a&gt; program, I graph their times and shout it at them on every lap until they get faster. And they did -- they got faster and they went to win two solid gold medals at the KV Junior National Speed Roller Skating Competition. Way to go team!&lt;br /&gt;&lt;br /&gt;Most impressive, they did it without any pasta. Normally, athletes eat nothing but pastas during the 24 hours leading to a race. This loads the body with the form of energy that most readily available for the muscles (That is, aside from sugar. Sugars may be the most available, but they cannot be stocked, since any extra intake is immediately burned in the form of a sugar rush.) So, since I do not know what is the nutritional equivalent of pasta in the Indian diet, and that here pasta is a rich foreigner's food that I can't afford (or anyone), Binesh and Shery had to win from the force of their own will -- no pasta-magic helped them. I am so proud.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Third good news,&lt;/span&gt; Kerala's celebrated its first web site to reach a Google Page Rank of 7. The &lt;a href="http://www.keralatourism.org/"&gt;State's tourism web site&lt;/a&gt;, was propelled to 7 when a sizable crowd of Bangalore bloggers linked to it as they prepared to travel to Blog Camp. The site managed to reach this position in spite of violating two core rules of web design circa 2001 (1- have no scrolling marquee, 2- have some substantive content on the first page). The news of the web site's success was discussed on the evening news, and printed onto the pages of the State's edition of &lt;a href="http://www.hindu.com/"&gt;respected national newspaper The Hindu&lt;/a&gt;, whose web site represents all the best rules of web design as they stood in 1997.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fourth good news,&lt;/span&gt; and perhaps the most important, the neighborhood grocery store, in an effort to improve their imitation of a western-style grocery store, begun storing delicious-delicious Lindt chocolate. The jump from what was previously available is big: the members of the taste panel we organized were unanimous: At Spencer's, they sell one brand of awful chocolate, one brand of merely bad chocolate, some ok chocolate, and Lindt -- the only chocolate worthy of &lt;a href="http://en.wikipedia.org/wiki/Godzone"&gt;God's own country&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-6650132760530313292?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/6650132760530313292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=6650132760530313292' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/6650132760530313292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/6650132760530313292'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/10/happy-diwali.html' title='Happy Diwali!'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-3164641589813352722</id><published>2008-08-29T02:47:00.002-04:00</published><updated>2008-08-29T02:54:25.167-04:00</updated><title type='text'>Sing with me!</title><content type='html'>&lt;a href="http://research.microsoft.com/~simonpj/papers/stm/"&gt;I love software memory transactions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/"&gt;I love lambda closure&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/442/"&gt;I love the whole world!&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cs.ucf.edu/~leavens/Holiday-Songs/Scheme-Song.txt"&gt;and all it's &lt;span style="font-style:italic;"&gt;set!&lt;/span&gt; too.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=at_f98qOGY0"&gt;boom de yada! boom de yada!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-3164641589813352722?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/3164641589813352722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=3164641589813352722' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/3164641589813352722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/3164641589813352722'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/08/i-love-software-memory-transactions-i.html' title='Sing with me!'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-7369587292790951797</id><published>2008-08-16T13:26:00.006-04:00</published><updated>2008-08-16T15:02:59.193-04:00</updated><title type='text'>Watch me walk as I think</title><content type='html'>Attended &lt;a href="http://www.blogcampkerala.com/"&gt;Blogcamp Kerala&lt;/a&gt;.  Met a lot of a fascinating people.  Did an abridged version of the wrist talk, as well as a live demo of &lt;a href="http://shop.ebay.com/items/_W0QQ_nkwZDragonQ20NaturallySpeakingQQ_armrsZ1QQ_fromZR40QQ_mdoZ"&gt;Dragon NaturallySpeaking&lt;/a&gt;.  Came back with a caricature of myself giving a talk.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0174-2-785607.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://gmarceau.nfshost.com/blog/uploaded_images/PICT0174-2-785601.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;People were taking picture of me like I was a tourist attraction. 100 guys, 3 girls and one Guillaume, and everyone is interested in the Guillaume (and the Guillaume is interested in the 3 girls.)&lt;br /&gt;&lt;br /&gt;Spoke of the kinship between Kerala and Québec during the panel on politics.  Trivandrum hosts one general strike a week. Members of the opposition party start the strike by threatening to throw stones at buses that dare bring people to work.  Then the ruling partly declares a strike to complain about the opposition lunching too many strikes.  Québec, on the other hand, boasts the first unionized McDonald's and the first unionized Wal-Mart.  Wal-Mart responded to the unionization by closing the store and the employees sued, since it's illegal in Québec to close a store in retribution.  During my talk I made a bold prediction -- that the employees would win.  When I arrived home, I found out that they did win -- &lt;a href="http://www.financialpost.com/most_popular/story.html?id=726475"&gt;they won yesterday&lt;/a&gt;. (When we play the prediction game on December 31, can I get points for that?)&lt;br /&gt;&lt;br /&gt;By order of the Ministry of Tourism of Kerala, the conference had to be held on a houseboat, and so it was.  We drifted down enlarged Venice canals in what is essentially an enlarged gondola with a roof.  I am quite glad that I came across this relatively mundane occasion to ride the houseboats.  Traditionally, you have to get married.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.blogcampkerala.com/blogcamp-kerala-2008.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://www.blogcampkerala.com/blogcamp-kerala-2008.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-7369587292790951797?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/7369587292790951797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=7369587292790951797' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/7369587292790951797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/7369587292790951797'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/08/watch-me-walk-as-i-think.html' title='Watch me walk as I think'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-5572963326172307133</id><published>2008-08-12T13:00:00.007-04:00</published><updated>2009-05-09T17:15:17.090-04:00</updated><title type='text'>Three days after the LHC's first beam, I started teaching</title><content type='html'>I started teaching on Monday, and I love it.  Love it!  Love it!  Love it!  Academic presentations are like theater. They are clockwork assemblages of tightly wound sentences, each one carefully chosen for maximum information delivery.  Then the talk is rehearsed until sunset on Venus (58 days), and delivered as a spectacle.  Teaching, on the other hand, is like improvisation.  You start with an outline of the main points, then you play it off the audience and, if you manage to raise some interaction, you play along with them.  I never had so much fun on the job since 1999 -- wait, since 2000 -- wait... well, since a long time.&lt;br /&gt;&lt;br /&gt;I am settling into a routine, and it is quite a pleasant one. I train with a 15-year-old roller-skate athlete after work, where I make a big show off my graphing lap-timer in DrScheme. I meet with Kitty in the evening and we pun each other to death over chocolate cake.  Then I share traditional South-Indian dinner with Shailaja, Venkatesh, and their daughters Kini and Mandriva, which usually ends with Venkatesh and I debating on the best way to verify the soundness of the firewall with &lt;a href="http://alloy.mit.edu/community/"&gt;Alloy&lt;/a&gt; while Kini &lt;a href="http://www.youtube.com/watch?v=HqwO87mk9Vk"&gt;dances Bollywood&lt;/a&gt; around everyone.&lt;br /&gt;&lt;br /&gt;This routine is about to get extended.  I visited Kovallam this weekend.  There, I played beach-soccer with six refugees from Tibet who are also members of Kerala's team at the nationals.  That was a remarkable event on its own.  But the high of the day was the discovery of a honest-to-goodness espresso.  Which, of course, means I will go back. I don't remember how I passed my Advanced Complexity Theory course anymore.  I seem to have left my proof-making-ability somewhere.  So, with the help of Venkatesh, I am trying to get better at mathematics.  Finding a source of good coffee was my first step towards better math.  (cf. &lt;a href="http://en.wikipedia.org/wiki/Mathematician#Quotations_about_or_by_mathematicians"&gt;Paul Erdos&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-5572963326172307133?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/5572963326172307133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=5572963326172307133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5572963326172307133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5572963326172307133'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/08/three-days-after-lhcs-first-beam-i.html' title='Three days after the &lt;a href=&quot;http://symmetrymagazine.decenturl.com/lhc&quot;&gt;LHC&lt;/a&gt;&apos;s first beam, I started teaching'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-6808345684495733804</id><published>2008-07-11T01:41:00.004-04:00</published><updated>2008-07-11T10:13:48.405-04:00</updated><title type='text'>Wisdom of the locals</title><content type='html'>&lt;span style="font-weight: bold;"&gt;me:&lt;/span&gt; I want to drive around and see the temples&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;riju:&lt;/span&gt; In order to drive in India you need three things: good horn, good breaks, good luck&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;me:&lt;/span&gt; I have just received my water bill.  It is written entirely in Malayalam.  How do I pay it?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;venkatesh:&lt;/span&gt; It is a complicated procedure&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;kitty:&lt;/span&gt; I wanted to be a psychologist, but mom said no&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;me:&lt;/span&gt; You should've said lawyer&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;kitty:&lt;/span&gt; I did, but mom said no&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;me:&lt;/span&gt; Or something else rich and glamorous, like hotel management&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;kitty:&lt;/span&gt; Mom said no&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;me:&lt;/span&gt; What did she agree to?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;kitty:&lt;/span&gt; Accounting&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;me:&lt;/span&gt; The bad pop music of the 80s and early 90s made waves here, but it was not nearly the traumatic event that it was in America. Yesterday I asked the restaurant to stop playing the Michael Jackson and C&amp;amp;C Music Factory mixtape whenever I came for dinner.  They couldn't see how much it was tickling my PTSD.  Bad pop music was such a powerful cultural phenomena in America, it wiped off entire sentences from the English language.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;colleague:&lt;/span&gt; Interesting&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;me:&lt;/span&gt; By the way, the network is down&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;colleague:&lt;/span&gt; If there was a problem I'll solve it&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-6808345684495733804?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/6808345684495733804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=6808345684495733804' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/6808345684495733804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/6808345684495733804'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/07/wisdom-of-locals.html' title='Wisdom of the locals'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-3662681523695458020</id><published>2008-07-06T17:06:00.003-04:00</published><updated>2008-07-06T17:20:49.889-04:00</updated><title type='text'>Doctor, it hurts when I do this</title><content type='html'>March 1, 2004 was a sunny winter day in Providence.  I was hard at work at home, crouched over my laptop.  Earlier, my advisor and I had made a decision.  I would abandon my current project and develop an unrelated idea, one that I had just sketched out on his office white board.  The idea was good.  It would become my master's thesis and an award-winning paper in a respected academic journal.  It was also small and self-contained, which made the switch possible at all, this late in the program, a mere three months before the deadline for submission.  It was a daring, almost reckless switch.  It set me up in a race against the train to the crossing.  I agreed with the new plan because, frankly, I love trainrunning.&lt;br /&gt;&lt;br /&gt;The week prior to the sunny winter day in question, my wrists had been bothering me more than usual, though I took only passing notice of it.  Mostly, I spent my time two miles deep into focus, coding, oblivious to the real world.  But that afternoon, the pain finally grew beyond my ability to ignore it. I stood up, tried to make step but I was overwhelmed by the  pain -- it sapped my balance and I kneeled on the floor, holding my injured arm with my merely-bad one.&lt;br /&gt;&lt;br /&gt;That was the last time I programmed with my own hands.  In the intervening four years, I have designed three large programs and directed the teams set up to construct them, but any lines of code I wrote I wrote as the copilot of a coding pair. My hands refuse any contact with a keyboard with the virulence of an immune system response.  If I try to type, the pain creeps up and stops me before I have accomplished much.  So long as I keep away from keyboards, I am mostly fine, and my condition has improved with time. I enjoy the occasional day without symptoms, and I rarely need to fetch my electrotherapy machine anymore.  In comparison, there was a time when I spent entire days under ice, begging for forgiveness.  I'm glad that's over.&lt;br /&gt;&lt;br /&gt;I saw a doctor within a week of my injury.  He gave me injections of cortisone and sent me home without two crucial pieces of advice (1. Don't type through the pain. 2. So long as the medicine is active, your tendons are as weak as al dente pasta.) The doctor I saw before him, in 2003, gave me a brace and sent me back to work.  In 2002, I tried to consult with the company's ergonomist, but the waiting list turned out to be longer than my internship.  In fact, the onset of my tendinitis can be traced back as early as January 2001, when I complained to my family doctor about occasional wrist pain.  He reassured me that I was not showing the symptoms of carpal tunnel syndrome, and wished me luck for my new life in the United States.&lt;br /&gt;&lt;br /&gt;My story is shockingly common.  In the period between 2002 and 2006, each year one of my colleagues would develop a serious disability due to keyboard usage.  Behind them, there was a long tail of programmers with various amount of wrist pain.  Recently, I had the chance to stand on stage and ask a room of programmers for a show of hands, who had wrist pain? Nearly everyone did.  This is not okay.  It makes computer science by far the most dangerous department to work for.  Physicists in rapid explosion labs do not injure themselves nearly as often as we do.  Biologists in level 5 labs working with revived strains of dangerous viruses do not injure themselves as often as we do.   They are careful.  Why can't we?&lt;br /&gt;&lt;br /&gt;Something about  RSI makes it fall through the cracks of the Western system of medicine.  The efforts necessary to prevent RSI do not seem to fit in the 15 minute window that compose an appointment with a generalist doctor. To compensate, sometime in 2005 my colleagues Jenine, Liz and myself coalesced into an ad hoc RSI prevention team.  Together, we taught the physiology of the wrist and the rules of ergonomy as a compulsory lecture to the incoming students. Throughout the year, we continued the teaching, one-on-one. We invited ergonomy experts, made ice packs available, and put together a lending library of ergonomic keyboards.  It made a difference, and I have hope that the habits the community learned during that time will persist, since we also taught the students to teach each other.&lt;br /&gt;&lt;br /&gt;I have gathered these lessons into a single article. Then I translated it so I had a French and English version.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://gmarceau.qc.ca/articles/your-wrists-hurt-you-must-be-a-programmer.html"&gt;Your wrists hurt, you must be a programmer&lt;br /&gt;Vos poignets font mal? Vous êtes programmeur, donc?&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If your wrists hurt and you want to prevent them from creeping further after you, read ahead.  If your wrists are fine, read as well, so you can help the programmer in your life whose wrists are probably hurting in silence.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Playing for the crowd&lt;/h3&gt;&lt;br /&gt;Yesterday I met Vincent, the gym teacher of a local high school.  The school is built as two floors of mezzanines surrounding a central badminton court.  We entered the school grounds during recess.  Here, like in any schools, whenever a stranger intrudes in the daily routine, it is an event.  There I was, a stranger, strange and a foreigner no less.  Within seconds, I had two floors worth of high schoolers around me, their eyes following my steps.   I have never felt such power over a crowd.  At that moment and I could have yelled «cricket sucks!» and generated a riot. I choose instead to wave enthusiastically, and the whole crowd waved back ecstatically. Trust high schoolers amplify emotions; you can't beat that kind of energy.&lt;br /&gt;&lt;br /&gt;Vincent and I set up a badminton game on the outside court, and I proceeded to attempt to beat the entire school. This was my first badminton game since my injury forced me to stop playing.  My goodness, this sport is as much fun as ever. But more importantly, this match means that I am healing, bit by bit, year by year.  And perhaps one day day I will be able to play at coding again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-3662681523695458020?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/3662681523695458020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=3662681523695458020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/3662681523695458020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/3662681523695458020'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/07/doctor-it-hurts-when-i-do-this.html' title='Doctor, it hurts when I do this'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-9007764394061161491</id><published>2008-06-29T12:44:00.006-04:00</published><updated>2008-06-29T22:41:47.503-04:00</updated><title type='text'>Look to the right</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.nfshost.com/blog/uploaded_images/PICT1523-789912.JPG"&gt;&lt;img style="margin: 0pt 20pt 20px 20px; float: right; cursor: pointer;" src="http://gmarceau.nfshost.com/blog/uploaded_images/PICT1523-789398.JPG" alt="" border="0" /&gt;&lt;/a&gt;This, is a tuk-tuk.&lt;br /&gt;&lt;br /&gt;It is a three wheeled contraption that fits three persons conformably (counting the driver), four if they squeeze, and 10 if they are Indian. Tuk-tuks are made of single layers of sheet metal, yellow fabric, and Krishna stickers.  Also known as autorickshaws, they are the modern art of transportation: minimal and effective.  In comparison, Western cars look like a government payout to the steel industry.  They are all so big on the outside and yet so small on the inside.  In that sense, mainstream cars are reverse-&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.bbc.co.uk/doctorwho/characters/tardis.shtml"&gt;TARDIS&lt;/a&gt;&lt;/span&gt;es. I prefer the simple three-layered construction of the rickshaws: humans on seats on wheels (The frame is only there to hold the stickers.)  There is so little space dedicated to non-human-body elements, they depend on the unfortunate miracle of the two-stroke engine to make them go.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gmarceau.nfshost.com/blog/uploaded_images/dirty-trafic-741030.jpg"&gt;&lt;img style="margin: 0pt 20pt 20px 20px; float: left; cursor: pointer;" src="http://gmarceau.nfshost.com/blog/uploaded_images/dirty-trafic-740655.jpg" alt="" border="0" /&gt;&lt;/a&gt;Which means, of course, that they pollute like the &lt;a href="http://en.wikipedia.org/wiki/Flatulence#Environmental_impact"&gt;farting of a sacred cow&lt;/a&gt; confined to a small bedroom.  Bangalore is a parade of out-of-tune 2-strokers running off of salvaged lubricant.  There is a real business opportunity in opening a shop that would pacify the exhaust of tuk-tuks for free, then sell the resulting carbon offsets on the market.&lt;br /&gt;&lt;br /&gt;Until someone figures out how to build a small electric engine out of the recycled parts of a 2-strokes engine, India is stuck with this &lt;span style="font-size:85%;"&gt;&lt;a href="http://www.cs.brown.edu/%7Esk/Publications/Talks/SwineBeforePerl/"&gt;ugly, evil, insidious device hatched by misbegotten&lt;/a&gt;&lt;/span&gt; Communists.&lt;br /&gt;&lt;br /&gt;Rather, the future rests with hip, cool, great ideas, such as the Topia HUVO.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://techon.nikkeibp.co.jp/english/NEWS_EN/20080627/154014/"&gt;&lt;img style="margin: 0pt 20pt 20px 20px; cursor: pointer; width: 320px;" src="http://techon.nikkeibp.co.jp/english/NEWS_EN/20080627/154014/thumb_230_3A.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Wish us luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-9007764394061161491?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/9007764394061161491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=9007764394061161491' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/9007764394061161491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/9007764394061161491'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/06/this-is-tuk-tuk.html' title='Look to the right'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-7955323292997489832</id><published>2008-06-24T11:11:00.003-04:00</published><updated>2008-06-24T11:11:00.121-04:00</updated><title type='text'>Monsoon failure</title><content type='html'>It hasn't rained for more than a week.  The rain in the two weeks before that was tentative.  If you roll back yet another week, we were celebrating the arrival of the monsoon, in the newspapers and in the weather forecast.  Well, it's not here.  Where is it?&lt;br /&gt;&lt;br /&gt;Before I left, and while I was traveling in the North, the advice on everyone's lips was to brace myself for the monsoon.  So I came with a large umbrella, a trenchcoat, and dependable boots.  I was prepared to open my mind and absorb the true structure of Kerala's culture, as it expressed itself under the torrential waters.  I looked for a copy of Chasing the Monsoon by Frater, and when I found one in the library across town, whose policy is to not lend to foreigners, I imagined myself walking daily to their reading room where I would read about the meteorological phenomena that had drenched me on the way.  But I remain dry.  The only water on my shoulders is my perspiration.&lt;br /&gt;&lt;br /&gt;Because without the monsoon, the humidity hangs in the air.  The mercury may be still stuck to 31°C -- you truly do not need a thermometer in Trivandrum -- but the humidity-weighted temperature has taken off.  The mathematicians say we feel the equivalent of 40°C in this 85% water/air mix.  When I walk into the yuppie coffee shop, which is one rare building with full-on AC, my glasses fog like it's winter in Montréal.  I stopped ordering sundaes at the ice cream parlor. I ask for family buckets now, chocolate flavored, with a spoon.&lt;br /&gt;&lt;br /&gt;So, three weeks after opening the subject, the newspaper are talking about the monsoon again.  If the rain doesn't come now, the crops will fail.  People are getting worried.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-7955323292997489832?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/7955323292997489832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=7955323292997489832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/7955323292997489832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/7955323292997489832'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/06/monsoon-failure.html' title='Monsoon failure'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1594097932719209060.post-5334446731303353155</id><published>2008-06-23T12:29:00.002-04:00</published><updated>2008-06-23T13:15:57.100-04:00</updated><title type='text'>This type system is a joke</title><content type='html'>In the rigid composition style of academic papers, there are little tiny cracks where one can insert bits of humor and editorial opinion, as exemplified by the following sentence from a paper on Java's type system.  &lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Unlike the GJ compiler, which rejects an expression containing stupid casts as ill-typed, FGJ indicate the special nature of stupid casts by including the hypothesis "stupid warning" into typing rules for stupid casts. See [10] for detailed discussions on the rules for typecasts.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;  -- Atsushi Agarashi, Benjamin C. Pierce, Philip Wadler, in "A Recipe for Raw Types" (which, as it happens, also defines "cooked" types.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1594097932719209060-5334446731303353155?l=gmarceau.qc.ca%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/5334446731303353155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1594097932719209060&amp;postID=5334446731303353155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5334446731303353155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1594097932719209060/posts/default/5334446731303353155'/><link rel='alternate' type='text/html' href='http://gmarceau.qc.ca/blog/2008/06/this-type-system-is-joke.html' title='This type system is a joke'/><author><name>Guillaume Marceau</name><uri>http://www.blogger.com/profile/00722827827627546541</uri><email>gmarceau@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08089673188802131169'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>