Older blog entries for crhodes (starting at number 172)

29 Dec 2013 (updated 30 Dec 2013 at 11:20 UTC) »

new year new gpg key

I've been putting this off for long enough. My current PGP key was generated in a different age, with somewhat different threat models and substantially different computational power (let alone social and political power) available to those who might be interested in subverting the general ability of individuals to identify themselves and communicate in private. It's true that not much of what I do is likely to be of vast interest to security agents worldwide, but as SBCL release manager (on holiday for a month!) I do publish documents that purport to assure that the source code and binary that users can obtain are unmodified from my personal copies.

Therefore, I've created a new key, with 2013-era configuration settings: 2048-bit RSA encryption and signing, and SHA-1 hashes undesired (though still accepted, given the protocol requirement). I've created a transition document, signed with both keys, to help interested parties with the transition; while my older key will remain valid for a while (I have a stack of business cards with its fingerprint on to get through...) the new key should be preferred in all situations where that makes sense.


  1. This is all quite fiddly and complicated. There's a reason (well, several reasons: all those business cards!) I have been putting this off for a while. I understand why at least some of the knobs and levers are there; I've taught Computer Security at undergraduate level – but I'm still not confident that I have got everything right, and that's worrying both personally and systemically.
  2. epa-sign-region appears to malfunction for me when given a prefix argument: what it's meant to do is give a UI for selecting keys to use for signing, and the option of which kind of signature to generate. What it actually seems to do is generate an undecryptable PGP Message block. [edit: this was caused by epa/epg version skew, from an old installation of the Debian easypg package. ]
  3. I stumbled over the --escape-from-lines GnuPG configuration option while reading the documentation. It's on by default.
  4. GnuPG is crowdfunding a new website and some infrastructure.

Syndicated 2013-12-29 22:04:59 (Updated 2013-12-30 10:16:26) from notes

new year's resolution more preparations

This new blogging setup, with the new domain, new feeds, and ideally new workflow, suggest the analysis of what was problematic with the old one.

Back when I was a PhD student, doing everything I could to avoid work on my thesis, I stumbled upon a culture of Lisp and Free Software developers – which may only come across as half ridiculous now but in 2001 seemed doubly counter-cultural. And so I joined a blogging platform for Free Software types that also happened to double as a testbed for trust metric research. And at the time, this offered neat features not easily available elsewhere: the word “blog” itself was only about two years old, and pertelote maintained a blog by hand for years, so having somewhere which would host my writing, and which moreover had some of the Social Network about it (the advogato userbase was responsible for certification of individuals' contribution to Free Software, and several of my then collaborators were on advogato before me) was ideal.

The principal downside for me, then as now, is the use of web browsers as the interface for text entry; a <textarea> just isn't rich enough in functionality. The situation is better now than it was – (mostly) gone are the days when an incautious C-q would instantly close all browser windows, including the one in which your meticulously-crafted draft was waiting for final polish before being submitted as a diary entry – but it's still a long way from using my text editor, moderately customized to my way of working, with all the comfort that that brings.

Meanwhile, for work, I've successfully used ikiwiki to document the processes and data around some of my academic administrative responsibilities over the years: postgraduate tutor, employability coordinator, director of postgraduate studies (the reality is even less glamorous than these titles); it's been really nice to be able to update documents while not at my desk, or while commuting, and even if I have never grown to love mercurial (ikiwiki's at-one-time default DVCS backend) it is at least worth knowing.

So when contemplating how to set up systems less likely to impede my productivity, it's perhaps natural that I should return to a recent success, and set up an ikiwiki instance. This time, though, I'm (obviously) explicitly using ikiwiki's support for blogging as well as its natural wiki nature; the idea is that the weblog is for timely, pertinent comments, while the wiki is for incrementally-refined notes on all subjects – probably replacing my org-mode note-taking habit, which while lovely relies too much on having a single emacs instance available at all times for when inspiration strikes. I fully expect to keep the org-mode setup I have for Getting (Some) Things Done, but will likely migrate the non-actionable notes I have to this wiki as and when.

Speaking of new feeds, the advogato tag will be punned into denoting content that should be syndicated to my diary on advogato. It's perhaps inevitable that something will go wrong, and including html tags in the text of the first syndicated entry is an excellent way to ensure that that happens, so if there's an editable textarea, escaped less-than and greater-than signs, or a sentence that seems to be missing something, then the Unix-Haters among the readers can reminisce about seeing >From in their e-mails oh wait that still happens...

Syndicated 2013-12-28 17:11:25 from notes

One of the portions of my job as an academic is to secure funding to enable the research that I would like to happen to be done. I'm lucky to find myself a member of a project that has been funded under the AHRC's “Digital Transformations” banner: my colleague and office-mate Tim Crawford [*] (once part of the Early Music revolution, late of The Parley of Instruments) is leading a team from a number of Universities in a three-year project in “Transforming Musicology”.

The project has multiple components; among other things, we'll be looking at methods for digitizing and interrogating historical source materials, including manuscripts and printed music, as well as relating those to modern performance artifacts; we'll be looking at the perception of music in context, trying to understand the compositional use and listener recognition of leitmotives (as in Wagner opera, but also in film scores); and we'll be trying to characterise the effects that social media, broadly considered, have had on the production, consumption and study of music itself.

On this last point, I have funding available for a PhD studentship. The award covers University fees, and provides a tax-free stipend (starting at £15,700) for three years, at the end of which the expectation is that there would be a sufficient body of research to write up as a dissertation for the award of a PhD. The full advert has all the details, but broadly I'm looking for someone who is sufficiently interested in the topic of music and social media to work at it for three to four years, has good computational knowledge and skills (Common Lisp programming experience definitely wouldn't hurt, but isn't necessary) and has training or relevant experience in music or social science. Does that sound like you? Please apply now! (Not sure? I'm happy to discuss the studentship or the project with anyone: just send me an e-mail).

[*] Tim Crawford has a Rhodes-Rhodes number of two.

SBCL’s code is hosted on SourceForge, for reasons that might be accurately summarized as historical. The occasional downtime aside, it has generally worked.

This weekend SourceForge “upgraded” (for which read “changed”) SBCL’s hosting to its new Allura implementation of its hosting infrastructure. In the process, the git repositories have changed their location. I hope that all people with commit access know where the new writeable location is; read-only access is from git://git.code.sf.net/p/sbcl/sbcl or http://git.code.sf.net/p/sbcl/sbcl. Please update your remotes.

In a similar fashion to embarrassing post-SBCL-release bug fixes, a bug fix to my previous diary entry. Having established the contrast between the corporate “interesting problems which we happen to solve with Lisp” presentations and those focussed on the lisp ecosystem itself, I intended to say that the talk given by Tiago Maduro Dias and Luís Oliveira from SISCOG about their company presented a difficult and interesting problem, but also presented their individual and corporate experiences of working with Lisp, which I think plays to the real strength of this kind of event, by offering experiences for other practitioners to learn from. I particularly loved the deadpan reporting of the informal surveys of the SISCOG engineers’ attitudes to Lisp and Emacs, and the frank assessments that some of the pieces are not good enough.

Instead of saying all that about the SISCOG talk, I left it out completely. Go me. Since making amends for that gives me another chance to talk about last week’s events, I'll also mention that I “live-tweeted” as an experiment; I'm not sure whether it's more annoying than useful, but the theory is that it acts as marketing and public relations as well as a handy notepad for when reconstructing events to make blog posts. I also managed to squeeze a tiny bit of development in: a minor improvement to SBCL’s console debugger, a fix to a long-standing bug in SBCL’s type derivation of expt, and adhering to codepoint-by-codepoint case consistency requirements imposed by the ANSI CL standard for characters composed with ypogegrammeni (that’s iota subscript to Attic scholars, or “is that a speck of dust or what?” to you and me).

I arrived in Madrid on Saturday afternoon, looking forward to three days of Lisp-related activity: the European Common Lisp Meeting on Sunday, then the European Lisp Symposium on Monday and Tuesday. Having been in Madrid only once before, and that on a brief business trip, I took advantage of the time before the Saturday dinner to have an extended wander through the streets of the central area (broadly East of the Palacio Real). My first and overriding impression: it’s incredibly clean and well-kept. This might have been partly due to seeing the sun for what felt like the first time this year, but the colours of the buildings were very vibrant, and everything seemed in very good condition – it put me a bit in mind of a spruced-up Cuba. Eventually, though, I had to stop wandering around aimlessly; the pre-ECLM dinner is an excellent occasion to chat to old friends and to catch up on news.

One thing that a partly social occasion like the ECLM offers to the hobbyist Lisp developer, I think, is an opportunity to become more motivated: for example, by hearing that other people value your work, or use your software, or whatever. The communications infrastructure that we now have is excellent, particularly for technical communication, but the general silence-implies-consent method of communicating (on mailing lists, for example) does collide unfortunately with the silence-implies-indifference default in many contexts. So for me, hearing that people consider SBCL on Windows to be “good enough” to remove the obnoxious unremovable startup message is useful feedback. This cuts both ways; I shouldn’t need to travel all the way to Madrid to be apologetic to Nick Levine in person for failing to act on any of his patches, but since we were both there...

Sunday was ECLM day. The ECLM offers Common Lisp practitioners invited by Edi and Arthur a chance to speak for 45 minutes or so on a subject of their choosing; approaches differ. Sometimes the speakers come from the corporate world, which generally leads to a (fairly interesting) talk about the problem domain that they’re solving: Michael Compton’s talk about Accenture Digital Optimization, a tool for A/B optimization on steroids, and Michael Eisfeld’s presentation of the background behind his company’s ConED software to act as a structural engineer’s assistant both fell into this category: I suppose it’s nice to know that these are problems that are being solved with Lisp, and it’s always good to hear about interesting problem, but it would have been nice to hear a more explicit link or some juicy details.

There were three talks generally adressing the CL ecosystem: the first talk of the morning was Wes Henderson’s introduction and presentation of mocl, a CL for mobile platforms. Between his announcement of the scheduled release time at 3581000000, Erik Huelsmann’s announcement that ABCL’s 1.2.0 release candidate was now available, and my inevitable “live” release of SBCL-1.1.8 in a lightning talk slot, there was a lot of implementation release activity. Matthew Emerson’s talk about Clozure CL didn’t involve any release engineering; instead, he talked about (and demoed) the Objective C bridge offered in Clozure CL: no reader macro was left unused by the end.

The remaining two talks were on music-related Lisp software: Janusz Podrazik gave an overview and demonstration of OpusModus, a tool around notation and other symbolic representations of music (such as MIDI) intended to add to a composer’s armamentarium; later in the day, Sven Emtell talked about ScoreCleaner and other applications from DoReMIR, with the assistance of some slick marketing videos. There is a long association between Lisp and computer music research (well, to be fair, there’s a long association between any old high-level programming language and computer music research); it was nice that both these applications looked slick, though I question Sven’s blithe assurance that incorporating polyphonic transcription into ScoreCleaner Notes (#1 in the App Store Japan, don’t you know?) would be happening in the near-term future.

After all this, a break to wander around Madrid and find a beer with old friends, before the ECLM dinner proper; I sat on a table with (among others) Jason Cornez, who flew to my rescue in the days of the 2010 ELS and Eyjafjallajökull: I noticed wryly that his answers in a social situation to the question of how his business was going were remarkably similar to those that I use. I suppose ’twas ever thus.

The ELS days covered a broader range of Lispy things. There were some non-CL Lispers in the room, and some of them even got to talk: Sam Tobin-Hochstadt’s tutorial on Typed Racket was pretty impressive – demos with audience suggestions are always risky, but it all came off – and Ludovic Courtès made NixOS and Guix look neat (the snarky back-channel question of whether it was possible to define a package called “list” under Guix was sadly unaddressed). More Lisp/music crossovers: Gérard Assayag gave a keynote presentation about OpenMusic’s past, present and future, including some neat improvisations (though there’s still a human in the loop: “it doesn’t know when to stop”) using a combination of OpenMusic and Max; and Mika Kuuskankare talked about PWGL under cover of talking about a lightweight lisp-friendly markup language (I'm not sure that the markup language is interesting enough to warrant using it over, say, org-mode – the nice thing about Mika’s implementation was that it rendered on the fly, but that ought to be achievable no matter the surface syntax – but the PWGL demos were very impressive).

And then it was time to head home. One of my odder habits in far-flung places is to see how pedestrian-accessible the airport is, so instead of taking the Metro to the airport terminal, I got off at Barajas, and had a look round the commune there (not least because the impression we in the UK have of Spain is of permanent protest and indignados everywhere, and I wanted to get a sense of what the atmosphere was like when not in the equivalent of Regent Street). I didn’t really stay for long enough to have publishable opinions about the political and economic state, though I’m glad to have seen it; I did observe that not all of the roads marked on the paper map I had were in fact accessible to pedestrians or, indeed, cars, so my walk from there to the airport was somewhat longer than expected (but fortunately not longer than budgeted for); if I had spent some time looking at a map beforehand I would have noticed that it was probably more sensible to go to Alamedo de Osuna at the end of line 5 instead. Then home by 1:30am, in time to catch 240 winks before the early-morning natural alarm clock. A good time was had by me.

The student application period for Google's Summer of Code is now open. If you are a student interested in applying for an SBCL-related project, great! There's an application template at the SBCL organization page: at the very least any application must include all the requested information.

When applying, it's worth realizing that both SBCL mentors and Google SoC administrators have a say in whether students are accepted onto the programme. I can't really say anything about what SoC administrators are looking for, but SBCL mentors are likely to be positively disposed towards applications which demonstrate:

  • clear understanding of the proposed project: well-articulated final goal, detailed descriptions of intermediate deliverables;
  • understanding of the project context: a description of how the wider SBCL user and developer community will benefit from the project;
  • applicant engagement: evidence that the period leading up to application has been put to good use in interacting with the SBCL community.

There is still time for any prospective applicants to work to provide the basis for these demonstrations: applications to the SoC programme close on Friday 3rd May.

Members of some of the other, longer-participating projects in Summer of Code have also posted on the subject of student applications; they are perhaps worth reading for any prospective applicants. I've seen a blog post from a Debian mentor and the Clojure guidelines; there are probably others, saying similar things: communicate, demonstrate, self-motivate.

In case a single cryptic twitter post isn't clear enough: SBCL got accepted as a mentoring organization to Google Summer of Code for 2013. Our hastily-constructed organization profile page is available, and anyone who is interested in mentoring students on SBCL-related projects (and has a few hours to spare a week over the summer months) is welcome to sign up to the site and request mentor status.

We also have an indicative list of potential projects, mostly constructed with extreme speed just before the application deadline by Paul Khuong. I say “indicative” because I think the most important factor in successful student projects is intrinsic motivation, which must (of course) come from the student themselves. So I'd suggest that any potential student applicant should use those ideas as a guide, rather than a finished application: feel free to mix and match goals.

I think it's also worth emphasizing that it's unlikely that SBCL will be allocated more than a handful of student slots: the guidelines do say that organizations new to the programme are likely to be given relatively few to see how they cope; although I've mentored for the program before it's not clear whether that experience, with LispNYC, will carry forward into this new organizational setup. So students keen to work on SBCL would be well advised to engage early, and demonstrate that they can at least begin to work with the codebase (a trivial typo-fix patch, with correctly-formatted commit message, would be a great start, for example). It's also worth saying that Google, not the SBCL organization, has the last word on which students are accepted.

(Thanks to the Common Lisp Foundation for agreeing at very short notice to handle the financial-related side of SBCL's participation.)

Before I forget: I was at what called itself the very first Emacs conference last weekend. The first thing to say is that I had a lot of fun!

I experimented with semi-live-tweeting the thing -- indeed, it was noticed by an external viewer that I was the only live-tweeter on #emacsconf using an emacs-based twitter client. I'm not sure about whether this is a good thing to do or not; certainly, in lectures that I'm giving, it's irritating (and distracting) if students are glued to their ludicrously expensive phones rather than to my perfectly-crafted narrative, but I accept that it happens – and if any of my undergraduate lecturers is reading this: I apologize profusely for reading the newspaper and trying to do the Inquisitor crossword during the Saturday lectures (but I wasn't the only one...). In this instance, I aimed not to create any disturbance, and mostly managed to tweet during breaks rather than during the actual talks.

The actual talks? This had something of the feel of a European Common Lisp Meeting (or its precursors) from about a decade ago: several times I heard the expression of surprise along the lines of “Who would have thought there were so many of us?” Particularly so many who were willing to turn up on the Saturday of an extended weekend to be cooped away from the sunshine all da... no, wait, being in the warm was a bonus. (It snowed on me at lunchtime). The actual talks were a good part of the draw: I had admired Sacha Chua's posts about using org-mode for, well, everything, back when I was picking it up for GTD (Gah, I am a long way off the wagon!) and John Wiegley is a name that has popped up in many a place that I have investigated (emacs obviously, but also Common Lisp and personal accounting), so the fact that they were doing a double-act for the keynote was a great draw (and it made a great start to the day).

The other talks were all interesting, though some were more relevant to me as an emacs outsider than others: highlights for me were the insanity of embedding a gtk-emacs inside another emacs (memories of McCLIM craziness) using Joakim Verona's oddly-named XWidgets; a call to arms on EmacsWiki from Nick Ferrier; Sam Aaron's emacs-based music/live coding system; and John Wiegley's rapid tour through emacs and emacs-lisp productivity enhancers (made me feel like a complete newbie). There was a lot about packaging systems for emacs lisp libraries and applications, about which I expressed a certain amount of skepticism, and Luke Gorrie gave a talk about SLIME, from (almost) the opposite perspective of the talk he gave at ECLM in 2005. (I have got this far without mentioning them, but I can't leave the subject without linking to Sacha Chua's talk sketchnotes; the keynote was excellent, and these notes are icing.)

The conversations between talks were good too; I ducked out of some lunch ones to visit Camden Lock market, but there was plenty of time to socialize. Possibly the weirdest moment for me came when Reuben Thomas showed up between Easter weekend services; I had last seen Reuben in a crazy performance of Handel's Giulio Cesare many, many years ago, and the context-switch that I think both of us had to go through to place the other was lengthy and extended. Small world.

I feel very lucky to have been able to participate. Thanks from me to the organizers, Aleksandar Simic for doing what seemed to be a lot of the heavy lifting and Forward for hosting. And I'll idle a bit more strongly on the emacs IRC channel and attempt to discover more of the London-based hacking community, time permitting...

I released SBCL 1.1.6 before the weekend, after the customary one-week period of code freeze and request for testing. Unfortunately, it turns out that the release contains a bug which affects a substantial number of quicklisp libraries: the compiler's transformation of svref was sped up, but unfortunately without sufficient generality, so code doing svref on a symbol-macro fails to compile.

This bug has been fixed in the master branch; this post is somewhat in the vein of a public service announcement: don't use SBCL 1.1.6 if your code or anything it depends on does svref on a symbol-macro. (If it does, a quick workaround is to replace the svrefs with arefs). As well as the public service announcement, though, I have a question for the wider community: how can we encourage testing the code and clearly communicating the results just before the release happens rather than just after? It's somewhat frustrating to have a week-long code freeze, then bug reports of serious issues a few hours after the release is made... and unfortunately answers of the form “just test everything yourself during the freeze period” aren't currently practical. Maybe someday.

163 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!