Playing Tenuki http://typo.cdlm.fasmz.org/ en-us 40 手抜き — the art of computer procrastination Back online! <p>This summer I moved to Lugano for a new position at <a href="http://www.inf.unisi.ch/">USI</a>.</p> <p>Sadly this implied that I had to let go of the 28Mbit fixed IP DSL from <a href="http://free.fr/">Free.fr</a> to a <em>wonderful</em> 4MBit, dynamic IP, same price. So this weekend I had some fun coaxing Apache into proxying the websites from my dyndns.org address.</p> <p>Anyway, I&#8217;ll keep it short, as I&#8217;ve also been hacking <a href="http://www.lukas-renggli.ch/smalltalk/pier">Pier</a> and <a href="http://www.seaside.st">Seaside</a> to replace the current <a href="http://typosphere.org/">Typo</a> running on <a href="http://rubyonrails.org/">Rails</a>. You got to eat your own food, especially when it <a href="http://www.cincomsmalltalk.com/blog/blogView?entry=3372921925">tastes better</a> :-)</p> Sun, 25 Nov 2007 16:54:00 +0100 urn:uuid:6646545d-b542-4163-8907-2607b3329781 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/11/25/back-online Housekeeping Contradiction <p>&#8230;between <a href="http://www.lastfm.fr/music/Buckethead/_/Loss+From+A+Distance">painful title and tender music</a>.</p> Fri, 03 Aug 2007 03:56:01 +0200 urn:uuid:0170ab60-1365-4c9c-a428-6f5670b54853 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/08/03/contradiction Music buckethead More on Smalltalk <p>As a follow-up on my <a href="/articles/2006/11/24/on-smalltalk">previous post on Smalltalk blogs</a>, <a href="http://blogs.corriga.net/giovanni/">Giovanni</a> blogs on <a href="http://www.squeak.org">Squeak</a> and <a href="http://www.seaside.st">Seaside</a>, and recently <a href="http://blogs.corriga.net/giovanni/archives/tags/international">started to write posts in English</a>.</p> Sun, 01 Jul 2007 16:58:29 +0200 urn:uuid:063924c3-aa6d-4a3a-aa3b-f70669fcdc83 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/07/01/more-on-smalltalk Link blog smalltalk Politics and the game of Go <p><a href="http://www.agoravox.fr">Agoravox</a>, a french &laquo; citizen journalism &raquo; initiative, published a seriously fun article showing the <a href="http://www.agoravox.fr/article.php3?id_article=23324">analogy between the french elections and the game of Go</a> (in French, <a href="http://google.com/translate?u=http%3A%2F%2Fwww.agoravox.fr%2Farticle.php3%3Fid_article%3D23324&amp;langpair=fr%7Cen&amp;hl=en&amp;ie=UTF8">sorry</a>).</p> <p>The analogy could probably work for any field where strategy and tactics come into play, and it&#8217;s rather funny to see it map so well to the recent events. However, it breaks at one point&#8230; at the end of a game of Go, the game result doesn&#8217;t matter so much because both players have played a nice game, and won experience and respect.</p> <p>In our case, let&#8217;s hope the <em><a href="http://senseis.xmp.net/?chuban">chuban</a></em> was actually good and the <em><a href="http://senseis.xmp.net/?Yose">yose</a></em> turns towards the public interest&#8230;</p> Fri, 04 May 2007 21:13:12 +0200 urn:uuid:3d3c88cc-6e7c-42c8-96c6-58060903d240 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/05/04/politics-and-the-game-of-go Link politics fun Chicken chicken <p align="center"> <object width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/yL_-1d9OSdk"></param> <param name="wmode" value="transparent"></param> <embed src="http://www.youtube.com/v/yL_-1d9OSdk" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed> </object> </p> <p>From <a href="http://www.presentationzen.com/presentationzen/2007/04/powerpoint_some.html">Presentation Zen</a>.</p> Sun, 29 Apr 2007 19:14:32 +0200 urn:uuid:8b9c1942-5b92-4b59-b316-b002504e1ad8 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/04/29/chicken-chicken Link presentation fun Greeting IPv6 users with Lighttpd <p>Last weekend I configured my web server to accept <a href="http://en.wikipedia.org/wiki/Ipv6">IPv6</a> connections (and since <a href="http://ipv6pourtous.free.fr/rani/">my provider ignores IPv6</a>, I&#8217;m using a <a href="http://fr.wikipedia.org/wiki/6to4">6to4 tunnel</a> from <a href="https://tb.ipv6.btexact.com">BTexact</a>).</p> <p>To celebrate my <a href="http://www.spectrum.ieee.org/jun06/comments/1438">small patch</a> of adressing space, I added the banner you can see at the top-left of the page. It should be red if you come from IPv4 land and green if my tunnel is up, my config actually works, and you are really in IPv6 (not using an <code>::ffff:a.b.c.d</code> IP).</p> <p>So I&#8217;m coming to my first point, which is how to tell <a href="http://lighttpd.net">Lighttpd</a> to differenciate clients and keep the config files modular.</p> <p>Resarch(ish) discussion after the jump.</p><h3>Configuring Lighttpd</h3> <p>The goal is to have content under <code>http://domain/ipvX/...</code> be served from a directory or the other on disk, depending on the type of connection.</p> <p>At first, my idea was to use a <code>$SERVER["socket"]</code> conditional:</p> <pre><code>$SERVER["socket"] == "0.0.0.0:80" { # on all v4 connections... alias.url += ("/ipvX/" =&gt; "/var/www/ipv4/") } else $SERVER["socket"] "2001:...my IPv6..." { alias.url += ("/ipvX/" =&gt; "/var/www/ipv6/") } </code></pre> <p>This doesn&#8217;t work for several reasons:</p> <ul> <li>on Linux, when Lighttpd listens on IPv6, it will get v4 addresses as their v6 representation (<code>::ffff:a.b.c.d</code>).</li> <li>more importantly, to Lighttpd, this syntax <a href="http://trac.lighttpd.net/trac/wiki/Docs%3AConfiguration#conditional-configuration">means</a> &#8220;please listen on a <em>newly created</em> socket for this spec&#8221;. More on this one below.</li> </ul> <p>OK, so I tried several variations and in the end the one that works is:</p> <pre><code>$HTTP["remoteip"] =~ "^::ffff:" { alias.url += ( "/ipvX/" =&gt; "/var/www/ipv4/" ) } else $HTTP["remoteip"] != "" { alias.url += ( "/ipvX/" =&gt; "/var/www/ipv6/" ) } </code></pre> <p>In both cases this appends a rule to the configuration variable for <code>mod_alias</code>. This worked in all but one virtual host, precisely the one that I have <a href="http://awstats.sourceforge.net">AWStats</a> running in, and that adds more alias rules. I had to move AWStats&#8217; aliases outside the vhost configuration to make them work again. Not a real problem since the aliases are to global static image files in <code>/usr/share/awstats</code>.</p> <p>In the process, it was really helpful to invoke <code>lighttpd -tp -f lighttpd.conf 2&gt;&amp;1 | less</code> and #lighttpd on <a href="http://freenode.org">irc.freenode.org</a>.</p> <h3>The impact of syntax in domain-specific languages</h3> <p>Taking a few steps back&#8230;</p> <p><strong>Intuitive meaning, or the meaning of <em>intuitive</em>?</strong> I like to repeat that in the context of user interfaces, &#8220;ergonomic&#8221; and &#8220;intuitive&#8221; both actually mean &#8220;familiar&#8221;. <a href="http://jef.raskincenter.org/home/index.html">Jef Raskin</a> <a href="http://jef.raskincenter.org/humane_interface/thi_big.html">explained</a> this better than I can here. I see syntaxes just as textual, non interactive user interfaces and, reversely, user interfaces as languages: base elements and rules for how to combine them in order to convey meaning or <a href="http://en.wikipedia.org/wiki/Affordance">affordances</a>.</p> <p>Let&#8217;s go back to lighty&#8217;s config. It&#8217;s some kind of decision tree: it defines scopes in which requests get sorted according to their properties. Lighty then handles each request, depending on the values of configuration variables in the scope the request falls in; <code>lighttpd -tp</code> basically shows these nested scopes. Maybe I&#8217;m wrong but that&#8217;s how I understand things.</p> <p>This decision tree and how it is used to handle requests is the semantics of lighty&#8217;s config. The config itself is written down using a particular syntax in <code>/etc/lighttpd.conf</code>. My problem here is the impedance mismatch between what the syntax conveys, and the actual semantics that are attached to it. For instance, the <code>$HTTP["remoteip"] == "1.2.3.4"</code> conditional defines a scope where all requests from address 1.2.3.4 will fall. You can use other comparison operators like regular expression matching <code>=~</code> or negated versions <code>!=</code> and <code>!~</code>. The address operand has special meaning in some cases, like <code>"0.0.0.0"</code> that means &#8220;any address&#8221;. All this makes sense in the context, but <code>$SERVER["socket"]</code> is different: it has the additional meaning that it will create the socket to listen for these connections, so successive uses can fail.</p> <pre><code>$SERVER["socket"] == "0.0.0.0:80" { # listen on all interfaces, port 80 } $SERVER["socket"] == "1.2.3.4" { # could match requests adressed to this specific IP, # but fails because it tries to create a socket # that conflicts with the previous one } </code></pre> <p>One comparison syntax, different meaning ?</p> <p>On a pickier point of view, the syntax of conditionals in lighttpd looks familiar, related to other languages. For instance, <code>$HTTP["remoteip"]</code> would parse in Ruby as an access to a global dictionary (most probably class Hash), where the key is a string. In Ruby, the dollar, square brackets, and double quotes all have meaning: global, hash access, string. In the case of lighttpd however, what use is there for <code>$</code>? What is the point of requiring quotes, since <code>remoteip</code> actually is a keyword, known a priori in the syntax, in contrast to a user-provided value? Many languages even don&#8217;t require special markup for user-provided values, like atoms in Erlang, Prolog or Lisp.</p> <p>As a conclusion, there is a lot of passion these days around model engineering and domain-specific languages, on one side trying to manipulate and formalize concepts from different domains, but often just providing a variant of UML to represent them, and on the other side taking a more concrete approach of defining specialized languages, syntaxes, and tools. I think I&#8217;d like to see some reflection on what makes a syntax &#8211;textual or graphical, interactive or not&#8211; efficient at conveying the intended meaning. What is the importance of having unambiguous token classes? What can composition, adjunction, order be used for, etc. Maybe something like this already exists in non-computer linguistics?</p> <p><strong>Update, must read:</strong> <a href="http://weblog.raganwald.com/2007/04/writing-programs-for-people-to-read.html">Writing programs for people to read</a>.</p> <p>PS. On a not so unrelated note, Lucas is having <a href="http://www.lucas-nussbaum.net/blog/?p=238">fun with Bash</a>.</p> Wed, 25 Apr 2007 02:55:12 +0200 urn:uuid:476c570a-6524-48c1-b8eb-006f08aba7f5 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/04/25/greeting-ipv6-users-with-lighttpd Housekeeping Research ipv6 lighttpd dsl Collaborative development <p>Panic and TheCodingMonkeys just announced <a href="http://www.panic.com/coda/">Coda</a> and the <a href="http://www.codingmonkeys.de/subethaengine/">Subetha engine</a>.</p> <blockquote> <p>We are proud that this kind of collaboration now crosses application borders to the benefit of all Coda and SubEthaEdit users.</p> </blockquote> <p>Great. I just find it a little funny that the infrastructure of these collaborative tools is developed in a non-collaborative way&#8230;</p> <p>Thankfully we have <a href="http://gobby.0x539.de/trac/">Gobby</a>, an open-source equivalent to Subetha that has been crossing <a href="http://gobby.0x539.de/trac/wiki/Screenshots">platform</a> and even <a href="http://www.mail-archive.com/obby-users@list.0x539.de/msg00143.html">implementation</a> borders <a href="http://typo.cdlm.fasmz.org/articles/2005/09/27/gobby-collaborative-editing-for-gnome">for some time now</a>.</p> Tue, 24 Apr 2007 00:39:56 +0200 urn:uuid:d041fa25-984e-41f8-ba3c-145eb6eb1f08 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/04/24/collaborative-development Link rant opensource iTunes goes DRM-free! <p>As <a href="boingboing">reported by Boing Boing&#8217;s Cory Doctorow</a>, Apple announced today that the iTunes music store would soon offer high-quality, <em>DRM-free</em> tunes and videos, starting with the <a href="http://www.emigroup.com/Press/2007/press18.htm">EMI</a> catalog. That&#8217;s really great news!</p> <p>From the PR point of view, I now wonder what <a href="jobs">Steve Jobs&#8217; thoughts on music post</a> was really&#8230; stating his opinion in public to push the majors, or more a kind of early announce to prepare our minds?</p> Mon, 02 Apr 2007 21:19:28 +0200 urn:uuid:14f0d536-aede-4157-a527-5971c7da4ac8 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/04/02/itunes-goes-drm-free Music praise drm Wasting paper <p>Today I sent my applications for assistant professor positions in the french academic system. Well, that was fun.</p> <p>Rant and photos after the jump.</p><p>To be an assistant professor (<em>ma&icirc;tre de conf&eacute;rences</em>) in France, you first have to be <em>qualified</em>. Basically that means writing an extended r&eacute;sum&eacute; and use it to persuade two reviewers that you are worthy of applying. Because then you are only qualified, and you must apply in the next 4 years because qualification is a perishable goods.</p> <p>So qualified people are allowed to apply. Which means: sending nearly the same extended r&eacute;sum&eacute; to positions you could fit in. Because it&#8217;s a national thing, all positions are announced at the same time and the applications are due with a common deadline one month later, but the precise descriptions are distributed over the hiring labs and schools. And because the final hiring decisions are highly unpredictable, all candidates apply nearly everywhere they can.</p> <p>I applied for 16 positions, and in computer science this is the (lazyish) mean. By the way, you have to send 3&nbsp;copies of the r&eacute;sum&eacute; for each position, even if they are in the same lab. Yes, that means 16&times;3&times;40&nbsp;= more than 1900&nbsp;pages and 64&nbsp;envelopes&#8230;</p> <p><img src="/files/application-materials_500.jpg" height="375" width="500" alt="Application materials" title="Application materials" align="center" /></p> <p><img src="/files/ready-height_500.jpg" height="375" width="500" alt="Ready to send" title="Ready to send" align="center" /></p> <p>In the end, I don&#8217;t know how common sense can be pushed into the system &#8230; Thankfully there are really <a href="http://postes.smai.emath.fr/">useful</a> <a href="http://guilde.jeunes-chercheurs.org/">initiatives</a> by graduate students and just-hired doctors but they are more like workarounds rather than actual fixes.</p> <p><strong>Update:</strong> I just prepared two more applications so the page count is now more that 2100&nbsp;pages (so just over two 500-sheet reams).</p> <p><strong>Update, april 24:</strong> Not stopping, are we? I just sent one more application&#8230;</p> Fri, 30 Mar 2007 00:12:00 +0200 urn:uuid:9c24ef2a-b46c-4364-8d14-3edaae41317d Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/03/30/wasting-paper Research rant Actiontastic will be free and open source <p><p><img src="/files/actiontastic.png" border="0" height="128" width="128" alt="Actiontastic icon" class="inset" /> <a href="http://www.kaboomerang.com/blog/category/actiontastic/">Actiontastic</a> is a cool <a href="http://www.davidco.com/what_is_gtd.php">GTD</a> application by Jon Crosby. Until now we were teased by expiring beta releases, but Jon decided to open-source it!</p> <blockquote> <p>Opening up this project for community participation is the best possible thing that I can think of doing for its future. Great things are on the horizon for that sweet intersection of the web and the desktop. I would rather discuss them openly and collaborate with other like-minded people than hide any of the details just to make another $29 shareware sale. I am not opposed to the idea of shareware in general and have purchased quite a bit of it myself over the past year. It&rsquo;s just that shareware isn&rsquo;t the right path for Actiontastic.</p> </blockquote> <p>I really like this approach of free, tweakable, open-source software, associated with a paying hosted service (like <a href="http://actionatr.com">Actionatr</a>) for those who want all the benefits without bothering themselves with maintaining infrastructure.</p> Mon, 19 Mar 2007 17:09:45 +0100 urn:uuid:8dad4631-f10e-4d97-ab87-284ec3681469 Damien Pollet http://typo.cdlm.fasmz.org/articles/2007/03/19/actiontastic-will-be-free-and-open-source Link gtd libre