Jez Cope's blog on becoming a research technologist

A pain in the hand: dealing with computer-related injuries

You might have noticed that my latest spurt of blogging has been interrupted again. This time, it’s due to a recurrence of an old enemy of mine, repetitive strain injury (RSI). It’s coming back under control now and I thought I’d share what’s worked for me, but before we go any further, heed my warning:

If you have any sort of pain or numbness at all when using a computer, even if it’s momentary, take the time to evaluate your setup and see if there is anything you can change.

I can’t over-stress how important this is — RSI is a serious medical problem if allowed to get out of hand (potentially as career-ending as a sports injury can be for a professional athlete), and it can be prevented entirely by ensuring your workspace is appropriate to the way you do your work. If in doubt, seek expert and/or medical advice: many larger employers have occupational health advisors, and your GP will be able to advise or refer you to an appropriate specialist.

As a lot of intensive computer-users do, I’ve had numerous bouts of computer-related pain over the years, and at one point even had to switch to voice recognition software for several months. If you’ve ever tried to use voice recognition, especially to do any programming, you’ll understand how frustrating that can be.

Previously, I’ve had pain associated with using the mouse, so these days I tend to drive my computer primarily by keyboard. I use apps (like Emacs) that are very keyboard-friendly, and when on Linux I even use a keyboard friendly window manager to minimise my need to use the mouse at all. I also have a regular mouse at work and a trackball at home, so I’m varying the set of muscles I use to mouse with.

As a result, I use a lot of key combinations involving the Control, Alt and Windows/Command keys, and recently I’ve started having pain in my thumbs (particularly the left) from curling them under to hit the Alt and Win keys. Note: emacs users more commonly suffer from the problem known as “Emacs pinky”, but I headed that one off at the pass early on by remapping my caps-lock key as another Control key.

I’m very lucky: my workplace has a dedicated assistive technologies advisor, who has a collection of alternative keyboards, mice and other input devices, so I was able to have a chat with him, get some expert advice and try out several possible options before committing to buying anything.

Here’s what I’ve ended up with:

  • Kinesis Freestyle II USB keyboard: This keyboard is split down the middle, and allows the halves to be positioned and tilted independently to reduce the unnatural bend in my wrist, as well as putting less strain on my shoulders. Through some experimentation with this and similar keyboards, I’ve found that having the two halves parallel but about 15–20cm apart is more comfortable for me than having them close together and angled (like the keyboards made by Goldtouch).
  • Programmable USB foot pedals: These are such simple devices they can be picked up for cheap almost anywhere on the net, or even hacked together using the controller from an old USB keyboard. I have three pedals set up, with Control under my left foot, Alt under my right and Windows/Command inside Alt so I can reach it with my right foot easily. Initially, I found that I was getting some back pain after starting to use the pedals, but I’ve since realised that this was because I had them positioned awkwardly — I started over by looking at where my feet fell naturally while working and then moving the pedals into position accordingly.
  • Posturite Penguin mouse: This also helps to reduce the unnatural bend in my wrist, as well as dealing with my tendency to “anchor” or rest my forearm on the desk while moving the mouse only with my fingers and wrist. It comes in three sizes to fit your hand, and has a switch to swap the scroll wheel direction so you can swap it to your other hand from time to time. Plus it’s made by a British company!

This combination straightens my wrists out completely while typing, and is slowly eliminating (as I train myself to use the pedals) my use of the left thumb for anything other than the space bar.

I hope this is of some use to a few people out there suffering needlessly from similar problems.


Staying on top of things: Personal kanban and Getting Things Done

I use a lot of the ideas of David Allen’s Getting Things Done as the basis for my system of capturing, organising and checking off projects and tasks. I like it; it helps make sure that I’m not missing anything.

I do, however, find it somewhat lacking in the area of giving me a day-to-day tactical feel of what I need to get done. Recently I’ve been trying to fill that gap with a simple tool called personal kanban.

What is personal kanban?

Kanban boardKanban (看板 — literally “billboard”) is a scheduling system developed by Taiichi Ohno at Toyota to direct the manufacture of vehicles to minimise work-in-progress. Personal Kanban (PK) is an adaptation of the ideas behind the original kanban system for the type of knowledge work done by the majority of typical office workers.

PK has two key principles:

  1. Visualise your work
  2. Limit your work in progress

The idea is that if you can see what you’re doing (and not doing yet) you’ll feel more in control, which will give you the confidence to make a conscious decision to focus on just a small number of things at once. That in turn helps to alleviate that nagging feeling of being overloaded, while still letting you get work done.

The implementation involves moving cards or sticky notes between columns on a wall or whiteboard, a concept which is probably easier to understand with an example.

PK and web publishing

A piece of content (blog post, news article, whatever) typically moves through a fairly fixed workflow. It starts life as an idea, then the time comes when it’s ready to write, after which you might outline it, draft it, send it round for review and finally publish it.

On your whiteboard, draw up a column for each of the stages highlighted in bold in the previous paragraph, and assign each article its own sticky note. Then simply move the sticky notes from column to column as you work and experience the satisfaction of watching the system flow and seeing work get done.

It’s a great way to ensure a sensible flow of content without either working yourself to death or running out of things to publish. I’ve used a variation of this system at work for a while now to get news items and blog posts published, and I’m just starting to implement it for this blog too.

It works very well with teams too, as everyone can see the whole team’s workload. I use this to assist in coordinating a small team of PhD students who contribute stuff to our website, using the excellent Trello in place of a physical board.

PK and generic tasks

Once you’ve understood the basic concept, you can basically use it however works for you. You’re encouraged to experiment and adapt the basic idea in whatever way seems to make sense, in a kaizen-like continual improvement fashion.

While it’s useful for sets of similar tasks like blog posts, you can also adapt it to a generic task workflow. I use the following:

Tasks which could potentially be done now Doing
Tasks actually in progress Waiting
Tasks which can’t be acted on yet because they’re waiting for input from someone else Done
Completed tasks

I have this up on a whiteboard in my office, with each task on a post-it note, which allows me to see at a glance everything that I’ve got going on at the moment, and thus make sure that I’m balancing my priorities correctly — in accordance with PK principle 1 (“Visualise your work”). I also have a limit on the number of tasks that can be in “Doing” and “Waiting” at any one time (PK principle 2: “Limit your work in progress”), which helps me to make sure I’m not feeling overloaded.

I try to keep this as simple as possible, but occasionally introduce little codes like coloured stickers to help with visualising the balance when I need to. The whole point is to use the basic ideas to make a system that works for you, rather than anything that’s too prescriptive.

Of course, I can’t carry a whiteboard around with me, so when I’m out of the office for a while I’ll transfer everything to Trello, which I can access via the web and on my phone and iPad, or even just take a photo of the board.

Combining PK with GTD

GTD is a great system for making sure you’re capturing all the work that needs to be done, but I’ve always been dissatisfied with its ideas about prioritising, which are based on:

  1. Context (where you are/what facilities you have access to)
  2. Time available
  3. Energy (how tired/refreshed you are)

Organising tasks by context has always felt like unnecessary detail, while worrying too much about time and energy on a task-by-task basis seems like a recipe for procrastination (though managing time/energy on a more general level can be useful).

I’ve ended up with a two-level system. GTD is for strategic purposes: tracking projects, balancing long-term priorities and making sure nothing slips through the cracks. Kanban is a much more tactical tool, to help see what needs to be done right now, this week, or later on.


Reading the Hugo winners list

This year, I’ve decided to make a project of working through the winners of the Hugo Award for Best Novel. The Hugos are one of the biggest English-language science fiction and fantasy awards going. Late last year, I came across the list looking to broaden my reading (I tend to fixate on individual authors and devour entire canons of work before moving on) and realised I’d already read quite a few, and there were quite a few more that I had my eye on to read soon.

I’ve already been distracted by the epic Great Book of Amber (all 10 of Robert Zelazny’s Amber novels in a single mighty volume — I’ve wanted to read it for ages and I got it for Christmas), but I’m enjoying the variety. So far, I’ve read Kim Stanley Robinson’s Green Mars and Blue Mars, having started the Mars trilogy before Christmas, and Zelazny’s classic Lord of Light (watch out for The Pun!), and I’m currently enjoying The Left Hand of Darkness by Ursula K. Le Guin.

Winners I’d already read:

  • Starship Troopers, Robert Heinlein
  • Dune, Frank Herbert
  • Ringworld, Larry Niven
  • Rendezvous with Rama, Arthur C. Clarke
  • The Fountains of Paradise, Arthur C. Clarke
  • Foundation’s Edge, Isaac Asimov
  • Neuromancer, William Gibson
  • Hyperion, Dan Simmons
  • Harry Potter and the Goblet of Fire, J. K. Rowling
  • The Graveyard Book, Neil Gaiman
  • Redshirts, John Scalzi

Open Access Button: getting research to the people who need it

Open Access Button Every day people around the world such as doctors, scientists, students and patients are denied access to the research they need. With the power of the internet, the results of academic research should be available to all. It’s time to showcase the impact of paywalls and help people get the research they need. That’s where Open Access Button comes in.

The Open Access Button is a browser plugin that allows people to report when they hit a paywall and cannot access a research article. Head to to sign up for your very own Button and start using it.

I just want to flag up this cool project that’s trying to improve access to scholarly literature for everyone. I’ve been involved with the project from the start, helping to figure out how to tie it in with open access repositories, but it’s medical students David Carroll and Joe McArthur who deserve the credit for coming up with the idea and driving it forward.

To date, more than 5,000 blocked articles have already been logged. It even got mentioned in the Guardian! Take a look, give it a try or even get involved:

How did I get involved?

Last year, I spent some free time creating an experimental web tool to look up Open Access1 versions of scholarly articles from their DOIs2. There is already a system for getting the official version of record for any DOI, but it struck me that where that version is hidden behind a paywall and a free version is available elsewhere, it should be just as easy to find that.

This work got noticed by a group of people at a hack day3, which resulted in my contributing to their project, the Open Access Button. The primary purpose of the OA Button is to allow people to report whenever they hit a paywall while trying to read an article (so that the scale of the problem can be visualised), and as an added bonus, we’re adding functionality to help gain access through other channels, including finding green open access versions and contacting the corresponding author.

  1. “Open Access” refers to content which is freely available for all to read and use (usually referring to scholarly articles that publish the results of academic research), as distinct from that which is only accessible by paying a fee (either per-article or a as subscription to a journal).

  2. A Digital Object Identifier (DOI) is a unique string of characters that identifies a published object, such as an article, book or dataset. They look something like this: 10.1000/182.

  3. A hack day is an opportunity for developers and non-developers to get together and prototype projects without any risk of loss or ridicule if things don’t work out — great for getting the creative juices flowing!


Getting Things Done with Emacs and org-mode


As I’ve mentioned previously, I periodically try out new task management software. The latest in that story is Emacs and Org-mode.

What is Org?

In its creator’s own words, Org is:

“for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system”

It started as an Emacs extension for authoring documents with some neat outlining features, then went mad with power and became a complete personal information organiser.

But wait, what the **** is Emacs?

Emacs is the mother of all text editors. It’s one of the oldest pieces of free software, having been around since the dawn of time 1970’s, and is still under active development. Being so venerable, it still cleaves to the conventions of the 70’s and is entirely keyboard-controllable (though it now has excellent support for your favourite rodent as well).

“Text editor” is actually a pretty loose term in this instance: it’s completely programmable, in a slightly odd language called Elisp (which appeals to my computer scientist side). Because many of the people who use it are programmers, it’s been extended to do almost anything that you might want, from transparently editing encrypted or remote (or both) files to browsing the web and checking your email.

My needs for an organisational system

In my last productivity-related post I mentioned that the key properties of a task management system were:

  • One system for everything
  • Multiple ways of structuring and viewing tasks

I would now probably add a third property: the ability to “shrink-wrap”, or be as simple as possible for the current situation while keeping extra features hidden until needed.

And Org very much fits the bill.

One system for everything

Emacs has been ported to pretty much every operating system under the sun, so I know I can use it on my Linux desktop at work, my iMac at home plus whatever I end up with in the future. Because the files are all plain text, they’re trivial to keep synchronised between multiple machines.

There are also apps for iOS and Android, and while they’re not perfect, they’re good enough for when I want to take my todo list on the road.

Multiple ways of structuring and viewing tasks

Whatever I’m doing in Emacs, an instant agenda with all my current tasks is only two keystrokes away. That’s programmable too, so I have it customised to view my tasks in the way that makes most sense to me.

Shrink wrapping

Org has a lot of very clever features added by its user community over its 10+ years, but you don’t have to use them, or even know they exist, until you need them. As an illustration, a simple task list in Org looks like this:

* TODO Project 1
** TODO Task one
** TODO Task two

* TODO Project 2
** DONE Another task
** TODO A further task

And changing TODO to DONE is a single keystroke. Simplicity itself.

Here’s Carsten Dominik on the subject

“[Org-mode] is a zero-setup, totally simple TODO manager that works with plain files, files that can be edited on pretty much any system out there, either as plain text in any editor …

Of course, Org-mode allows you to do more, but I would hope in a non-imposing way! It has lots of features under the hood that you can pull in when you are ready, when you find out that there is something more you’d like to do.”

Wow, what else can it do?

“I didn’t know I could do that!”

If that’s not enough, here are a few more reasons:

  • Keyboard shortcuts for quick outline editing
  • Lots of detailed organisational tools (but only when you need them):
    • Schedule and deadline dates for tasks
    • Flexible system for repeating tasks/projects
    • Complete tasks in series or parallel
    • Arbitrary properties, notes and tags for tasks and projects
  • Use the same tools for authoring HTML/LaTeX documents or even literate programming
  • It’s programmable! If it doesn’t have the functionality you want just write it, from adding keyboard shortcuts to whole new use cases (such as a contact manager or habit tracker)

Give it a try

Emacs is worth trying on its own, especially if you do a lot of programming, web design or anything else that involves a lot of time editing text files. A recent version of Org is bundled with the latest GNU Emacs, and can easily be updated to the current version.


OA DOI resolver status update

So, as you’ll have seen from my last post, I’ve been putting together an alternative DOI resolver that points to open access copies in institutional repositories. I’m enjoying learning some new tools and the challenge of cleaning up some not-quite-ideal data, but if it’s to grow into a useful service, it needs several several things:

A better name

Seriously. “Open Access DOI Resolver” is descriptive but not very distinctive. Sadly, the only name I’ve come up with so far is “Duh-DOI!” (see the YouTube video below), which doesn’t quite convey the right impression.

A new home

I’ve grabbed a list of DOI endpoints for British institutional repositories — well over 100. Having tested the code on my iMac, I can confirm it happily harvests DOIs from most EPrints-based repositories. But I’ve hit 10,000 database rows (the free limit on Heroku, the current host) with just the DOIs from a single repository, which means the public version won’t be able to resolve anything from outside Bath until the situation changes.

Better standards compliance

It’s a fact of life that everyone implements a standard differently. OAI-PMH and Dublin Core are no exception. Some repositories report both the DOI and the open access URL in <dc:identifier> elements; others use <dc:relation> for both while using <dc:identifier> for something totally different, like the title. Some don’t report a URL for the items repository entry at all, only the publisher’s (usually paywalled) official URL.

There are efforts under way to improve the situation (like RIOXX), but until then, the best I can do is to implement gradually better heuristics to standardise the diverse data available. To do that, I’m gradually collecting examples of repositories that break my harvesting algorithm and fixing them, but that’s a fairly slow process since I’m only working on this in my free time.

xkcd: Standards

Better data

Even with better standards compliance, the tool can only be as good as the available data. I can only resolve a DOI if it’s actually been associated with its article in an institutional repository, but not every record that should have a DOI has one. It’s possible that a side benefit of this tool is that it will flag up the proportion of IR records that have DOIs assigned.

Then there’s the fact that most repository front ends seem not to do any validation on DOIs. As they’re entered by humans, there’s always going to be scope for error, which there should be some validation in place to at least try and detect. Here are just a few of the “DOIs” from an anonymous sample of British repositories:

  • +10.1063/1.3247966
  • /10.1016/S0921-4526(98)01208-3
  • 0.1111/j.1467-8322.2006.00410.x
  • 07510210.1088/0953-8984/21/7/075102
  • 10.2436 / 20.2500.01.93
  • 235109 10.1103/PhysRevB.71.235109
  • DOI: 10.1109/TSP.2012.2212434
  • ShowEdit 10.1074/jbc.274.22.15678
  • <U+200B>10.<U+200B>1104/<U+200B>pp.<U+200B>111.<U+200B>186957

In some cases it’s clear what the error is and how to correct it programmatically. In other cases any attempt to correct it is guesswork at best and could introduce as many problems as it solves.

That last one is particularly interesting: the <U+200B> codes are “zero width spaces”. They don’t show on screen but are still there to trip up computers trying to read the DOI. I’m not sure how they would get there other than by a deliberate attempt on the part of the publisher to obfuscate the identifier.

It’s also only really useful where the repository record we’re pointing to actually has the open access full text, rather than just linking to the publisher version, which many do.

A license

Ok, this one’s pretty easy to solve. I’m releasing the code under the GNU General Public License. It’s on github so go fork it.

And here’s the video I promised:


Resolving DOIs with green OA copies

The other week I was at a gathering of developers, librarians and researchers with an interest in institutional data repositories. Amongst other things, we spent some time brainstorming the requirements for such a repository, but there was one minor-sounding one that caught my imagination.

It boiled down to this question: given only the DOI for a published article (or other artefact), how do you find an open access copy archived in an institutional repository? Some (rather cursory) Googling didn’t come up with an obvious solution, so I thought “How hard can it be to implement?”.

All that’s required is a database mapping DOIs onto URLs, and a spot of glue to make it accessible over the web. The data that you need is freely available in machine-readable format from most repositories via OAI-PMH, so you can fill up the database using that as a data source.

So, without further ado here it is:

A few caveats:

  1. I don’t get much chance to write code at work at the moment, so this was an opportunity to exercise under-used brain muscles and learn some new stuff. It could probably be done better (and the source code is on github, so feel free to fork it and add improvements). It’s written in Ruby using the awesome Sinatra web framework.
  2. It’s currently hosted on Heroku’s free starter-level service, so there’s very little capacity. It therefore only includes DOI’s from the University of Bath’s Opus repository, and the database is full.

Go try it out and let me know what you think. If it’s useful, I’ll look into how I can make it more robust and resolve more DOIs.


Task management: Things vs. OmniFocus

It’s taken a while for me to realise it, but I’m a bit of a list-maker. Some years ago I read David Allen’s Getting Things Done (often abbreviated as GTD) and found some useful tips that have had a big impact in how I manage my tasks and my time.

There are heaps of apps to help you Get your Things Done, but I generally seem to oscillate between two: Omni Group’s OmniFocus and Cultured Code’s Things. The choice between the two is closely balanced in my head, and I seem to end up switching every 12-18 months. Until recently, Things’ lightning-fast cloud sync had be, but now OmniFocus has tempted me back with its general feature-richness.

Some key factors for me:

  • One system for everything:
    • One system that syncs across computers and mobile devices, so I always have it with me;
    • One system for work stuff and personal stuff, because sometimes I need phone my bank while at work and sometimes the solution to a work problem comes to me while watching TV;
  • Multiple ways of structuring and viewing tasks:
    • When I need to check that I’ve captured all my tasks, I need to view them by project to see what’s missing;
    • When I need to actually do things, I need to see my tasks by context, i.e. what equipment/location is required to do them.

Aside: switching is not inefficient

You might think that it’s a waste of time laboriously transferring all my projects and tasks from one system to another, but it’s really not. This only happens once every 12-18 months, and it’s a great way to do a full audit of everything I want to achieve, spot what’s missing and cull the dead wood.

Even if you have one task management system that works for you, I suggest you try occasionally printing the whole lot off (on real dead trees) and re-entering the important stuff. Because it takes more effort, it makes you more ruthless in what stuff you allow onto your todo list and sharpens your focus on what’s important.

OmniFocus vs. Things

OmniFocus’ strength is it’s flexibility. Each task has not only a title and a checkbox, but a project, a context, a start date, a due date, an expected amount of effort and, if that’s not enough, a freeform note field. It has a rich, hierarchical structure for projects and tasks, and the ability to create customised views of the system or “perspectives”.

Things, on the other hand, strives for simplicity. It lacks much of the complexity of OmniFocus and replaces it with tags. Tags can be hierarchical, which is handy, and because you can assign more than one to a task, you can actually use them to replicate a number of OmniFocus’ detail fields.

Things is pretty good…

That simplicity means that there’s very little effort involved in using Things — just throw in your tasks and get started. You can assign one or more tags to each task and then filter on those, and that allows you replicate quite a lot of what OmniFocus allows.

The other area where Things beats OmniFocus is in synchronisation. Every time you make a change in Things it’s synced up to the cloud, and updating another app takes moments. There’s no need to manually initiate a sync, so everything is always available everywhere.

…but OmniFocus is winning

Sooner or later, though, the lack of expressiveness in Things gets to me. OmniFocus panders to my desire for structure: I can have tasks from any project (or any part of a project) appear one at a time or all at once. That all takes a little more time to set up (though it soon becomes second nature), but it means when I actually want to get on with work I see only the tasks I need to see and no more.

OmniFocus’ perspectives are another example of where the extra power is useful. It’s trivial to set up one-click views that only show a certain set of projects (such as work stuff) or a particular set of tasks (such as things I can do offline), or even just group tasks differently (such as by due date or age).

Finally, the iPad app for OmniFocus has a killer feature: Review mode. This makes it trivial for me to sit down at the end of each week with a cup of tea and go through the entire system, finishing off loose ends and capturing next actions. This is central to the GTD way, and is the part of my routine that guarantees everything is in order and nothing gets missed.

Of course there are plenty of situations where you don’t need all of this complexity, and that’s fine too. It doesn’t force you into using all of the features to have a functioning system: you only have to use what you need for the current situation.

What about you?

So there you have it. I’d be interested in finding out how you use OmniFocus or Things, or if you have your own preferred system. There are even people who implement GTD using a biro, a binder clip and a stack of 6x4” index cards.


Twitter favourites by daily email

I quite often favourite tweets that I want to come back and refer to. Unfortunately, I rarely actually get round to going back over my favourite tweets, so I wanted a way to get them into an inbox that I check regularly (á la Getting Things Done).

I finally got round to figuring this out the other day, so here’s my recipe:

  1. You can get an RSS feed of your favourites using a URL of the form, though obviously you should replace “jezcope” with your own Twitter handle.
  2. Once you’ve checked that’s working, copy it and feed it to a daily email digest generator. I’m currently trying blogtrottr which seems to be working well and gives you the option of checking at a range of frequencies from 1 to 24 hours.

That’s it — pretty simple huh? You’ll probably get an email containing all of your favourites to start, and then future emails will contain just the latest favourites.


Links for #UoBSocial blogging session

Here are a few links to things that I mentioned (and maybe a few that I didn’t) in today’s briefing session for University of Bath researchers. Please feel free to leave your own suggestions, or links to your own blog, in the comments at the bottom.

Reading blogs

Once you start following more than two or three blogs, you might find it easier to use a piece of software called a “feed reader” or “news aggregator” (or other similar terms) to do the hard work and collect all the new posts in one place. Here are a few options:

  • Google Reader — web based
  • FeedDemon — Windows (optional sync with Google Reader)
  • Reeder — Mac, iOS (Google Reader account required)
  • Feedly — Browser plugin, iOS, Android (Google Reader account required)
  • All major web browsers now have some sort of feed reader built in too

Technorati and Google Blog Search are good ways to find something to read.

Ways to blog


The simplest way to start a blog is to use a service (free or paid-for) which handles everything for you. Here are some examples:


If you’re a bit more technical and/or demanding, you may prefer to host your own blog on a server. Here are some examples of software that will help:

Other tips