pages tagged advogatonoteshttp://christophe.rhodes.io/notes/tag/advogato/notesikiwiki2017-04-02T20:48:17Zkaratsuba multiplication in sbclhttp://christophe.rhodes.io/notes/blog/posts/2017/karatsuba_multiplication_in_sbcl/2017-04-02T20:48:17Z2017-04-02T20:45:22Z
<p>Possible alternative title: I’m on a train!</p>
<p>In particular, I’m on the train heading to the
<a href="http://www.european-lisp-symposium.org/">European Lisp Symposium</a>,
and for the first time since December I don’t have a criticially
urgent piece of teaching to construct. (For the last term, I’ve been
under the cosh of attempting to teach Algorithms & Data Structures to
a class, having never learnt Algorithms & Data Structures formally,
let along properly, myself).</p>
<p>I have been giving the students some structure to help them in their
learning by constructing multiple-choice quizzes. “But
multiple-choice quizzes are easy!”, I hear you cry! Well, they might
be in general, but these quizzes were designed to probe some
understanding, and to help students recognize what they did not know;
of the ten quizzes I ran this term, several had a period where the
modal mark in the quiz was zero. (The students were allowed take the
quizzes more than once; the idea behind that being that they can learn
from their mistakes and improve their score; the score is correlated
to a mark in some minor way to act as a tiny carrot-bite of
motivation; this means I have to write <em>lots</em> of questions so that
multiple attempts aren’t merely an exercise in memory or screenshot
navigation).</p>
<p>The last time I was on a train, a few weeks ago, I was travelling to
and from Warwick to sing Haydn’s Nelson Mass (“Missa in angustiis”;
troubled times, indeed), and had to write a quiz on numbers. I’d
already decided that I would show the students the clever Karatsuba
trick for big integer multiplication, and I wanted to write some
questions to see if they’d understood it, or at least could apply some
of the results of it.</p>
<p>Standard multiplication as learnt in school is, fairly clearly, an
Ω(d<sup>2</sup>) algorithm. My children learn to multiply using the
“grid method”, where: each digit value of the number is written out
along the edges of a table; the cells of the table are the products of
the digit values; and the result is found by adding the cells
together. Something like:</p>
<pre><code> 400 20 7
300 120000 6000 2100
90 36000 1800 630
3 1200 60 21
</code></pre>
<p>for 427×393 = 167811. Similar diagrammatic ways of multiplying (like
[link]) duplicate this table structure, and traditional long
multiplication or even the online multiplication trick where you can
basically do everything in your head all multiply each digit of one of
the multiplicands with each digit of the other.</p>
<p>But wait! This is an Algorithms & Data Structures class, so there
must be some recursive way of decomposing the problem into smaller
problems; divide-and-conquer is classic fodder for Computer
Scientists. So, write a×b as
(a<sub>hi</sub>×2<sup>k</sup>+a<sub>lo</sub>)×(b<sub>hi</sub>×2<sup>k</sup>+b<sub>lo</sub>),
multiply out the brackets, and hi and lo and behold we have
a<sub>hi</sub>×b<sub>hi</sub>×2<sup>2k</sup>+(a<sub>hi</sub>×b<sub>lo</sub>+a<sub>lo</sub>×b<sub>hi</sub>)×2<sup>k</sup>+a<sub>lo</sub>×b<sub>lo</sub>,
and we’ve turned our big multiplication into four multiplications of
half the size, with some additional simpler work to combine the
results, and big-O dear! that’s still quadratic in the number of
digits to multiply. Surely there is a better way?</p>
<p>Yes there is.
<a href="https://en.wikipedia.org/wiki/Karatsuba_algorithm">Karatsuba multiplication</a>
is a better (asymptotically at least) divide-and-conquer algorithm.
It gets its efficiency from a clever
observation[<a href="http://cr.yp.to/papers/m3.pdf">1</a>]: that middle term in
the expansion is expensive, and in fact we can compute it more
cheaply. We have to calculate
c<sub>hi</sub>=a<sub>hi</sub>×b<sub>hi</sub> and
c<sub>lo</sub>=a<sub>lo</sub>×b<sub>lo</sub>, there’s no getting
around that, but to get the cross term we can compute
(a<sub>hi</sub>+a<sub>lo</sub>)×(b<sub>hi</sub>+b<sub>lo</sub>) and
subtract off c<sub>hi</sub> and c<sub>lo</sub>: and that’s then one
multiply for the result of two. With that trick, Karatsuba
multiplication lets us turn our big multiplication into three
multiplications of half the size, and that eventaully
<a href="https://en.wikipedia.org/wiki/Master_theorem">boils down</a> to an
algorithm with complexity Θ(d<sup>1.58</sup>) or thereabouts. Hooray!</p>
<p>Some of the questions I was writing for the quiz were for the students
to compute the complexity of variants of Karatsuba’s trick: generalize
the trick to cross-terms when the numbers are divided into thirds
rather than halves, or quarters, and so on. You can multiply numbers
by doing six multiplies of one-third the size, or ten multiplies of
one-quarter the size, or... wait a minute! Those generalizations of
Karatsuba’s trick are <em>worse</em>, not better! That was completely
counter to my intuition that a generalization of Karatsuba’s trick
should be asymptotically better, and that there was probably some
sense in which the limit of doing divide-bigly-and-conquer-muchly
would turn into an equivalent of FFT-based multiplication with
Θ(d×log(d)) complexity. But this generalization was pulling me back
towards Θ(d<sup>2</sup>)! What was I doing wrong?</p>
<p>Well what I was doing wrong was applying the wrong generalization. I
don’t feel too much shame; it appears that Karatsuba did the same. If
you’re
<a href="https://en.wikipedia.org/wiki/Toom%E2%80%93Cook_multiplication">Toom or Cook</a>,
you probably see straight away that the right generalization is not to
be clever about how to calculate cross terms, but to be clever about
how to multiply polynomials: treat the divided numbers as polynomials
in 2<sup>k</sup>, and use the fact that you need one more value than
the polynomial’s degree to determine all its coefficients. This gets
you a product in five multiplications of one-third the size, or seven
multiplications of one-quarter, and this is much better and fit with
my intuition as to what the result should be. (I decided that the
students could do without being explicitly taught about all this).</p>
<p>Meanwhile, here I am on my train journey of relative freedom, and I
thought it might be interesting to see whether and where there was any
benefit to implement Karatsuba multiplication in
<a href="http://www.sbcl.org/">SBCL</a>. (This isn’t a pedagogy blog post, or an
Algorithms & Data Structures blog post, after all; I’m on my way to a
Lisp conference!). I had a go, and have a half-baked implementation:
enough to give an idea. It only works on positive bignums, and bails
if the numbers aren’t of similar enough sizes; on the other hand, it
is substantially consier than it needs to be, and there’s probably
still some room for micro-optimization. The results?</p>
<p><a href="http://christophe.rhodes.io/notes/blog/posts/2017/karatsuba_multiplication_in_sbcl/fit.png"><img src="http://christophe.rhodes.io/notes/blog/posts/2017/karatsuba_multiplication_in_sbcl/fit.png" width="800" height="600" alt="Linear model fit for built-in and Karatsuba multiply" class="img" /></a></p>
<p>The slopes on the built-in and Karatsuba mulitply (according to the
linear model fit) are 1.85±0.04 and 1.52±0.1 respectively, so even
million-(binary)-digit bignums aren’t clearly in the asymptotic
régimes for the two multiplication methods: but at that size (and even
at substantially smaller sizes, though not quite yet at Juho’s
<a href="https://www.snellman.net/blog/archive/2004-08-22.html">1000 bits</a>) my
simple Karatsuba implementation is clearly faster than the built-in
multiply. I should mention that at least part of the reason that I
have even <em>heard</em> of Karatsuba multiplication is Raymond Toy’s
<a href="https://www.cons.org/cmucl/news/2002.html">implementation</a> of it in
<a href="http://cmucl.org/">CMUCL</a>.</p>
<p>Does anyone out there use SBCL for million-digit multiplications?</p>
going to els2017http://christophe.rhodes.io/notes/blog/posts/2017/going_to_els2017/2017-04-02T13:24:33Z2017-04-02T13:24:33Z
<p>I’m going to the
<a href="http://www.european-lisp-symposium.org/">European Lisp Symposium</a>
this year! In fact, I have to catch a train in two and a half hours,
so I should start thinking about packing.</p>
<p>I don’t have a paper to present, or indeed any agenda beyond catching
up with old and new friends and having a little bit of space to think
about what might be fun to try. If you’re there and you want to make
suggestions, or just tell me what you’re up to: I’d love to hear.
(And if you’re not there: bad luck, and see you another time!)</p>
not going to els2016http://christophe.rhodes.io/notes/blog/posts/2016/not_going_to_els2016/2016-05-07T20:30:37Z2016-05-07T20:30:37Z
<p>I’m not going to the
<a href="http://www.european-lisp-symposium.org/">European Lisp Symposium</a>
this year.</p>
<p>It’s a shame, because this is the first one I’ve missed; even in the
height of the confusion of having <a href="http://www.teclo.net/">two</a>
<a href="http://www.gold.ac.uk/computing/">jobs</a>, I managed to make it to
Hamburg and Zadar. But
<span class="createlink">organizing ELS2015</span> took a lot out of
me, and it feels like it’s been relentless ever since; while it would
be lovely to spend two days in Krakow to recharge my batteries and
just listen to the good stuff that is going on, I can’t quite spare
the time or manage the complexity.</p>
<p>Some of the recent complexity: following one of those “two jobs” link
might give a slightly surprising result. Yes, Teclo Networks AG was
acquired by <a href="http://www.sandvine.com/">Sandvine, Inc</a>. This involved
some fairly intricate and delicate negotiations, sucking up time and
energy; some minor residual issues aside, I think things are done and
dusted, and it’s as positive an outcome for all as could be expected.</p>
<p>There have also been a number of sadder outcomes recently; others have
<a href="http://mjg59.dreamwidth.org/41948.html">written</a> about
<a href="http://www.inference.phy.cam.ac.uk/mackay/">David MacKay</a>’s recent
death; I had the privilege to be in his lecture course while he was
writing
<a href="http://www.inference.eng.cam.ac.uk/mackay/itila/"><em>Information Theory, Inference, and Learning Algorithms</em></a>,
and I can trace the influence of both the course material and the
lecturing style on my thought and practice. I (along with many
others) admire his book about
<a href="http://www.withouthotair.com/">energy and humanity</a>; it is
beautifully clear, and starts from the facts and argues from those.
“Please don’t get me wrong: I’m not trying to be pro-nuclear. I’m just
pro-arithmetic.” – a rallying cry for advocates of rationality. I
will also remember David cheefully agreeing to play the viola for the
<a href="http://jcms.jesus.cam.ac.uk/">Jesus College Music Society</a> when some
preposterous number of independent viola parts were needed (my
fallible memory says
“<a href="https://en.wikipedia.org/wiki/Brandenburg_Concertos#No._3_in_G_major.2C_BWV_1048">Brandenburg 3</a>”).
David’s last interview is available to
<a href="https://vimeo.com/163698553/10d1bbe16e">view</a>; iPlayer-enabled
listeners can hear <a href="http://www.cl.cam.ac.uk/~afb21/">Alan Blackwell</a>’s
(computer scientist and double-bassist) tribute on BBC Radio 4’s
<a href="http://www.bbc.co.uk/programmes/b0783lqk">Last Word</a>.</p>
<p>So with regret, I’m not travelling to Krakow this year; I will do my
best to make the 10th European Lisp Symposium (how could I miss a nice
round-numbered edition?), and in the meantime I’ll raise a glass of
Croatian Maraschino, courtesy of my time in
<a href="http://ozk.unizd.hr/els2012/">Zadar</a>, to the success of ELS 2016.</p>
lots of jobs in computing at goldsmithshttp://christophe.rhodes.io/notes/blog/posts/2015/lots_of_jobs_in_computing_at_goldsmiths/2015-06-01T09:27:02Z2015-06-01T09:27:02Z
<p>There’s an awkward truth that perhaps isn’t as well known as it ought
to be about academic careers: an oversupply of qualified, motivated
candidates chasing an extremely limited supply of academic jobs.
Simplifying somewhat, the problem is: if one tenured professor (or
“lecturer” as we call them in the UK) is primarily responsible for
fifteen PhDs over their career, then fourteen of those newly-minted
doctors will not get permanent jobs in academia.</p>
<p>That wouldn’t be a problem if the career aspirations of people
studying for doctorates were in line with the statistics – if about
one in ten to one in twenty PhD candidates wanted a job in academia,
then there would be minimal disappointment. However, that isn’t the
case; many more doctoral students have the ambition and indeed the
belief to go on and have an academic career: and when belief meets
reality, sometimes things break. Even when they don’t, the oversupply
of idealistic, qualified and motivated candidates leads to
distortions, such as a large number of underpaid sessional teaching
staff, assisting in the delivery of courses to ever larger cohorts of
students
(<a href="https://alexandreafonso.wordpress.com/2013/11/21/how-academia-resembles-a-drug-gang/">see also</a>).
The sector hasn’t sunk as low as the “unpaid internship” seen in other
oversupplied careers (games, journalism, fashion) – though it has
<a href="http://www.theguardian.com/higher-education-network/blog/2012/aug/02/unpaid-research-internships-academic-hypocrisy">come close</a>,
and there are some zero-hour contract horror stories out there, as
well as the nigh-on-exploitative short-term postdocs that are also
part of the pyramid.</p>
<p>All this is a somewhat depressing way to set the scene for our way of
redressing the balance:
<a href="http://www.gold.ac.uk/computing/">Goldsmiths Computing</a> is hiring to
fill a number of positions. Some of the positions are traditional
lecturer jobs – fixed-term and permanent – and while they’re good
openings, and I look forward to meeting candidates and working with
whoever is successful, they’re not what’s most interesting here. We
have also allocated funds for a number of post-doctoral teaching and
research fellowships: three year posts where, in exchange for helping
out with our teaching, the fellows will be able to pursue their own
research agenda, working in collaboration with (but <em>not</em> under the
direction of) established members of staff. I think this is a hugely
positive move, and a real opportunity for anyone interesting in the
particular kinds of areas of Computing that we have strengths in at
Goldsmiths:
<a href="http://www.gold.ac.uk/computing/research/gamesandgraphics/">Games and Graphics</a>,
<a href="http://www.gold.ac.uk/computing/research/musicandartcomputing/">Music and Art Computing</a>,
<a href="http://www.gold.ac.uk/computing/research/dataandsocialcomputing/">Data and Social Computing</a>,
<a href="http://www.gold.ac.uk/computing/research/human-computerinteraction/">Human-Computer Interaction</a>
and
<a href="http://www.gold.ac.uk/computing/research/airoboticsandcognition/">AI, Robotics and Cognition</a>.
(And if applicants were to want to work with me on projects in
<a href="http://www.transforming-musicology.org/">Music Informatics</a> or even
involving some <a href="http://www.sbcl.org/">programming language</a> work, so
much the better!)</p>
<p>The complete list of positions we’re hoping to fill (apply by
searching for the “Computing” Department in
<a href="http://jobs.goldsmiths.ac.uk/fe/tpl_goldsmiths01.asp">this search form</a>)
is:</p>
<ul>
<li>Lecturer in Computational Art – 0.5FTE, 3 year fixed-term</li>
<li>Lecturer in Computer Science – full-time, 3 year fixed-term</li>
<li>Lecturer in Computer Science – 0.5FTE, 3 year fixed-term</li>
<li>Lecturer in Games and Graphics – full-time, open-ended</li>
<li>Lecturer in Games Art – 0.5FTE, open-ended</li>
<li>Lecturer in Physical Computing – full-time, open-ended</li>
<li>Post-doctoral Teaching and Research Fellow – full-time, 3 year
fixed-term</li>
</ul>
<p>The deadline for applications for most of these posts is <strong>Monday 8th
June</strong>, so get applying!</p>
els2015 it happenedhttp://christophe.rhodes.io/notes/blog/posts/2015/els2015_it_happened/2015-04-23T10:47:10Z2015-04-23T10:47:10Z
<p>Oh boy.</p>
<p>It turns out that organizing a conference is a lot of work. Who’d
have thought? And it’s a lot of work even after accounting for the
benefits of an institutional
<a href="http://www.gold.ac.uk/conference-services/">Conference Services</a>
division, who managed things that only crossed my mind very late:
signage, extra supplies for college catering outlets – the kinds of
things that are almost unnoticeable if they’re present, but whose
absence would cause real problems. Thanks to Julian Padget, who ran
the programme, and Didier Verna, who handled backend-financials and
the website; but even after all that there were still a good number of
things I didn’t manage to delegate – visa invitation letters, requests
for sponsorship, printing proceedings, attempting to find a
last-minute solution for recording talks after being reminded of it on
the Internet somewhere... I’m sure there is more (<em>e.g.</em>
overly-restrictive campus WiFi, blocking outbound <code>ssh</code> and
TLS-enabled IMAP) but it’s beginning to fade into a bit of a blur.
(An enormous “thank you” to
<a href="http://www.richard-lewis.me.uk/">Richard Lewis</a> for stepping in to
handle recording the talks as best he could at very short notice).</p>
<p>And the badges! People said
<a href="https://twitter.com/nitro_idiot/status/590064479028834305">nice</a>
<a href="https://twitter.com/wyan/status/590103597846761472">things</a> about the
badges on twitter, but... I used largely the same code for the
<a href="http://www.international-lisp-conference.org/2007/index">ILC held in Cambridge in 2007</a>,
and the comment passed back to me then was that while the badges were
clearly going to become collectors’ items, they failed in the primary
purpose of a badge at a technical conference, which is to give to the
introvert with poor facial recognition some kind of clue who they are
talking to: the font size for the name was too small. Inevitably, I
got round to doing the badges at the last minute, and between finding
the code to generate PDFs of badges (I’d lost my local copy, but the
Internet had one), finding a supplier for double-sided sheets of 10
85x54mm business cards, and fighting with the office printer (which
insisted it had run out of toner) the thought of modifying the code
beyond the strictly necessary didn’t cross my mind. Since I asked for
feedback in the closing session, it was completely fair for a couple
of delegates to say that the badges could have been better in this
respect, so in partial mitigation I offer a slightly cleaned-up and
adjusted version of the badge code with the same basic design but
larger names: <a href="http://christophe.rhodes.io/notes/blog/posts/2015/els2015_it_happened/defperson.lisp">here you go</a>
(<a href="http://christophe.rhodes.io/notes/blog/posts/2015/els2015_it_happened/cards00.pdf">sample output</a>). (Another obvious improvement
suggested to me at dinner on Tuesday: print a list of delegate names
and affiliations and pin it up on a wall somewhere).</p>
<p>My experience of the conference is likely to be atypical – being the
responsible adult, I did have to stay awake at all times, and do some
of the necessary behind-the-scenes stuff while the event was going on.
But I did get to participate; I listened to most of most of the talks,
with particular highlights for me being
<a href="http://www.auc.nl/news-events/content/faculty/sci/o-nuallain-brenndan.html">Breanndán Ó Nualláin</a>’s
talk about a DSL for graph algorithms,
<a href="http://www.cons.org/cracauer/">Martin Cracauer</a>’s dense and technical
discussion of conservative garbage collection, and the demo session on
Tuesday afternoon: three distinct demos in three different areas, each
both well-delivered and with exciting content. Those highlights were
merely the stand-out moments for me; the rest of the programme was
pretty good, too, and it looked like there were some good
conversations happening in the breaks, over lunch, and at the banquet
on Monday evening. We ended up with 90 registrations all told, with
people travelling in from 18 other countries; the delegate with the
shortest distance to travel lived 500m from
<a href="http://www.gold.ac.uk/">Goldsmiths</a>; the furthest came from 9500km
away.</p>
<p>The <a href="http://www.european-lisp-symposium.org/ELS2015.pdf">proceedings</a>
are now available for free download from the
<a href="http://www.european-lisp-symposium.org/">conference website</a>; some
speakers have begun putting up
<a href="https://github.com/Shinmera/talks">their</a>
<a href="http://de.slideshare.net/fukamachi/woo-writing-a-fast-web-server-els2015">talk</a>
<a href="https://github.com/quicklisp/els-london-2015">materials</a>, and in the
next few weeks we’ll try to collect as much of that as we can, along
with getting release permissions from the speakers to edit and publish
the video recordings. At some point there will be a financial
reckoning, too; Goldsmiths has delivered a number of services on
trust, while ELSAA has collected registration fees in order to pay for
those services – one of my next actions is to figure out the
bureaucracy to enable these two organizations to talk to each other.
Of course, Goldsmiths charges in pounds, while ELSAA collected fees in
euros, and there’s also the small matter of cross-border sales tax to
wrap my head around... it’s exciting being a currency speculator!</p>
<p>In summary, things went well – at least judging by the things people
said to my face. I’m not quite going to say “A+ would organize
again”, because it <em>is</em> a lot of work – but organizing it once is
fine, and a price worth paying to help sustain and to contribute to
the communication between multiple different Lisp communities. It
would be nice to do some Lisp programming myself some day: some of the
stuff that you can do with it is apparently quite neat!</p>
els2015 is nearly herehttp://christophe.rhodes.io/notes/blog/posts/2015/els2015_is_nearly_here/2015-03-20T17:32:13Z2015-03-20T17:04:33Z
<p>This year, I have had the dubious pleasure of being the Local
Organizer for the
<a href="http://www.european-lisp-symposium.org/">European Lisp Symposium 2015</a>,
which is now exactly one month away; in 31 days, hordes of people will
be descending on South East London
<a href="http://christophe.rhodes.io/notes/blog/posts/2015/els2015_is_nearly_here/new-cross-gate-01545-750.jpg"><img src="http://christophe.rhodes.io/notes/blog/posts/2015/els2015_is_nearly_here/200x-new-cross-gate-01545-750.jpg" width="200" height="133" alt="New Cross Gate" class="img" /></a>
to listen to presentations, give lightning talks and engage in general
discussions about all things Lisp – the programme isn’t <em>quite</em>
finalized, but expect Racket, Clojure, elisp and Common Lisp to be
represented, as well as more... minority interests, such as C++.</p>
<p><a href="http://www.european-lisp-symposium.org/content-registration-full.html">Registration is open</a>!
In fact, for the next nine days (until <strong>29th March</strong>) the
registration fee is set at the absurdly low price of €120 (€60 for
students) for two days of talks, tutorials, demos, coffee, pastries,
biscuits, convivial discussion and a conference dinner. I look
forward to welcoming old and new friends alike to
<a href="http://www.gold.ac.uk/">Goldsmiths</a>.</p>
tmus research programmer positionhttp://christophe.rhodes.io/notes/blog/posts/2015/tmus_research_programmer_position/2015-03-16T11:47:14Z2015-03-16T11:47:14Z
<p>The <a href="http://www.ahrc.ac.uk">AHRC</a>-funded research project that I am a
part of, <a href="http://www.t-mus.ac.uk/">Transforming Musicology</a>, is
recruiting a developer for a short-term contract, primarily to work
with me on database systems for multimedia (primarily audio) content.
The goal for that primary part of the contract is to take some
<a href="https://github.com/TransformingMusicology/libaudioDB">existing work</a>
on
<a href="http://ismir2010.ismir.net/proceedings/ismir2010-84.pdf">audio feature extraction</a>
and
<a href="http://slaney.org/malcolm/yahoo/Casey2008-MinimumDistancesMusicSimilarity.pdf">probabilistic nearest-neighbour search</a>
indexing, and to develop a means for specialist users (<em>e.g.</em>
musicologists, librarians, archivists, musicians) to access the
functionality without needing to be experts in the database domain.
This of course will involve thinking about user interfaces, but also
about distributed computation, separation of data and query location,
and so on.</p>
<p>The funding is for six months of programmer time. I would have no
objection to someone working for six months in a concentrated block of
time; I would also have no objection to stretching the funding out
over a longer period of calendar time: it might well provide more time
for reflection and a better outcome in the end. I would expect the
development activities to be exploratory as well as derived from a
specification; to span between the systems and the interface layer; to
be somewhat polyglot (we have a C++ library, bindings in Python,
Common Lisp and Haskell, and prototype Javascript and Emacs front-ends
– no applicant is required to be fluent in all of these!)</p>
<p>There are some potentially fun opportunities during the course of the
contract, not least working with the rest of the Transforming
Musicology team. The post is based at
<a href="http://www.gold.ac.uk/computing/">Goldsmiths</a>, and locally we have
some people working on Systems for Early Music, on Musicology and
Social Networking, and on Musical Memory; the Goldsmiths contribution
is part of a wider effort, with partners based at
<a href="http://www.oerc.ox.ac.uk/news/digital-transformati%0Aon-music-studies">Oxford</a> working on Wagnerian Leitmotif and on a Semantic
Infrastructure, at <a href="http://c4dm.eecs.qmul.ac.uk/">Queen Mary</a> working
on mid-level representations of music, and in
<a href="http://www.lan%20caster.ac.uk/fass/lica/">Lancaster</a> coordinating
multiple smaller projects. As well as these opportunities for
collaboration, there are a number of events coming up: firstly, the
team would hope to have a significant presence at the conference of
the
<a href="http://ismir2015.ismir.net/">International Society for Music Information Retrieval</a>,
which will be held in Málaga in October. We don’t yet know what we
will be submitting there (let alone what will be accepted!) but there
should be an opportunity to travel there, all being well. In July
we’ll be participating in the
<a href="http://dhoxss.humanities.ox.ac.uk/2015">Digital Humanities at Oxford Summer School</a>,
leading a week-long programme of workshops and lectures on digital
methods for musicology. Also, in November of 2014, we also
participated in the AHRC’s
“<a href="http://beinghumanfestival.org"><em>Being Human</em></a>” festival, with a
crazy effort to monitor participants’
<span class="createlink">physiological responses to Wagner opera</span>;
there’s every possibility that we will be invited to contribute to a
similar event this year. And there are other, similar projects in
London with whom we have friendly relations, not least the
<a href="http://dml.city.ac.uk/">Digital Music Lab</a> project at City University
and the EU-funded <a href="http://www.iiia.csic.es/praise/">PRAISE</a> project at
Goldsmiths.</p>
<p>Sound interesting? Want to apply? There’s a more formal job advert
<a href="http://www.t-mus.ac.uk/news/2015-03-02_research-assistant-software-engineer/">on the project site</a>,
while the “person specification” and other application-related
materials is
<a href="http://jobs.goldsmiths.ac.uk/fe/tpl_goldsmiths01.asp?s=4A515F4E5A565B1A&jobid=96995,2323418758&key=106998140&c=65129802230265&pagestamp=seworkyvnciuawkhrw">with Goldsmiths HR</a>.
The closing date for applications is the <strong>27th March</strong>; we’d hope to
interview shortly after that, and to have the developer working with
us from some time in May or June. Please apply!</p>
ref2014 data updatehttp://christophe.rhodes.io/notes/blog/posts/2015/ref2014_data_update/2015-03-10T13:36:30Z2015-03-10T13:36:30Z
<p>Does anyone still care about <a href="http://results.ref.ac.uk/">REF2014</a>?
Apart from agonizing about what it will mean in the new assignments of
quality-related funding for institutions, obviously.</p>
<p>Among the various surprising things I have had to do this term (as in
“surprise! You have to do this”) was to participate in the Winter
graduation ceremony: reading out the names of graduands. It was fun;
the tiniest bit stressful, because I hadn’t ever managed to <em>attend</em> a
ceremony – but since everyone was there to celebrate, most of the
pressure was off; I think I managed to doff my hat at the required
times and not to trip over my gown while processing. Part of the
ceremony is a valedictory speech from the Warden (vice-Chancellor
equivalent), and it was perhaps inevitable that part of <em>that</em> was a
section congratulating our soon-to-be alumni on belonging to an
institution with high-quality research, or possibly
“<span class="createlink">research intensity</span>”.</p>
<p>That reminded me to take another look at the
<a href="http://www.hesa.ac.uk/ref2014">contextual data</a> published by the
<a href="http://www.hesa.ac.uk/">Higher Education Statistics Authority</a>; part
of the “research intensity” calculation involves an estimate of the
number of staff who were <em>eligible</em> to participate in the REF. It is
only an estimate, not for any fundamental reason but because the
employment data and the research submissions were collected by two
different agencies; the data quality is not great, resulting probably
in about equal measure from database schema mismatches (working out
which REF2014 “Unit of Assessment” a given member of departmental
staff belongs to) and human error. The good news is that at least the
human error can be corrected later; there are now four Universities
who have submitted corrected employment numbers to HESA, subtracting
off a large number of research assistants (fixed-term contract
researchers) from their list of REF-eligible staff – which naturally
tends to bump up their measured research intensity.</p>
<p>New corrections mean new spreadsheets, new slightly-different data
layouts, and new ingestion code; I suffer so you don’t have to. I’ve
made a <a href="http://christophe.rhodes.io/notes/tag/advogato/ref2014_0.2-1.tar.gz">new version of my <code>ref2014</code> R package</a>
containing the REF2014 results and contextual data; I’ve also put the
<a href="http://github.com/csrhodes/ref2014/">source of the package</a> up on
github in case anyone wants to criticize (or learn from, I guess)
<span class="createlink">my packaging</span>.</p>
a year in reviewhttp://christophe.rhodes.io/notes/blog/posts/2014/a_year_in_review/2014-12-31T22:27:37Z2014-12-31T22:27:37Z
<p>A brief retrospective, partly brought to you by <code>grep</code>:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Credit_Accumulation_and_Transfer_Scheme">CATS credits</a> earnt: 30 (<a href="http://christophe.rhodes.io/notes/wiki/structured_discussion_and_knowledge_acquisition/">15</a> + <a href="http://christophe.rhodes.io/notes/wiki/plagiarism__3a___is_it_a_rational_response__3f__/">7.5</a> + <a href="http://christophe.rhodes.io/notes/wiki/employability_blogging/">7.5</a>) at level 7</li>
<li>crosswords solved: >=40</li>
<li>words blogged: 75k</li>
<li>words blogged, excluding crosswords: 50k</li>
<li><a href="http://www.sbcl.org/">SBCL</a> releases made: 12 (<a href="http://www.sbcl.org/news.html#1.2.7">latest today!</a>)</li>
<li>functioning ARM boards sitting on my desk: <a href="http://christophe.rhodes.io/notes/tag/advogato/arms.jpg">3</a> (number doing anything actually useful, beyond SBCL builds: 0 so far, working on it)</li>
<li>emacs packages worked on: 2 (<a href="https://github.com/csrhodes/iplayer-el">iplayer</a> <a href="https://github.com/csrhodes/squeeze-el">squeeze</a>)</li>
<li>public engagement events co-organized: <a href="http://beinghumanfestival.org/event/hearing-wagner/">1</a></li>
<li>ontological inconsistencies resolved: <a href="https://github.com/motools/timelineonology/pull/1">1</a></li>
<li>R packages made: <a href="http://christophe.rhodes.io/notes/tag/advogato/christophe.rhodes.io/notes/blog/posts/2014/ref2014_data_in_R_package_form/">1</a> (University PR departments offended: not enough)</li>
</ul>
<p>Blogging’s been a broad success; slightly tailed off of late, what
with</p>
<ul>
<li><a href="http://crawl.develz.org/">Crawl</a> Dungeon Sprint wins: 2 (The Pits, Thunderdome: both GrFi)</li>
</ul>
<p>so there’s an obvious New Year’s Resolution right there.</p>
<p>Happy New Year!</p>
ref2014 data in R package formhttp://christophe.rhodes.io/notes/blog/posts/2014/ref2014_data_in_R_package_form/2014-12-28T22:55:18Z2014-12-28T22:44:45Z
<p>As threatened, one last post about
<a href="http://results.ref.ac.uk/">REF2014</a>. Actually this post is not so
much about REF2014 any more; it’s mostly about R. I’ve finally found
the time to package up the REF2014 data as a
<a href="http://christophe.rhodes.io/notes/tag/advogato/ref2014_0.1-1.tar.gz">convenient R package</a>, along with accompanying
documentation and a “vignette”. Some quick observations about the
process:</p>
<ul>
<li><p>it’s not desperately easy to find authoritative documentation on
best practices, or even appropriate first steps. There’s
<a href="http://cran.r-project.org/doc/manuals/R-exts.html">authoritative documentation</a>
on the format and contents of an R package, but that documentation
suffers from describing what not to do without describing what to do
instead
(<a href="http://cran.r-project.org/doc/manuals/R-exts.html#DOCF42">example</a>);
there’s Hadley Wickham’s
<a href="http://r-pkgs.had.co.nz/">suggestions for best practices</a>, but not
quite enough of those suggestions were applicable to this case
(data-only, converted from upstream formats). Putting it all
together took more brain cycles than I care to admit.</p></li>
<li><p><a href="https://www.stat.uni-muenchen.de/~leisch/Sweave/">Sweave</a> is a bit
clunky. It <a href="http://christophe.rhodes.io/notes/tag/advogato/join.pdf">does the job</a> but I can’t help but compare it
to <a href="http://orgmode.org/">org-mode</a> and markdown (R has
<a href="http://yihui.name/knitr/">knitr</a> for markdown vignettes, but I
couldn’t get <a href="http://rmarkdown.rstudio.com/">rmarkdown</a> working in
the budgeted time, so fell back to Sweave).</p></li>
<li><p>it’s quite nice to be forced to document all the columns of a data
frame. I say “forced”; it’s not that strong, but having <code>R CMD
check</code> tell me about all the bad things I’ve done is a decent
motivator.</p></li>
</ul>
<p>I’m not sure what the licence of the REF2014 data is (or even if that
is a question that makes sense). It appears I’m not the only one who
is unsure; the
<a href="http://www.wais.ecs.soton.ac.uk/">Web and Internet Science</a> crowd at
<a href="http://www.soton.ac.uk/">Southampton</a> have put up a
<a href="http://ref2014.ecs.soton.ac.uk/">RDF version of the REF2014 data</a>,
and Christopher Gutteridge doesn’t know about licensing either.
Meanwhile, in the general belief that having this dataset more
available is likely to be positive, all things considered,
<a href="http://christophe.rhodes.io/notes/tag/advogato/ref2014_0.1-1.tar.gz">have at it</a> (and tell me where the packaging
has gone wrong...).</p>