Update! This post is now outdated - the import functionality on joind.in has been replaced with a CSV import.
As a conference organiser I work extensively with the site joind.in, which allows attendees to comment on sessions at a conference. Recently the site has also started supporting sessions with both times and tracks, making it indispensable as a way of keeping track of all the sessions during an event. The only downside is entering all the data into it!! Joind.in does have some import functionality, which I recently rebuilt to reflect the timings and track changes, however this only accepts XML at present, so there is still some preparation work to get your data ready to import.
I know I'm not the only conference organiser who will have this problem so here's my step-by-step guide to getting talk information into joind.in, easily and quickly. For up-to-date documentation on the joind.in import process and the official data format description, see http://joind.in/about/import.
Set up Event and Tracks
Step one is to submit your event to joind.in. When it is approved by the administrators you will receive notification and it will appear publicly on the site (joind.in also supports private events, see the website for more information).
Once it is approved, make sure the timezone is set correctly by editing your event. For me this is Europe/Amsterdam, since I'm setting up data for the Dutch PHP Conference.
If you are going to include information about the different tracks, either rooms or subject tracks, you can set these up now (if not, then skip to the next section). When viewing an event, if you are logged in and have admin rights on that event, you will see an "Event Admin" box. The "Event Tracks" screen will let you add, edit and remove the tracks for your event.
Prepare Your Data
I had the talks in a spreadsheet and I found this was a good starting point. Each row is imported independently so each one needs to contain all the information about the session. My spreadsheet had the following columns:
- Track (string name matching the track you set up earlier)
- Type (either "Social Event", "Talk", "Keynote", or "Workshop")
There was a lot of duplication here, for example lots of copied and pasted dates, but for each row to be evaluated separately, we need it to look like this. At this point I exported the spreadsheet to .csv format but joind.in currently only supports XML so I still had to built the format it could understand.
Generate the XML
I wrote a little script that processed my CSV file and spat out the XML that joind.in was expecting. There are a few pitfalls with this step:
- I'm British, so my date formats assume dd/mm/yyyy
- The import doesn't support languages (see http://github.com/enygma/joind.in/issues#issue/91)
- The script contains a function copy/pasted out of the joind.in codebase to handle the timezones calculation (because I already had it working once, I just stole it)
- The first row in the spreadsheet is assumed to contain titles and is ignored
- The script has a hardcoded timezone in it for Europe/Amsterdam
By now you can guess this use-once script is a bit of a mess but in case it is useful I am uploading it here (if nothing else, I guess I might use it again!). I considered adding support for CSV files into joind.in itself (I'm a contributor) but I was short on time - if this would be useful to you or if you have any other comments on the process then add them here and I will do my best to reply!
- Conversion script for CSV files to Joind.in XML format (use at your own peril!) csvToXml.txt - change the file extension to .php
- My original spreadsheet, in case an example is helpful talks.csv - this is the data for DPC 2010