<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for crhodes</title>
    <link>http://www.advogato.org/person/crhodes/</link>
    <description>Advogato blog for crhodes</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Fri, 10 Feb 2012 17:48:08 GMT</pubDate>
    <item>
      <pubDate>Tue, 8 Nov 2011 11:45:42 GMT</pubDate>
      <title>8 Nov 2011</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=155</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=155</guid>
      <description>  As I said in my last entry, I was in Amsterdam for &lt;a href="http://weitz.de/eclm2011/" &gt;ECLM 2011&lt;/a&gt;, once again smoothly   organized by Edi Weitz and Arthur Lemmens, but this time under the   aegis of the &lt;a href="http://www.cl-foundation.org/" &gt;Stichting   Common Lisp Foundation&lt;/a&gt; (of which more a bit later).  After   leaving the &lt;a href="http://www.cafedejaren.nl/" &gt;comfortable   caf&#xE9;&lt;/a&gt;, where Luke and Tobias (along with a backpack's worth of   computing equipment on its way to visit St Petersburg) eventually   turned up, it was time to go for the Saturday evening dinner, held   at &lt;a href="http://www.brasserieharkema.nl/" &gt;Brasserie Harkema&lt;/a&gt;.   In the olden days, when I had time to do a certain amount of   public-facing Lisp development, I got used to receiving the   adulation of a grateful public &amp;ndash; this time, at the dinner, I   happened to sit next to someone called Lars from &lt;a href="http://www.netfonds.no/" &gt;Netfonds&lt;/a&gt;.  &#x201C;Hmm,&#x201D; said something   at the back of my mind, &#x201D;that rings a bell.&#x201D;  Lars who?  Lars &lt;a href="http://www.gmane.org/" &gt;Magne&lt;/a&gt; &lt;a href="http://www.gnus.org/" &gt;Ingebrigtsen&lt;/a&gt;.  My inner fanboy went   a bit squeee &amp;ndash; even to the point of explaining what gmane was   to a third party in his presence.  Still, it was nice to be able to   say a heartfelt &#x201C;thank you&#x201D; in person to someone whose software has   saved me time and &lt;a href="http://ww.telent.net/2003/1/14/_updated_for_elisp_syntax_error_13_01_52_gmt" &gt;a   certain amount of embarrassment&lt;/a&gt;.  Other topics of conversation   at the dinner included a discussion with R. Matthew Emerson (of &lt;a href="http://www.clozure.com/" &gt;Clozure&lt;/a&gt;) about the social aspects   of Free Lisp development, a topic on which &lt;a href="http://www.doc.gold.ac.uk/~mas01cr/papers/s32008/sbcl.pdf" &gt;I   have written before&lt;/a&gt;; contrasting the attitudes and experiences   of contributors and users (small and large) of &lt;a href="http://openmcl.clozure.com/" &gt;Clozure CL&lt;/a&gt; and &lt;a href="http://www.sbcl.org/" &gt;SBCL&lt;/a&gt; was interesting.  It was also   nice to be able to talk about Lisp-based music analysis, synthesis   and generation programs; reminding myself that I do still know about   that landscape enough to fill people in.&lt;br/&gt;
&lt;br/&gt;
  The meeting itself, as others have observed over the years, is only   partly about the talks: a substantial part of the goodness is in the   chats over coffee and lunch.  Edi and I reminisced about meeting in   the venue, &lt;a href="http://www.hotelarena.nl/" &gt;Hotel Arena&lt;/a&gt;, at a   precursor to ECLM (in autumn 2004, I think... I certainly remember   being approximately penniless, just after starting my first job);   other people present then (as well as Arthur) included Nick Levine,   Luke Gorrie, Peter van Eynde, Jim Newton, Pascal Costanza, Marc   Battyani, Nicholas Neuss... many of whom were around for the   rematch; a total of 95 people registered for the meeting, and the   hall (part disco, part church) for the talks felt pleasantly full. &lt;br/&gt;
&lt;br/&gt;
  Of the talks, I was most interested in the material of Jack Harper's   talk, concerning some of the constraints involved in building a   product for (human) fingerprinting, and asserting that using Lisp in   this product was not a problem.  (Favourite quote: &#x201C;batteries are   complicated things&#x201D;).  I was a little bit disappointed that few of   the speakers actually interacted with any code at all (Luke may   claim that writing his slides in Squeak Smalltalk counts, but I beg   to differ); in fact, Paul Miller of Xanalys was the only one of the   speakers spending substantial time demonstrating anything related to   the subject of the talk &amp;ndash; and that only because the canned   demo movie refused to display on the projector.  Luke's talk   appeared to go down well; the obvious first question came and went,   and there were some more interesting questions from the floor.  Star   of the show was Zach Beane's talk about &lt;a href="http://www.quicklisp.org/" &gt;quicklisp&lt;/a&gt;; I spend a lot of   time presenting or watching presentations in each of my capacities,   and it's nice to have a refreshingly different (and deadpan)   delivery, with good use of slides to complement the spoken content.   I hope that he's right that his personal scalability will not be   taxed, and that volunteers will find ways to assist in the project   by taking ownership of particular tasks.&lt;br/&gt;
&lt;br/&gt;
  While Hans H&#xFC;bner may have attempted to be controversial in his   opinion slot about style guides for CL, the real controversy for me   was Dave Cooper's announcement of the Stichting Common Lisp   Foundation.  Now, the Foundation has clearly done one thing that is   helpful: provided legal and financial infrastructure so that the   financial risk of hosting an ECLM is not borne entirely by two   individuals; the corporate entity can potentially, after acquiring a   buffer, provide the seed funding needed and, if necessary, absorb   small ECLM losses (not that I believe there has been one, but   hypothetically) through other fund-raising activities.  On the other   hand, when I asked the question as to how the Stichting CL   Foundation would aim to distinguish itself from the ALU, the   response from Dave Cooper was that the only difference would be that   the foundation would focus on CL, where the ALU's remit extends to   all members of the Lisp family.  Such a narrowing of focus is, I   think, potentially beneficial &amp;ndash; indeed, when going through my   email archives to look for the date of the 2004 meeting, I found a   lucid rationale from &lt;a href="http://ww.telent.net/" &gt;Dan Barlow&lt;/a&gt;   explaining that he had chosen to make CLiki's focus specifically   DFSG-free Unix Lisp software in order to promote a sense of cohesion   (rather than being motivated primarily by a strongly-held belief   about the inherent superiority of DFSG-licensed software).  But I   don't think that the ALU's only weakness is that it spreads its Lisp   net too wide: I think it has lost track of what it as an entity   wants to do beyond perform a similar function for the ILC as   Stichting has performed for the ECLM; Nick Levine, in his talk about   how to find Lisp resources, observed that the ALU has a valuable   piece of real estate &amp;ndash; the &lt;code&gt;lisp.org&lt;/code&gt; domain   &amp;ndash; which does not seem to be used to grow or meet the needs of   the Lisp community, whether Common Lisp specifically or Lisp more   generally.  I found it a little sad that, Edi and Arthur aside, the   overlap between the ALU board and Stichting CL Foundation directors   is 100%.&lt;br/&gt;
&lt;br/&gt;
  After the longer talks came the lighting ones, and I took the   opportunity to repeat my talk and demo about &lt;a href="http://common-lisp.net/~crhodes/swankr/" &gt;swankr&lt;/a&gt;, my   implementation of the SLIME backend for &lt;a href="http://www.r-project.org/" &gt;R&lt;/a&gt;, from the &lt;a href="http://www.european-lisp-symposium.org/editions/2011/" &gt;European   Lisp Symposium&lt;/a&gt; in April.  Erik Huelsmann announced &lt;a href="http://common-lisp.net/project/armedbear/" &gt;ABCL&lt;/a&gt; 1.0, a far   better milestone to announce at the ECLM rather than my sneaky   announcement of &lt;a href="http://www.doc.gold.ac.uk/~mas01cr/talks/2005-04-24%20Amsterdam/presentation.pdf" &gt;SBCL   0.9&lt;/a&gt; (six years ago!?  Doesn't time fly!  Also, what ugly   slides...).  And after some more lightning (and less-lightning)   talks, it was time to wrap up with drinks, dinner, and good   conversation.&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Sat, 22 Oct 2011 12:49:18 GMT</pubDate>
      <title>22 Oct 2011</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=154</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=154</guid>
      <description>I'm in Amsterdam for the &lt;a href="http://weitz.de/eclm2011/" &gt;European Common Lisp Meeting&lt;/a&gt;, 2011 vintage.  Still wearing my two hats, as &lt;a href="http://www.doc.gold.ac.uk/~mas01cr/" &gt;academic&lt;/a&gt; and   &lt;br/&gt;
&#x201C;&lt;a href="http://www.teclo.net/" &gt;entrepreneur&lt;/a&gt;&#x201D; &amp;ndash; and, somewhat to my surprise, still enjoying it.  Though I do have a fairly nasty cold, possibly a result of too many late nights (business), early mornings (children), and interaction with disease-ridden individuals (students).&lt;br/&gt;
&lt;br/&gt;
I'm sitting in the &lt;a href="http://www.cafedejaren.nl" &gt;cafe de jaren&lt;/a&gt;, a haunt which I think is popular with students &amp;ndash;  but today looks just plain popular.  They seem very accomodating, with newspapers to wade through (admittedly, I brought my own), free Wifi, and tasty soup and sandwiches.  I've been here before; in fact, getting on for a decade ago, &lt;a href="http://www.pertelote.org/" &gt;my wife&lt;/a&gt; and I mislaid a copy of &lt;a href="http://www.asterix.com" &gt;Asterix&lt;/a&gt; and the Somethings (dunno which) in Dutch.  It's a pleasure to sit here, waiting for my colleagues to show up so that I can inspect Luke's presentation for &lt;strike&gt;blatant falsehoods&lt;/strike&gt; off-message content.  Looking forward to this evening's brasserie outing and of course the talks tomorrow &amp;ndash; it'll be particularly interesting to see how Jack Harper's presentation compares with our Teclo experience &amp;ndash;&lt;br/&gt;
and of course it'll be good to catch up with old friends, some of them in the flesh for the first time...</description>
    </item>
    <item>
      <pubDate>Wed, 6 Apr 2011 14:40:29 GMT</pubDate>
      <title>6 Apr 2011</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=153</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=153</guid>
      <description>Hey, what happened to that resolution to blog weekly about &#xD;
being entrepreneurial?  &#xD;
Well, it's been a long few months: course mostly &#xD;
delivered; PhD student &#xD;
approximately completed (well done, &lt;a href="http://blog.benfields.net/" &gt;Ben&lt;/a&gt;); &#xD;
plenty of extra time to actually be entrepreneurial.  Before &#xD;
I sink back down into &#xD;
the mire of too much to do and not enough time, an update!&#xD;
&#xD;
&lt;p&gt; I went to the 4th &lt;a href="http://www.european-lisp-&#xD;
symposium.org/" &gt;European Lisp &#xD;
Symposium&lt;/a&gt;, held at the &lt;a href="http://www.tu-&#xD;
harburg.de/" &gt;Technical University &#xD;
of Hanburg-Harburg&lt;/a&gt;.  It was great.  Compared with last &#xD;
year, when I was &#xD;
Programme Chair, and volcano eruptions closed most of &#xD;
European airspace, leading to &#xD;
scrambles to find alternative keynote speakers and general &#xD;
stress about whether &#xD;
there were going to be any attendees at all, this was a &#xD;
breeze.  Sure, I &#xD;
participated by reviewing a few contributions, but the event &#xD;
itself snuck up on me &#xD;
&amp;ndash; I found myself on the Monday remembering that &#xD;
straight after my teaching &#xD;
duties on Wednesday, I needed to dash to the airport to &#xD;
catch a plane.  Very &#xD;
pleasant; thanks to Didier Verna and Ralf M&amp;ouml;ller for making &#xD;
things so smooth that I could just turn up and assume that &#xD;
the event would be running perfectly &amp;ndash; I know how much &#xD;
work it takes to get to that point.&#xD;
&#xD;
&lt;p&gt; It was good to catch up there with some of the wider Lisp &#xD;
world; there were about &#xD;
60 attendees, including a solid transatlantic contingent.  I &#xD;
couldn't quite allow &#xD;
myself to relax completely, and so ended up giving a &#xD;
lightning talk about &lt;a href="http://r-project.org/" &gt;R&lt;/a&gt; &amp;ndash; a useful warmup &#xD;
for my slightly more &#xD;
substantial talk (&lt;a href="http://zslug.files.wordpress.com/2011/04/zslug-slides-&#xD;
rhodes-r.pdf" &gt;slides&lt;/a&gt;; audio recording appears to have &#xD;
failed) at the &lt;a href="http://zslug.wordpress.com/2011/03/31/second-&#xD;
zslug-meeting-with-emphasis-on-the-s-in-zslug/" &gt;Z&amp;uuml;rich &#xD;
Stuff'n'Lisp User Group&lt;/a&gt;.  &#xD;
The cuteness of adding two &lt;a href="http://lmdvr.r-forge.r-&#xD;
project.org/" &gt;&lt;tt&gt;lattice&lt;/tt&gt;&lt;/a&gt; objects together (in &#xD;
graphical presentation &#xD;
form) to get a new graph combining the two originals seems &#xD;
never to get old, though &#xD;
since it's in fact six months old I did take the time this &#xD;
morning to commit and &#xD;
push the accumulated fixes to my public &lt;a href="http://common-&#xD;
lisp.net/r/users/crhodes/swankr.git" &gt;swankr git &#xD;
repository&lt;/a&gt;.&#xD;
&#xD;
&lt;p&gt; Right.  Back to &lt;a href="http://teclo.net/" &gt;work&lt;/a&gt; &lt;a href="http://www.gold.ac.uk/computing/" &gt;work&lt;/a&gt; &lt;a href="http://www.sbcl.org/" &gt;&lt;strike&gt;work&lt;/strike&gt; &#xD;
&lt;strike&gt;fun&lt;/strike&gt; hacking&lt;/a&gt;.</description>
    </item>
    <item>
      <pubDate>Wed, 29 Dec 2010 15:16:38 GMT</pubDate>
      <title>29 Dec 2010</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=152</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=152</guid>
      <description>What I got for Christmas: &lt;a href="http://www.advogato.org/person/crhodes/diary/148.html" &gt;&#xD;
sufficiently advanced Intel graphics drivers for 855GM&lt;/a&gt;, &#xD;
in Linux &lt;tt&gt;2.6.37-rc7&lt;/tt&gt;.  No more missing mouse cursor &#xD;
on boot (and, icing on the Christmas cake, working video &#xD;
playback!)  Thank you to those who worked on this, &#xD;
particularly since I couldn't actually work out how or where &#xD;
to submit useful bug reports (and so resorted to my usual &#xD;
strategy when dealing with laptop-related issues, which is to &#xD;
contact &lt;a href="http://www.advogato.org/person/mjg59/" &gt;mjg59&lt;/a&gt; by whatever means available &#xD;
and follow his suggestions as precisely as possible).&#xD;
</description>
    </item>
    <item>
      <pubDate>Thu, 2 Dec 2010 17:04:15 GMT</pubDate>
      <title>2 Dec 2010</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=151</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=151</guid>
      <description>As the train I'm on ambles its unheated way through the &#xD;
unseasonably&#xD;
Wintry English countryside, it's time for another &#xD;
&amp;ldquo;weekly&amp;rdquo; &#xD;
exciting&#xD;
entrepreneurial update.  Actually I should be properly &#xD;
&lt;i&gt;working&lt;/i&gt;,&#xD;
not just talking about working, but there's a file I need &#xD;
for that&#xD;
elsewhere, and &lt;a href="http://www.three.co.uk/" &gt;three&lt;/a&gt;'s &#xD;
mobile&#xD;
Internet coverage evaporates about 3 minutes outside &#xD;
Waterloo station&#xD;
&amp;ndash; if only there were &lt;a href="http://www.teclo.net/" &gt;a&#xD;
company&lt;/a&gt; dedicated to bettering mobile data &#xD;
infrastructure...  So,&#xD;
here I am, with means, motive and opportunity to write a &#xD;
diary entry.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; Since I last wrote, I have fought with R's handling of &#xD;
categorical&#xD;
variables in linear models; the eventual outcome was a score &#xD;
draw.&#xD;
The notion of a &lt;i&gt;contrast&lt;/i&gt; is a useful one; very often, &#xD;
when we&#xD;
have a heap of conditions under which we observe some value, &#xD;
what&#xD;
we're interested in is not so much the predicted value given &#xD;
some&#xD;
condition, but the difference between the value under some &#xD;
condition&#xD;
and the value under some other: the canonical example for &#xD;
this is&#xD;
probably the difference between the condition of some group &#xD;
receiving&#xD;
a trial treatment, and the group receiving a control or &#xD;
placebo: the&#xD;
default contrast for unordered categorical variables in R is &#xD;
called&#xD;
the treatment contrast (&lt;a href="http://stat.ethz.ch/R-&#xD;
manual/R-&#xD;
patched/library/stats/html/contrast.html" &gt;&lt;tt&gt;contr.treatmen&#xD;
t&lt;/tt&gt;&lt;/a&gt;).&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; In my particular case, I wanted to know the difference &#xD;
between any&#xD;
particular contrast and the average response &amp;ndash; none of &#xD;
the&#xD;
categories I had in my system should have been privileged &#xD;
over any of&#xD;
the others, and there wasn't anything like a &#xD;
&amp;ldquo;control&amp;rdquo; &#xD;
group, so&#xD;
comparing against the overall average is a reasonable thing &#xD;
to want to&#xD;
do, and indeed it is supported in R through the use of the &#xD;
sum&#xD;
contrast &lt;tt&gt;contr.sum&lt;/tt&gt;.  However, this reveals a slight &#xD;
technical&#xD;
problem: the overall average and differences for each &#xD;
categorical&#xD;
variable is one more variable than the (effective) number of &#xD;
values;&#xD;
just as in simultaneous equations, this is a Bad Thing.  &#xD;
(Technically,&#xD;
the system becomes undetermined.)  So, in solving the &#xD;
system, one of&#xD;
the differences is jettisoned; my problem was that I wanted &#xD;
to&#xD;
visualise that information for all the differences, whether &#xD;
or not the&#xD;
last one was technically redundant &amp;ndash; particularly &#xD;
since I wanted&#xD;
to offer a guideline as to which differences were most &#xD;
strongly&#xD;
different from the average, and I would be out of luck if &#xD;
the most&#xD;
unusual one happened to be the one jettisoned.  Obviously I &#xD;
could&#xD;
trivially compute the last difference, simply from the &#xD;
constraint that&#xD;
all the differences must sum to zero (and actually &lt;a href="http://stat.ethz.ch/R-manual/R-&#xD;
patched/RHOME/library/stats/html/dummy.coef.html" &gt;&lt;tt&gt;dummy.&#xD;
coef&lt;/tt&gt;&lt;/a&gt;&#xD;
does that for me); but what about its standard error?&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; Enter &lt;a href="http://stat.ethz.ch/R-manual/R-&#xD;
patched/RHOME/library/stats/html/se.contrast.html" &gt;&lt;tt&gt;se.co&#xD;
ntrast&lt;/tt&gt;&lt;/a&gt;.&#xD;
This operator allows the user to construct an arbitrary &#xD;
contrast,&#xD;
expressed most simply as a vector of contributions to that &#xD;
contrast&#xD;
and ask an &lt;tt&gt;aov&lt;/tt&gt; object for the standard error of &#xD;
that&#xD;
contrast.  Some experimentation later, for a linear model &#xD;
&lt;tt&gt;m&lt;/tt&gt;&#xD;
for &lt;tt&gt;len&lt;/tt&gt; observations, and a particular factor &#xD;
variable&#xD;
&lt;tt&gt;f&lt;/tt&gt;, and a function &lt;tt&gt;class.ind&lt;/tt&gt; to construct a &#xD;
matrix of&#xD;
class indicator values (i.e. for a vector v&lt;sub&gt;i&lt;/sub&gt; of&#xD;
observations, construct a matrix x&lt;sub&gt;ij&lt;/sub&gt; where &#xD;
x&lt;sub&gt;ij&lt;/sub&gt;&#xD;
is 1 if observation i came from condition j, and zero &#xD;
otherwise), I&#xD;
think that:&#xD;
&lt;pre&gt;&#xD;
  anova &amp;lt;- aov(m)&#xD;
  ci &amp;lt;- class.ind(data[[f]])&#xD;
  ci &amp;lt;- ci[,colSums(ci) != 0]&#xD;
  contrasts &amp;lt;- ci %*% diag(1/colSums(ci)) %*% (diag(len)-&#xD;
(1/len)*matrix(rep(1,len*len), nrow=len))&#xD;
  ses &amp;lt;- se.contrast(anova, contrasts)&#xD;
&lt;/pre&gt;&#xD;
gives me a vector &lt;tt&gt;ses&lt;/tt&gt; of the standard errors &#xD;
corresponding to&#xD;
the sum contrasts in my system, including the degenerate &#xD;
one.  (As&#xD;
seems to be standard in this kind of endeavour, the effort &#xD;
per net&#xD;
line of code is huge; please do not think that I wrote these &#xD;
five&#xD;
lines of code off the top of my head.  Thanks to denizens of &#xD;
the r-help&#xD;
mailing list and in particular to Greg Snow for his answer &#xD;
to &lt;a href="" &gt;my question about this&lt;/a&gt;).&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; So, this looks like total victory!  Why have I described &#xD;
this as only&#xD;
a score draw?  Well, because while the above recipe works &#xD;
for a single&#xD;
factor variable, in the case I am actually dealing with I &#xD;
have all&#xD;
sorts of interaction terms between factors, and between &#xD;
factors and&#xD;
numerical variables, and again I want to display and examine &#xD;
all the&#xD;
contrasts, not just some subset of them chosen so that the &#xD;
system of&#xD;
equations to solve is nondegenerate.  This looked &#xD;
sufficiently&#xD;
challenging, and the analysis to be done looked sufficiently&#xD;
peripheral to the current business focus, that it's been &#xD;
shelved,&#xD;
maybe for a rematch in the new year.&#xD;
</description>
    </item>
    <item>
      <pubDate>Thu, 30 Sep 2010 13:12:33 GMT</pubDate>
      <title>30 Sep 2010</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=150</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=150</guid>
      <description>My weekly diary schedule has already slipped!  In my defence, last&#xD;
week was exceptional, because the major activity was neither&#xD;
entrepreneurial nor academic, but practical and logistical: moving&#xD;
house.  A lengthy rant about the insanity of the English conveyancing&#xD;
system is probably not of great interest to readers of this diary, so&#xD;
I will save the accumulated feelings of helplessness and insecurity&#xD;
for some other outlet.&#xD;
&#xD;
&lt;p&gt; Meanwhile, back to work.  It's the start of teaching next week;&#xD;
fortunately, I am teaching largely the same material as last year, so&#xD;
now is the time that I can reap the benefits of preparation time that&#xD;
spent on &lt;a href="http://www.doc.gold.ac.uk/~mas01cr/teaching/cc227/" &gt;the&#xD;
course&lt;/a&gt; over the last two years.  Inevitably, there will be new&#xD;
things to include and outdated material to remove or update, but by&#xD;
and large I &lt;i&gt;should&lt;/i&gt; be able to deliver the same content.&#xD;
&#xD;
&lt;p&gt; This is a relief, because of course this year I only have one fifth of&#xD;
my time on academic-related activities.  This means that various&#xD;
things have to be sacrificed or delegated, not least some of my&#xD;
extra-curricular activities such as being release manager of &lt;a href="http://www.sbcl.org/" &gt;SBCL&lt;/a&gt; &amp;ndash; so I'm very glad that &lt;a href="http://jsnell.iki.fi/blog/" &gt;Juho Snellman&lt;/a&gt; has volunteered to&#xD;
step in and do that for the next while.  (He suffered the by-now&#xD;
traditional baptism of fire, dealing with amusing regressions late in&#xD;
the 1.0.42.x series, and &lt;a href="http://permalink.gmane.org/gmane.lisp.steel-&#xD;
bank.announce/118" &gt;released&#xD;
version 1.0.43 today&lt;/a&gt;; we'll see how his coefficient of grumpiness&#xD;
evolves over the next few months).&#xD;
&#xD;
&lt;p&gt; In the land of industry, what I've mostly been doing is drawing&#xD;
graphs.  As the &lt;a href="http://common-lisp.net/~crhodes/swankr/lattice-&#xD;
presentations.png" &gt;screenshot&lt;/a&gt;&#xD;
in &lt;strike&gt;last week's&lt;/strike&gt; my &lt;a href="http://advogato.org/person/crhodes/diary/149.html" &gt;previous&#xD;
entry&lt;/a&gt; suggests, I'm using &lt;a href="http://www.r-project.org/" &gt;R&lt;/a&gt; for data processing and&#xD;
visualisation; I have datasets with large numbers of variables, and&#xD;
the facilities for visualising those quickly and compactly with the &lt;a href="http://lmdvr.r-forge.r-project.org/" &gt;lattice&lt;/a&gt; package&#xD;
(implementing Becker and Cleveland's &lt;a href="http://cm.bell-labs.com/stat/doc/trellis.user.pdf" &gt;trellis&lt;/a&gt;&#xD;
paradigm) are very convenient.  By and large, progressing from&#xD;
prototype visualisation to presentation- or publication-quality&#xD;
visualisation is also straightforward, but I spent so long figuring&#xD;
out one thing that I needed to do this week that I'll document it here&#xD;
for posterity: that thing was to construct a graph using lattice with&#xD;
an axis break.  It's not that it's absurdly difficult &amp;ndash; there&#xD;
are plenty of hookable or parameterisable functions in the lattice&#xD;
graph-drawing implementation; the difficult part is finding out&#xD;
&lt;i&gt;which&lt;/i&gt; functions to override, which hooks to use, and which&#xD;
traps to avoid.&#xD;
&#xD;
&lt;p&gt; The problem as I have found it is that when drawing a lattice plot,&#xD;
for these purposes, things happen in an inconvenient order.  First,&#xD;
the axes, tickmarks and labels are drawn, using the axis function&#xD;
provided to the lattice call (or &lt;a href="http://stat.ethz.ch/R-manual/R-&#xD;
devel/library/lattice/html/axis.default.html" &gt;&lt;tt&gt;axis.default&lt;/tt&gt;&lt;/a&gt;&#xD;
by default; then the data are plotted using the panel function.  So,&#xD;
that would be fine; one could even hackily draw over the axis in the&#xD;
panel function to implement the axis break, at least if one remembers&#xD;
to turn clipping off with &lt;tt&gt;clip=list(panel="off")&lt;/tt&gt; in&#xD;
&lt;tt&gt;par.settings&lt;/tt&gt;.  Except that the axis function doesn't actually&#xD;
draw the axis lines; instead, there's a non-overridable bit of&#xD;
&lt;tt&gt;plot.trellis&lt;/tt&gt; which draws the box around the plot, effectively&#xD;
being the axis lines &amp;ndash; and that happens after everything else.&#xD;
&#xD;
&lt;p&gt; So, piling hack upon hack: there's no way of not drawing the box.&#xD;
There is, however, a way of drawing the box with a line thickness of&#xD;
zero: pass &lt;tt&gt;axis.line=list(lwd=0)&lt;/tt&gt; in &lt;tt&gt;par.settings&lt;/tt&gt; as&#xD;
well.  Ah, but then the tick marks have zero thickness too.  Oh, but&#xD;
we can override that setting of &lt;tt&gt;axis.line$lwd&lt;/tt&gt; within our custom&#xD;
axis function.  (Each of these realisations took a certain amount of&#xD;
time, experimentation, and code reading to come to pass...).  What it&#xD;
boils down to, in the end, is a call like&#xD;
&#xD;
&lt;p&gt; &lt;pre&gt;&#xD;
xyplot(gmeans.zoo,&#xD;
       screens=1, col=c(2,3,4), lwd=2, lty=3, more=TRUE,&#xD;
       ylim=c(0.5,1.7), scales=list(&#xD;
                          x=list(at=dates, labels=date.labels),&#xD;
                          y=list(at=c(0.5,1.0,1.5),&#xD;
                            labels=c("- 50%", "&amp;plusmn; 0%", "+ 50%", "+ 100%"))),&#xD;
       key=list(lines=list(col=c(2,3,4)),&#xD;
         text=list(lab=c("5m", "500k", "galileo"))),&#xD;
       xlab="Date",&#xD;
       par.settings = list(axis.line=list(lwd=0),&#xD;
         clip=list(panel="off", strip="off")),&#xD;
       axis=function(side, scales, components, ...) {&#xD;
         print(scales)&#xD;
         lims &amp;lt;- current.panel.limits()&#xD;
         trellis.par.set(axis.line=list(lwd=0.5))&#xD;
         panel.axis(side=side, outside=TRUE, at=scales$at,&#xD;
                    labels=scales$labels,&#xD;
                    draw.labels=side %in% c("bottom", "left"), rot=0)&#xD;
         panel.lines(lims$xlim[[1]], lims$ylim, col=1, lwd=1)&#xD;
         panel.lines(lims$xlim[[2]], lims$ylim, col=1, lwd=1)&#xD;
         panel.lines(c(lims$xlim[[1]], as.Date("2010-09-11")+0.45),&#xD;
                     lims$ylim[[1]], col=1, lwd=1)&#xD;
         panel.lines(c(lims$xlim[[2]], as.Date("2010-09-11")+0.55),&#xD;
                     lims$ylim[[1]], col=1, lwd=1)&#xD;
         panel.lines(c(lims$xlim[[1]], as.Date("2010-09-11")+0.45),&#xD;
                     lims$ylim[[2]], col=1, lwd=1)&#xD;
         panel.lines(c(lims$xlim[[2]], as.Date("2010-09-11")+0.55),&#xD;
                     lims$ylim[[2]], col=1, lwd=1)&#xD;
       },&#xD;
       panel=function(x,y,...) {&#xD;
         xs &amp;lt;- current.panel.limits()$xlim&#xD;
         ys &amp;lt;- current.panel.limits()$ylim&#xD;
         panel.xyplot(x,y,...)&#xD;
         panel.polygon(as.Date("2010-09-11")+c(0.4,0.6,0.6,0.4),&#xD;
                       c(ys[1]+0.05,ys[1]+0.05,ys[2]-0.05,ys[2]-0.05),&#xD;
                       border="white", col="white", alpha=1)&#xD;
         panel.lines(xs,1,col=1,lty=3)&#xD;
         panel.lines(as.Date("2010-09-11")+c(0.5,0.6),&#xD;
                     c(ys[1]-0.025,ys[1]+0.025), col="black")&#xD;
         panel.lines(as.Date("2010-09-11")+c(0.4,0.5),&#xD;
                     c(ys[2]-0.025,ys[2]+0.025), col="black")&#xD;
         panel.lines(as.Date("2010-09-11")+c(0.5,0.6),&#xD;
                     c(ys[2]-0.025,ys[2]+0.025), col="black")&#xD;
         panel.lines(as.Date("2010-09-11")+c(0.4,0.5),&#xD;
                     c(ys[1]-0.025,ys[1]+0.025), col=1, lwd=1)&#xD;
         panel.text(as.Date("2010-09-20"),&#xD;
                    t(gmeans.zoo[1,])+c(0.01,0,-0.01),&#xD;
                    sprintf("%2.0f%%", round(100*t(gmeans.zoo[1,]-1))),&#xD;
                    pos=4)&#xD;
       })&#xD;
&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt; allows me to draw a picture like&#xD;
&#xD;
&lt;p&gt; &lt;img src="http://baked.teclo.net/~crhodes/advodiary-pictures/sigos-&#xD;
sambal-ts12.png"&gt;&#xD;
&#xD;
&lt;p&gt; for us to show to interested parties.&#xD;
</description>
    </item>
    <item>
      <pubDate>Thu, 16 Sep 2010 14:07:14 GMT</pubDate>
      <title>16 Sep 2010</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=149</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=149</guid>
      <description>New &lt;a href="http://www.advogato.org/person/crhodes/diary/148.html" &gt;laptop&#xD;
video (intel 855GM) drivers&lt;/a&gt; holding up pleasantly well.  One crash&#xD;
so far, from attempting to play a video; I haven't tried to reproduce&#xD;
it, since that's not something I do very often in any case.  (Said&#xD;
video was of my own &lt;a href="http://ftvdb.bfi.org.uk/sift/title/609295" &gt;extremely minor&#xD;
contribution&lt;/a&gt; to UK televisual arts programming, so maybe my video&#xD;
drivers were wisely preventing me from narcissistic overexposure...)&#xD;
&#xD;
&lt;p&gt; Meanwhile, back in the land of sort-of-industrial research and&#xD;
development, I've been using (and simultaneously learning)&#xD;
&lt;a href="http://www.r-project.org/" &gt;R&lt;/a&gt; for analysing the meaty chunks &#xD;
of&#xD;
data that my colleagues are generating.  A couple of &lt;a href="http://www.doc.gold.ac.uk/isms/" &gt;my academic labmates&lt;/a&gt; were&#xD;
already R users, unashamedly using R for their data treatment needs,&#xD;
even when their data came from Lisp programs.  Shocking, I know.  So,&#xD;
when substantial datasets started landing on my lap a few months ago&#xD;
(not just from &lt;a href="http://www.teclo.net/" &gt;a group of people in&#xD;
mobile broadband&lt;/a&gt;; energy use data and computer usage metrics &#xD;
also&#xD;
crossed my desk) I decided that the time was ripe to learn some new&#xD;
tools and techniques.&#xD;
&#xD;
&lt;p&gt; Initial reactions: mostly positive.  To help put my observations into&#xD;
context: I've &lt;a href="http://osdir.com/ml/lang.swi-prolog.general/2006-&#xD;
08/msg00042.html" &gt;dabbled&lt;/a&gt;&#xD;
in &lt;a href="http://www.mathworks.com/" &gt;MATLAB&lt;/a&gt; before, and it's&#xD;
never quite stuck.  The everything-is-a-matrix aspect was painful;&#xD;
graphical output was OK but nothing to write home about; and&#xD;
environmental support pretty painful.  (&lt;a href="http://www.gnu.org/software/octave/" &gt;GNU Octave&lt;/a&gt; suffers from&#xD;
all of these problems too, and then some; it does have the significant&#xD;
advantage, from my point of view, that at least there isn't the&#xD;
attempted lock-in from purchasing a bare proprietary wrapper over BLAS&#xD;
and LAPACK with the option to buy yet more functionality wrapping BLAS&#xD;
and LAPACK in slightly different ways).  I've also used (a long, long&#xD;
time ago now) &lt;a href="http://www.ittvis.com/ProductServices/IDL.aspx" &gt;IDL&lt;/a&gt;, again a&#xD;
vector-oriented language; my memory of it is mostly faded, but I&#xD;
remember being satisfied with its graphing facilities and much more&#xD;
satisfied with an Emacs-mode than with its default User Interface.&#xD;
This was 1998; I dare say things would be much the same today...&#xD;
&#xD;
&lt;p&gt; By contrast, R has data types that are mostly comfortable to my inner&#xD;
Lisp programmer.  Yes, number crunching is best done through vectors&#xD;
(matrices being a thin wrapper around vectors rather than a distinct&#xD;
language data type), but lists of vectors are fine, and are used to&#xD;
collect data into &lt;a href="http://search.r-&#xD;
project.org/R/library/base/html/data.frame.html" &gt;&lt;tt&gt;data.frame&lt;/tt&gt;&lt;/a&gt;s.&#xD;
It has a lightweight object system, with single dispatch on the class&#xD;
of the first argument; mind you, classes of objects are a pretty&#xD;
mutable concept in R, settable at arbitrary points in program&#xD;
execution (there's mostly no relationship between object class and&#xD;
object contents).  Speaking of settable, there's the &lt;a href="http://search.r-&#xD;
project.org/R/library/base/html/assignOps.html" &gt;&lt;tt&gt;`&amp;lt;-`&lt;/tt&gt;&lt;/a&gt;&#xD;
operator both for assignment and for mutation, like Common Lisp's &lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/m_setf_.h&#xD;
tm" &gt;&lt;tt&gt;setf&lt;/tt&gt;&lt;/a&gt;.&#xD;
&amp;ldquo;Mutation&amp;rdquo; there might actually not be quite the right word; the&#xD;
evaluation semantics are mostly lexical binding and call-by-value,&#xD;
with the interpreter attempting to perform copy-on-write and&#xD;
deforestation optimizations.  Speaking of interpreters, there's a&#xD;
reified environment and call stack at all stages of program execution,&#xD;
which makes the language mildly tricky to compile, particularly since&#xD;
environments are just about the only thing in the language which can&#xD;
be mutated; this aspect of the language has recently been the subject&#xD;
of &lt;a href="http://xianblog.wordpress.com/2010/09/13/simply-start-over-and-&#xD;
build-something-better/" &gt;discussion&#xD;
in the R community&lt;/a&gt; (and, would you believe it, one of the camps is&#xD;
advocating a rewrite of the engine &lt;a href="http://www.stat.auckland.ac.nz/%7Eihaka/downloads/Compstat-&#xD;
2008.pdf" &gt;using&#xD;
Common Lisp&lt;/a&gt; both as a model and as an implementation language,&#xD;
mentioning &lt;a href="http://www.sbcl.org/" &gt;SBCL&lt;/a&gt; by name... sadly&#xD;
without increasing my citation count.  Oh well.)&#xD;
&#xD;
&lt;p&gt; In any case, once I saw the reified environments, and also spotted &lt;a href="http://search.r-&#xD;
project.org/R/library/base/html/parse.html" &gt;&lt;tt&gt;parse&lt;/tt&gt;&lt;/a&gt;&#xD;
(analogue to &lt;tt&gt;read&lt;/tt&gt;) and &lt;a href="http://search.r-&#xD;
project.org/R/library/base/html/eval.html" &gt;&lt;tt&gt;eval&lt;/tt&gt;&lt;/a&gt;,&#xD;
I started wondering whether the comint-based Emacs mode for R, &lt;a href="http://ess.r-project.org/" &gt;Emacs Speaks Statistics&lt;/a&gt;, could be&#xD;
enhanced or replaced with some &lt;a href="http://common-lisp.net/project/slime" &gt;SLIME&lt;/a&gt;-like&#xD;
functionality.  I was particularly interested in whether there was&#xD;
enough introspective capability to replace the default debugger, which&#xD;
I was not having much success in using at all.  So I started digging&#xD;
into the documentation, finding first &lt;a href="http://search.r-&#xD;
project.org/R/library/base/html/try.html" &gt;&lt;tt&gt;try&lt;/tt&gt;&lt;/a&gt;,&#xD;
then &lt;a href="http://search.r-&#xD;
project.org/R/library/base/html/conditions.html" &gt;&lt;tt&gt;tryCatch&lt;/tt&gt;&lt;/a&gt;&#xD;
(OK, that's like &lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/m_hand_&#xD;
1.htm" &gt;&lt;tt&gt;handler-case&lt;/tt&gt;&lt;/a&gt;,&#xD;
so far so normal), and then on the same help page found&#xD;
&lt;tt&gt;withCallingHandlers&lt;/tt&gt; and &lt;tt&gt;withRestarts&lt;/tt&gt;, direct&#xD;
analogues of &lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/m_handle&#xD;
.htm" &gt;&lt;tt&gt;handler-bind&lt;/tt&gt;&lt;/a&gt;&#xD;
and &lt;a href="http://www.lispworks.com/documentation/lw50/CLHS/Body/m_rst_ca.&#xD;
htm" &gt;&lt;tt&gt;restart-case&lt;/tt&gt;&lt;/a&gt;.&#xD;
At that point it seemed logical, instead of trying to write some&#xD;
SLIME-like functionality for ESS, to simply write an R backend for&#xD;
SLIME.  With some careful (ahem) adaptation of a stub backend Helmut&#xD;
Eller wrote for Ruby, I got cracking, and &lt;a href="http://common-lisp.net/~crhodes/swankr/" &gt;swankr&lt;/a&gt; now &#xD;
supports&#xD;
a slime REPL, slime scratch buffers, SLDB, the default inspector, and&#xD;
presentations.&#xD;
&#xD;
&lt;p&gt; Here's a teaser screenshot, demonstrating functionality not yet&#xD;
merged: image output for &lt;a href="http://lmdvr.r-forge.r-project.org/" &gt;lattice&lt;/a&gt; objects,&#xD;
presented in the SLIME REPL, and usable in subsequent input.  There's&#xD;
plenty in &lt;a href="http://common-lisp.net/~crhodes/swankr/" &gt;swankr&lt;/a&gt;&#xD;
that doesn't work, and plenty more that's buggy, but it might be good&#xD;
enough for the enthusiastic R/Lisp/Emacs crossover community to give&#xD;
it a try.&#xD;
&#xD;
&lt;p&gt; &lt;img alt="Lattice Presentations" src="http://common-&#xD;
lisp.net/~crhodes/swankr/lattice-presentations.png"&gt;&#xD;
&#xD;
&lt;p&gt; (No, my screen is not that tall.)&#xD;
</description>
    </item>
    <item>
      <pubDate>Thu, 9 Sep 2010 12:46:10 GMT</pubDate>
      <title>9 Sep 2010</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=148</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=148</guid>
      <description>In my new life as an itinerant entrepreneur, spending significant&#xD;
amounts of time both working from strange places and travelling on&#xD;
trains, my productivity depends at least in part on having a good&#xD;
development laptop.  In my other current life lecturing in &lt;a href="http://www.doc.gold.ac.uk/~mas01cr/teaching/cc227/" &gt;Creative&#xD;
Computing&lt;/a&gt;, I also need to be able to display reliably to a data&#xD;
projector.  Neither of these was a problem until relatively recently.&#xD;
&#xD;
&lt;p&gt; For the last four years or so, after obtaining a recommendation from&#xD;
&lt;a href="http://mjg59.livejournal.com/" &gt;one of the masters of Linux&#xD;
and laptops&lt;/a&gt;, I've used an &lt;strike&gt;IBM&lt;/strike&gt;lenovo X40: light,&#xD;
fairly rugged (has survived at least one drop), almost full-sized&#xD;
keyboard, and &amp;ndash; importantly &amp;ndash; fits into more or less any&#xD;
carrying equipment.  However, the relative instability (which I am &lt;a href="http://ikibiki.org/blog/2010/02/28/Where_have_you_been/" &gt;not the&#xD;
only one&lt;/a&gt; to experience) brought about by the change in Linux and&#xD;
X.org's to Kernel-Mode Switching was beginning to get worrying; the&#xD;
X40 has an Intel 855GM graphics card, which since Intel is&#xD;
participating heavily in KMS support and development, means that new&#xD;
things got turned on early; I follow squeeze (&lt;a href="http://www.debian.org/" &gt;Debian&lt;/a&gt; testing), which gives me some&#xD;
of the thrills and spills of being on the leading edge of consumer&#xD;
Linux development; most pertinently for the start of the new academic&#xD;
year, I've been suffering from &lt;a href="http://bugs.debian.org/569135" &gt;odd display corruption on the VGA&#xD;
output&lt;/a&gt;.&#xD;
&#xD;
&lt;p&gt; In various combinations of Xorg and kernel versions, trying to work&#xD;
out a set of versions that work for me, I have experienced&#xD;
&#xD;
&lt;p&gt; &lt;ul&gt;&#xD;
&lt;li&gt;intermittent (about once a day) X server crashes, leaving the&#xD;
hardware in a sufficiently inconsistent state that the X server refuses to &#xD;
start again (linux v2.6.33ish, xserver-xorg-video-intel 2.9.1)&#xD;
&lt;li&gt;failure to start the X server on boot at all (linux v2.6.33ish, xserver-&#xD;
xorg-video-intel 2.12.0+legacy1-1)&#xD;
&lt;li&gt;missing mouse cursor on X server start (linux v2.6.35, xserver-xorg-&#xD;
video-intel 2.9.1)&#xD;
&lt;li&gt;substantial (~0.5s) latency about once every 10 seconds, with kslowd &#xD;
or kworkqueue processes taking about 20% of the CPU (linux v2.6.35 and &#xD;
v2.6.36-rc3, xserver-xorg-video-intel 2.9.1)&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt; The good news is that a large number of Intel-graphics-related fixes&#xD;
appeared in Linus' master branch yesterday, and at least some of these&#xD;
problems are fixed; with a module parameter &lt;tt&gt;poll=0&lt;/tt&gt; for the&#xD;
&lt;tt&gt;kms_drm_helper&lt;/tt&gt; module, the 0.5s latencies are gone (put&#xD;
&lt;tt&gt;options&amp;nbsp;kms_drm_helper&amp;nbsp;poll=0&lt;/tt&gt; in a file in&#xD;
&lt;tt&gt;/etc/modprobe.d&lt;/tt&gt;).  The VGA corruption I was experiencing&#xD;
seems to have been fixed somewhere between Linux versions 2.6.33 and&#xD;
2.6.35; I have hopes, too, that the X server crashes might be&#xD;
substantially less frequent (but I haven't been running a single&#xD;
kernel long enough to check yet).  The one remaining issue that is&#xD;
definitely still present is the missing mouse cursor when X first&#xD;
starts; a suspend/resume cycle works around this fairly reliably for&#xD;
me.  Thank you to all those who've worked on fixing these problems.&#xD;
&#xD;
&lt;p&gt; I'm particularly glad that all of this is just about sufficiently&#xD;
fixed, because the alternative would have been to get a new laptop,&#xD;
and as well as my natural disinclination to purchase new stuff when&#xD;
not strictly necessary (and let's face it, the initial phases of a&#xD;
startup are not usually those where money is abundant), it seems to be&#xD;
largely impossible to get a new one with the form factor of the X40:&#xD;
with the growing prevalence of widescreens, just about every modern&#xD;
laptop is substantially bigger than this one, and thus would not fit&#xD;
in some of my carrying equipment.  I will just have to preserve this&#xD;
one as long as possible.</description>
    </item>
    <item>
      <pubDate>Fri, 3 Sep 2010 06:40:50 GMT</pubDate>
      <title>3 Sep 2010</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=147</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=147</guid>
      <description>I'm on a train!  A train, heading towards &lt;a href="http://www.visitchristchurch.info/" &gt;Christchurch&lt;/a&gt;, &#xD;
with &#xD;
an&#xD;
amusingly bad synthesized (at least, I hope it's &#xD;
synthesized)&#xD;
announcement of train stops.&#xD;
&#xD;
&lt;p&gt; Being on a train would not normally be worthy of a diary &#xD;
entry.&#xD;
However, I'm travelling not as part of my heretofore stable &#xD;
academic&#xD;
enquiries, but as a mostly-fledged member of the high-flying&#xD;
technological startup community.  No, I haven't &#xD;
&lt;em&gt;quite&lt;/em&gt; sold&#xD;
out; as of yesterday, I work four days a week for a &lt;a href="http://www.teclo.net/" &gt;bright-futured company&lt;/a&gt; in &#xD;
the general&#xD;
area of mobile and wireless broadband; the other working day &#xD;
will&#xD;
continue to be spent at &lt;a href="http://www.gold.ac.uk/computing/" &gt;Goldsmiths&lt;/a&gt;, &#xD;
where I retain&#xD;
most of my responsibilities (but not the management of the&#xD;
music-informatics &lt;a href="http://www.omras2.org/" &gt;OMRAS2 &#xD;
project&lt;/a&gt;,&#xD;
which finished at the end of August); this arrangement with &#xD;
Goldsmiths&#xD;
will continue for a year.&#xD;
&#xD;
&lt;p&gt; So, why?  A number of factors came together to make this a &#xD;
very&#xD;
attractive opportunity.  Firstly, as I've already mentioned, &#xD;
the&#xD;
research project whose technical side I was responsible for &#xD;
came to an&#xD;
end last month; although the project itself was interesting, &#xD;
and its&#xD;
existence was at least partly responsible for me having a &#xD;
permanent&#xD;
academic position, I think it's fair to say that there were &#xD;
all sorts&#xD;
of wetware headaches as a result.  The end of the project &#xD;
was&#xD;
therefore a natural point to start afresh &amp;mdash; and in &#xD;
particular, to try&#xD;
to focus on aspects of work that I enjoy.  Secondly, my PhD &#xD;
students&#xD;
are largely getting towards the end of their studies; most &#xD;
should be&#xD;
submitting their dissertations in the next few months.  &#xD;
While PhD&#xD;
students are usually an asset to an academic, it is true &#xD;
that they can&#xD;
take up significant amounts of time, particularly in the &#xD;
early stages;&#xD;
not having to guide any in the early stages of their &#xD;
research next&#xD;
year gives me the freedom to investigate other activities, &#xD;
and to try&#xD;
to broaden my experience.  Thirdly, when the person who &#xD;
comes calling&#xD;
is as awesome as &lt;a href="http://lukego.livejournal.com/" &gt;our CTO&lt;/a&gt;,&#xD;
and when the rest of the gang is full of names I recognize, &#xD;
well, I&#xD;
expect to learn a lot.  (I already have!)&#xD;
&#xD;
&lt;p&gt; And of course, the fact that some of the underlying &#xD;
technology used in&#xD;
the company uses is software that I'm fairly familiar with &#xD;
is&#xD;
attractive; it would be good to show the world that there &#xD;
are more &lt;a href="http://www.sbcl.org/" &gt;SBCL&lt;/a&gt;-using companies with a &#xD;
healthy&#xD;
business than just &lt;a href="http://www.itasoftware.com/" &gt;the &#xD;
poster&#xD;
child&lt;/a&gt;.  If I'm lucky, the Free Software and Lisp-related &#xD;
content&#xD;
on this blog should noticeably increase, because although &#xD;
the academic&#xD;
life gives a huge freedom to think, it doesn't actually give &#xD;
a large&#xD;
amount of time to do very much with those thoughts; in this&#xD;
newly-acquired business role, as well as the inevitable all-&#xD;
hands&#xD;
pitching in until the small hours to make the demos work &#xD;
with bits of&#xD;
string and glue, I hope that there will be time to implement &#xD;
and&#xD;
reflect on interesting things.&#xD;
</description>
    </item>
    <item>
      <pubDate>Tue, 15 Jun 2010 10:48:54 GMT</pubDate>
      <title>15 Jun 2010</title>
      <link>http://www.advogato.org/person/crhodes/diary.html?start=146</link>
      <guid>http://www.advogato.org/person/crhodes/diary.html?start=146</guid>
      <description>It's been a while.  It's in fact almost embarassingly late&#xD;
for me to&#xD;
be blogging now about the 2010 &lt;a href="http://www.european-lisp-symposium.org/" &gt;European Lisp&#xD;
Symposium&lt;/a&gt;, which was over a month ago now &amp;ndash; in my&#xD;
defence, I&#xD;
point to the inevitable stress-related illness that follows&#xD;
excessive&#xD;
concentration on a single event, coupled with hilarious clashing&#xD;
deadlines at work and in my outside activities.&#xD;
&#xD;
&lt;p&gt; So, we cast our minds back to April.  When I booked my flight to&#xD;
Lisbon, I deliberately chose not to fly with British&#xD;
Airways, on the&#xD;
basis that they were likely to strike.  It turned out that the&#xD;
activities of British Airways cabin crew was going to be the&#xD;
least of&#xD;
the problems associated with getting to an international&#xD;
conference...&#xD;
&#xD;
&lt;p&gt; Yes, shortly after I booked my tickets,&#xD;
Eyjafjallaj&amp;ouml;kull went&#xD;
&lt;b&gt;*boom*&lt;/b&gt; and most of Europe's airspace closed for a&#xD;
week, with&#xD;
ongoing disruption for the best part of a month.  There were&#xD;
moments&#xD;
during the disruption when I wondered whether there was an&#xD;
actual&#xD;
curse affecting ELS, but in the event things cleared up and&#xD;
there was&#xD;
only minimal disruption to delegates and speakers, both&#xD;
getting there&#xD;
and getting back.&#xD;
&#xD;
&lt;p&gt; But enough about transport!  How was the symposium itself? &#xD;
Well,&#xD;
&lt;b&gt;I&lt;/b&gt; enjoyed the programme &amp;ndash; but given that I had&#xD;
as much&#xD;
control over it as events would allow me, perhaps that's not&#xD;
the most&#xD;
unbiased endorsement of quality.  Still, I was entertained&#xD;
by all the&#xD;
keynote speakers, from the window into the business world&#xD;
opened by&#xD;
Jason Cornez of Ravenpack, via the practical philosophy and&#xD;
view on&#xD;
history afforded by Kent Pitman, to the language&#xD;
experimentation and&#xD;
development in PLT &lt;strike&gt;Scheme&lt;/strike&gt; &lt;a href="http://www.racket-lang.org/" &gt;Racket&lt;/a&gt; described&#xD;
enthusiastically by Matthias Felleisen.  Pascal Costanza's&#xD;
tutorial on&#xD;
parallel and concurrent programming was highly informative,&#xD;
and there&#xD;
was a good variety of technical talks.&#xD;
&#xD;
&lt;p&gt; It's often said, though, that the good stuff at conferences&#xD;
happens&#xD;
between the programme, and for that the local organization&#xD;
needs to be&#xD;
on the ball.  I'm glad to say that &lt;a href="https://fenix.ist.utl.pt/homepage/ist13451" &gt;Ant&amp;oacute;nio&#xD;
Leit&amp;atilde;o&lt;/a&gt; and &lt;a href="http://sites.google.com/site/edgargoncalves/" &gt;Edgar&#xD;
Gon&amp;ccedil;alves&lt;/a&gt;, and their helpers, enabled a huge&#xD;
amount of&#xD;
interaction: lunch, coffee and tea breaks, evening meals&#xD;
(including a&#xD;
fabulous conference banquet, but also a more informal dinner&#xD;
and a&#xD;
meal punctuated by &lt;a href="http://en.wikipedia.org/wiki/Fado" &gt;Fado&lt;/a&gt;.  I gather the&#xD;
excursion to &lt;a href="http://en.wikipedia.org/wiki/Sintra" &gt;Sintra&lt;/a&gt;&#xD;
on the Saturday was interesting; by then I was at the&#xD;
airport, looking&#xD;
nervously at the departure boards...&#xD;
&#xD;
&lt;p&gt; I enjoyed meeting and talking with many of the attendees;&#xD;
some whose&#xD;
names I knew but whose faces I didn't (and some whose names&#xD;
I knew&#xD;
because they shared them with other people who I knew&#xD;
already: take a&#xD;
bow, both Lu&amp;iacute;s Oliveiras); but with always one eye on&#xD;
the next&#xD;
thing that could go wrong, I didn't get to go very deeply into&#xD;
interesting conversations.  Maybe next year, in Hamburg for&#xD;
ELS2011&#xD;
(expect the paper deadline to be around 31st December 2010)&#xD;
&amp;ndash; in&#xD;
the meantime, there's likely to be a journal special issue&#xD;
with an&#xD;
open call for papers, coming soon, and of course the ALU are&#xD;
holding&#xD;
an &lt;a href="http://www.international-lisp-conference.org/2010/" &gt;International&#xD;
Lisp Conference&lt;/a&gt; this year, whose &lt;a href="http://www.international-lisp-conference.org/2010/submissions" &gt;call&#xD;
for papers&lt;/a&gt; is currently open.  So get writing!&#xD;
</description>
    </item>
  </channel>
</rss>

