Keeping everyone happy at a conference

At Mashed Library UK 2009, we’re planning to kick the event off with six 30 minute opening sessions. We’ve got two rooms, so there’ll be a session running in each room at the same time. Since a delegate can’t be in two places at the same time, they’ll only be able to go to three of the six sessions. So, how do you ensure that you keep everyone happy and that you don’t have too many clashes (i.e. having to miss a session you’d have quite liked to have gone to)?
Having never organised an event before, I’m guessing the usual way would be to try and schedule sessions together that target different audiences? However, that sounds like a potential headache inducer and I’m a programmer, not a planner!
So, what we’re going to do, once we’ve got all six sessions finalised, is to let each of the 60 odd delegates (and by that I mean we’ve got more than 60 delegates!) rank the sessions in order of preference. So, their 1st, 2nd, and 3rd choices would be the three sessions that they’d most like to go to.
With that kind of data, you’d expect to see some clustering (i.e. delegates making the same or similar choices) and so (in theory) there will be an optimal sequencing of sessions that will give the most delegates the best chance to going to their three top choices.
There’s a wide variety of programming techniques for finding optimal solutions to problems, from the simple to the complex (e.g. simulated annealing and genetic algorithms). However, because I’d got a bath running, I decided to knock up a quick hack using the simplest method — randomly generate a session sequence and then see how well it meets the choices of the delegates. By the way, if you want to learn more about calculating optimal solutions, see “Programming Collective Intelligence” by Toby Segaran (ISBN 9780596529321).
With any optimal solution code, you need to way of measuring the success of a given solution. To my mind, that would be “happiness” — if you find a solution that gives a delegate the ability to attend their top three choices, they’ll be very happy, but if you have a session clash for their 1st and 2nd choices, they won’t be happy. Once you’ve calculated the overall “happiness” for all the delegates, then that allows you to compare that particular solution with other random solutions (i.e. “does this session sequence generate more happiness or less that the previous one?”)
I hadn’t planned on releasing the code, as it really was a 5 minute “quick and dirty” hack, but Ben tweeted to say he might find it useful, so I’ve uploaded the Perl script to here. I’ve also included a sample file containing some dummy delegate choices.
For each delegate, there’s a comma separated list showing their session preference (1=top choice)…

Andy    2,4,3,5,6,1

…so Andy’s top choice is session 6, followed by session 1, then session 3, etc.
If you run the Perl script, it’ll pick a random session sequence and calculate the happiness. It’ll keep on looping and trying to find better solutions until it finds one that can’t be improved upon. You’d probably want to run the code several times to ensure that the final solution really is the best one. You might want to also try one of the alternative $overall calculations to see if that produces the same session sequence.
Here’s an example of an early solution…

[1]     session 1 = 11 delegate(s)
[1]     session 6 = 4 delegate(s)
[2]     session 5 = 6 delegate(s)
[2]     session 4 = 9 delegate(s)
[3]     session 2 = 8 delegate(s)
[3]     session 3 = 7 delegate(s)
HAPPINESS = 87 (5.8)
        1       Andy    -4.8
        3       Beth    -2.8
        3       Cary    -2.8
        9       Dave    +3.2
        5       Earl    -0.8
        9       Fred    +3.2
        9       Gene    +3.2
        3       Hans    -2.8
        9       Iggy    +3.2
        5       Jane    -0.8
        5       Karl    -0.8
        9       Leah    +3.2
        9       Macy    +3.2
        3       Neil    -2.8
        5       Owen    -0.8
CLASHES = 7 / OVERALL = 12.4285714285714 / DIFF = 38.4

In the above output, it’s proposing to run sessions 1 & 6 together, then 5 & 4, and finally 2 & 3. By looking at the delegate choices, you can easily calculate which of the two concurrent sessions each delegate would prefer to go to (i.e. 11 delegates would choose to go to session 1).
The code also calculates a “happiness” value for each delegate. If a delegate gets to go to their 1st, 2nd and 3rd choices, then they’d get a maximum happiness score of 9 (3 x 3 points). If a 1st choice session is being run at the same time as their 2nd choice (or a 2nd at the same time as the 3rd), that would make them unhappy, so a point is deducted. If a 1st choice runs at the same time as their 3rd choice, they’d probably accept that (however, nothing is added to their happiness score).
Once all the scores have been calculated, we get an overall happiness of 87 (out of a possible 135, i.e. 15 delegates x the maximum happiness score of 9) and the average happiness is 5.8 out of 9.
We can also see the how (un)happy each delegate is and how much they deviate from the average happiness. Dave, Fred, Gene, Iggy, Leah and Macy all get to go to their top 3 choices, so they’ve all got scores of 9 out of 9. Andy is very unhappy (1 out of 9). The others are somewhere in the middle, so they’ve all had to make compromises and won’t be going to their top 3 sessions.
There are 7 clashes (when a 1st choice runs at the same time as the 2nd, or the 2nd at the same time as the 3rd). Ideally, we’d like to keep the clashes to a minimum.
Here’s an example of a better solution (which might actually be the optimal solution for the dummy data)…

[1]     session 3 = 9 delegate(s)
[1]     session 5 = 6 delegate(s)
[2]     session 4 = 9 delegate(s)
[2]     session 6 = 6 delegate(s)
[3]     session 1 = 10 delegate(s)
[3]     session 2 = 5 delegate(s)
HAPPINESS = 101 (6.73333333333333)
        5       Andy    -1.73333333333333
        9       Beth    +2.26666666666667
        3       Cary    -3.73333333333333
        3       Dave    -3.73333333333333
        5       Earl    -1.73333333333333
        3       Fred    -3.73333333333333
        5       Gene    -1.73333333333333
        9       Hans    +2.26666666666667
        5       Iggy    -1.73333333333333
        9       Jane    +2.26666666666667
        9       Karl    +2.26666666666667
        9       Leah    +2.26666666666667
        9       Macy    +2.26666666666667
        9       Neil    +2.26666666666667
        9       Owen    +2.26666666666667
CLASHES = 2 / OVERALL = 50.5 / DIFF = 36.2666666666667

The average happiness is now up to 6.73 per delegate and there are only 2 clashes, which is much better. Cary, Dave and Fred will be the most affected by this particular session scheduling, but we now have 8 delegates attending their top choices.
So, the big question will be: what happens when we get the real data from the 60 odd delegates who are coming to Mashed Library? Stay tuned for the answer!

Transcript of the #cilip2 Twitter hastag

Despite a widespread network failure that seemed to affect quite a few universities, I finally managed to pick up all of the #cilip2 tweets from today’s event: http://www.daveyp.com/files/stuff/cilip2.html
cilip2_full
Whenever I get a spare half-an-hour, I’ll do some analysis of the tweets. If anyone want a tab separated version of the data, you can grab it from here.

Mashed Library UK 2009 – Mash Oop North!

The date for your diary is Tuesday 7th July 2009 and the event will take place in a large studio space in the Creative Arts Building at the University of Huddersfield. The online registration form should appear before the end of April.
If you want to keep up-to-date with the event, then make sure you join the mashedlibrary group on ning.com. You can also subscribe to the RSS feed from the event blog and the Twitter hash is #mashlib09.
The planning for the event is very much a group effort with seven of us having semi-regular meetings in pubs: Zoë, Lisa, Bryony, Tanya, Iman, Graham and myself. Although there’s still plenty of logistical stuff to figure out, it feels like the event is coming together nicely and hopefully we’ve managed to incorporate most of the feedback and suggestions from the first event.
The event will mostly be an unconference and we’re aiming to create an environment that will encourage networking, creativity and fun. Ideally, we’d like to attract a good mix of developers and tech-savvy librarians, and we think we can probably fit around 50 people into the studio.
The plan is to kick off with a couple of structured sessions, which will include an introduction to using Yahoo Pipes for those of you who’ve never played with mashups before (courtesy of the one-and-only Tony Hirst). At the same time, there’ll be a more techie session for the developers.
After those sessions, we’ll move to a more informal unconference style event. You’ll be encouraged to network, to get creative with the various available data sources, to brainstorm new ideas and to come up with prototypes.
If you’re a librarian with ideas, then Mashed Library is a fantastic opportunity to meet with techies who can turn those ideas into working prototypes and services. And, if you’re a techie, this is a chance to brainstorm with librarians and write code that’ll provide cool new services to library users!
We’d also like to encourage student librarians (and any other students who love libraries) to come to the event. We’ll shortly be announcing how you can apply for sponsorship to attend for free and to have your travel costs covered.
Speaking of sponsorship, we’d like to thank Talis for stepping up to be the main sponsors of the event. Talis have a long history of helping sponsor developer events (e.g. Code4Lib 2009) and they’ll be ensuring you don’t faint from lack of nourishment during the day!
We also like to attract sponsorship for prizes. If you’re an organisation who can make data available for the event, we’d love you to sponsor a prize for the best use of your data on the day (please get in touch with me if you’d like to discuss this)
Throughout the day we’ll be running short 5 minute “lightning talks”. Who’ll be giving those talks? You will, of course! The talks will be your chance to pitch an idea, show off something you’ve done, talk about your favourite web site/service, or to just rant for a few minutes. The talks will be optional, but we’re sure they’ll be something of interest to everyone.

UKSG 2009

Far too tired to blog anything sensible, but wanted to say how much I enjoyed the UKSG 2009 Conference in Torquay 🙂
Looking at the Twitter feed (#uksg09) it sounds like the trains have been atrotious. Hope everyone eventually made it back home in one piece.
I was already full of cold before setting off and it wasn’t until this morning that my ears finally “popped” from the flight down to Exeter on Sunday… just in time for the flight back to Manchester! Once again, now all I can hear is my tinnitus 🙁 Just in case anyone was wondering, that’s why I spent most of the conference sticking my fingers in my ears and shaking my head from side to side 😀
There’s lots of photos from the event on Flickr. However, I must get myself up to a photography course, as only about 10% of all the photos I took were worth uploading. My favourite shots are these two…
uksg09_057
uksg09_077
…I’ve no idea who any of the people are in the first shot (taken during the Tuesday evening drinks reception), but the second is Clare Duddy with her prize of a new Samsung netbook — many congratulations!
Not sure why, but I’ve not uploaded any photos of the duck that was starring at me through my hotel window… I’ll get photos of it uploaded tomorrow!
It was also great to meet Mike Ellis, and I’ve lost count of all the people I networked with and all of the ideas that sprang from those conversations.
Best of all, someone promised to email me a receipe for how to make limoncello — yay! 🙂

The impact of book suggestions/recommendations?

Whilst finalising my presentation for the 2009 UKSG Conference in Torquay, I thought it would be interested to dig into the circulation data to see if there was any indication that our book recommendation/suggestion services (i.e. “people who borrowed this, also borrowed…” and “we think you might be interested in…”) have had any impact on borrowing.
Here’s a graph showing the range of stock that’s being borrowed each calendar year since 2000…
interesting
Just to be clear — the graph isn’t showing the total number of items borrowed, it’s the range of unique titles (in Horizon speak, bib numbers) that have been borrowed. If you speak SQL, then we’re talking about a “count(distinct(bib#))” type query. What I don’t have to hand is the total number of titles in stock for each year, but I’d hazard a guess that it’s been fairly constant.
You can see that from 2000 to 2005, borrowing seems to have been limited to a range of around 65,000 titles (probably driven primarily by reading lists). At the end of 2005, we introduced the “people who borrowed this, also borrowed…” suggestions and then, in early 2006, we added personalised “we think you might be interested in…” suggestions for users who’ve logged into the OPAC.
Hand on heart, I wouldn’t say that the suggestions/recommendations are wholly responsible for the sudden and continuing increase in the range of stock being borrowed, but they certainly seem to be having an impact.
Hand-in-hand with that increase, we’ve also seen a decrease in the number of times books are getting renewed (even though we’ve made renewing much easier than before, via self-issue, telephone renewals, and pre-overdue reminders). Rather than hanging onto a book and repeatedly renewing it, our students seem to be exploring our stock more widely and seeking out other titles to borrow.
So, whilst I don’t think there’s a quick any easy way of finding out what the true impact has been, I’m certainly sat here with a grin like a Cheshire cat!

Mash Oop North

Coming this summer…
mashuplibrary2009
We’re hoping to fix the date soon, but it’s likely to be on or around Tuesday July 7th at the University of Huddersfield.
If it is July 7th, then we’d be able to celebrate:

…that both events occurred on July 7th is not a coincidence 😉
(mashed potato courtesy of jslander)

Mashed Libraries — “Mash Oop North”?

I’ll try and make some time to blog about the excellent dev8D event, but on Thursday morning I had a chat with Owen Stephens about running a Mashed Libraries event in Yorkshire.
Earlier on in the week, the name “Mash Oop North” sprang into my head[1]. With a name like that, it’d be rude not to run an event 😀

(Mash and Gravy by chotda)
So, would anyone be interested in attending an event hosted in Huddersfield (or perhaps somewhere else in Yorkshire)? I’ve posted a comment on the Mashed Libraries forum with more details about travel links to Huddersfield. Please post a comment here or on the forum to say “yay” or “nay”!


[1] “oop north” is fairly common slang for “up north” (i.e. the North of England), as in “it’s grim oop north

JISC Developer Happiness Days (dev8D)

For my sins, I’m going to be facilitating the OPAC Community Meeting at the JISC Developer Happiness Days event in London next week.
Although we’ve got “OPAC” in the name, I think the session should include anything to do with library catalogues, library usage data, MARC records, federated search engines, revelancy ranking, facets, etc
We’d like to kick the session of with several “Minute Madness” talks. If you’re considering coming along to the session, and you meet any of the following criteria, please add your name to wiki!

  • you’ve done something cool with your OPAC
  • you’d like to do something cool with your OPAC
  • you’d like a soapbox to rant about how much your OPAC sucks
  • you’d just like an opportunity to rant about something
  • you’re in need of a new soapbox
  • you’ve got a box of soap
  • you’re in need of a box of soap
  • you’re intending to steal all of the soap from your hotel room
  • you’d like to steal all of the soap from your hotel room, but you need to a box to put it all in

Remember — if you don’t volunteer, then we’ll need to unleash the JISC Press Gang 😉
Hopefully we’ll then be able to use the topics raised by the lightning talks to help shape the rest of the session.

Presentation to the TILE Project meeting in London

About 90 minutes ago, I had the pleasure of doing a short presentation to the JISC TILE Project’s “Sitting on a gold mine” workshop in London. Unfortunately I wasn’t able to present in person, so we had a go doing it all via a video conferencing link. As far as I can tell, it seemed to go okay!
The presentation was an opportunity to formally announce the release of the usage data.
Our Repository Manager was keen to try putting something non-standard into the repository and twisted my arm into recording the audio… and I’d forgotten how much I hate hearing my own voice!!!
Anyway, as soon as SlideShare starts playing ball, I’ll have a go uploading and sync’ing the audio track. Otherwise, here’s a copy of the PowerPoint: “Can You Dig It?: A Systems Perspective” and you can hear the audio by clicking on the Flash player below…
[audio:https://library.hud.ac.uk/ppt/CanYouDigIt.mp3]
The workshop had a copy of the PowerPoint that they were running locally, so every now and then you’ll hear me say “next slide”.
I haven’t listened to much of the audio, so I’ve got my fingers crossed I didn’t say anything too stupid!!!
[edit]
Well, here’s my first attempt at SlideCasting…

Can You Dig It
View SlideShare presentation or Upload your own.

…I had no idea how much I go “erm” when presenting! :-S