by Giles Strong

Cover photo unrelated – it’s just some rad fractal broccoli.

Just over one and a half years ago I wrote a post on some of the tips and tricks I’d found useful in trying to organise myself and improve my efficiency. Searching for a post topic, it was suggested that I revisit this to compare how my workload and approaches have changed, so here goes!

When I started my research position here, my day basically consisted of analysis work, presenting my results and progress, scientific outreach, and PhD lectures. The evenings and weekends were taken up with Portuguese lessons, practising a martial art and two musical instruments, and of course cooking.

In terms of how this workload has changed, it has of course grown. The next month after my original post, I began attending workshops and schools, and for a few months was spending a week(end) at home followed by a week somewhere else. I also gained some supervisory role of internship students. Began presenting more frequently at various CERN meetings. Worked towards paper deadlines. Took up extra work tasks in my experimental collaboration. Additionally, my holiday in Japan inspired me to begin re-learning the language (I’d spent three years at school studying it – and promptly forgotten most of it).

Unfortunately, my time available to pack this all in hasn’t changed, so efficiency and useful tools are required:

Trello

I mentioned this before, but its use has only grown with time. Essentially it’s a digital pinboard where one can create notes and checklists, organised into lists on boards. Each item can be commented on (in Markdown), contain pictures, link to cloud storage, et cetera. Additionally, it supports teams of people, so can be a quick and convenient way to distribute information and check progress within a group.

Normally, every project/task I work on, or workshop I attend, gets a board to help me organise. Recording my progress can also be useful if I’ve not touched something for a while and have forgotten where I’d got to. I also have a a general “To Do List” board, all organised by priority, deadline, and tasks I’ve set aside for the weekend.

Email

Working as part of a 3000+ collaboration within a 10,000+ research organisation, I receive the odd couple of emails a day (but a lot less than some people, I’m sure). A lot of these will be unrelated to my work, or otherwise irrelevant, and more often than not I’ll simply click ‘Mark As Read”.

Of course it’s possible that I might accidentally miss something relevant, so to reduce this chance I’ll normally set up rules to direct incoming mail from the people I’ve worked with in the past to a separate folder, and these normally get read.

The rest go to a different folder and I’ll normally just read the subject and text-body preview before deciding whether to read the rest.

The relevant emails I’ll mentally group into ones which require little work to ‘solve’ (e.g. adding a meeting to my calendar or saving a document), and ones which require more effort (e.g. answering some technical questions or reading a paper). I’ll then solve the quick emails in chronological order.

Working through longer emails depends on the action required: if it’s urgent then I’ll get it done there and then, if it has a non-imminent deadline I’ll add a note on my Trello board and flag/pin the email and move on. The remaining ones (long/technical emails which just need to be digested) I’ll identify after a quick scan of the text and flag/pin until I have a spare moment to read them.

However, what I have found, is that I’ll instinctively check my emails every few minutes, which is quite disrupting and renders the previously described binning scheme a bit redundant. What I’m thinking I might set up is a notification system to remind me to check my emails every (half-)hour during work hours, and keep the tab closed unless I’m waiting for a particular reply. Can anyone recommend such a system?

Slack / Mattermost

As an alternative to emails, AMVA4NewPhysics has been using Slack for a while now, and personally I think it’s great. Essentially it’s an instant-messenger platform, divided into channels. It also supports integration with other systems like Google Drive, Gitlab/hub, and Trello.

Users subscribe to channels of interest/relevance and when someone posts to a subscribed channel, the favicon changes appearance, unintrusively notifying other users of the post. Additionally one can @mention users, or all channel subscribers, and direct message (groups of) users. These more direct messages can also appear as desktop notifications or email reminders.

Overall I think it’s increased levels of communication within our network, and helped deal with the fact that we’re often working on similar tasks/problems, but separated across ~10 different countries.

Virtual Machines

Working in machine learning, a lot of time is required to train the algorithms we use. Initially I simply did this on my laptop, which meant that I then could not run anything else CPU/RAM intensive for a few hours/days. Which was a big loss in potential work.

Last year, though, I finally took the time to set up three virtual machines, which I can connect to via the internet and use normally thanks to SSH tunneling. My workcycle now is to develop and test locally, and then push the working code to a VM and let it chug away on it’s own.

Since each CERN user has a free allocation, I use OpenStack for my VMs, but there’s a whole load of potential platforms depending on one’s requirements and budget.

Jupyter & Git

Jupyter (method of interactive code development) and Git (version control) are both great tools in their own right, but as I mentioned earlier, sometimes it’s easy to forget where one got to in a task, or how exactly one made some calculation or arrived at a result.

I particularly like the way a Jupyter notebook is effectively a self-documenting experiment: all the code, results, and graphs are in one place, and one can embellish the procedure with Markdown comments. Git tags can then be used to safely overwrite old versions and still have a way of checking back on earlier results without having to clutter up the repository with old copies.

Online Calendars

Mentioned last time; still as important as ever. Recently I moved to using Google Calendar instead of the one in MS Outlook and am definitely preferring it, especially after a GUI update last year.

Incidentally, Google also does a cloud note-writing thing called Keep, which is pretty cool. I don’t use it much, but find it useful for taking notes on my tablet if I don’t have internet (Trello can be a bit funny in offline use).

Cooking list

I wrote about bulk cooking last time, but sometimes I find it difficult thinking of just what to cook in the first place. Simple solution: I made a list of meals, along with how many portions I can get out (and cost per portion) of it. I find it a quick way of working out what I want to make, and it prevents me from forgetting about a few recipes I enjoy, but rarely cook, or want to try cooking but haven’t yet.

What I think would be really cool is a system which keeps track of one’s grocery inventory and suggests meals according to what needs using up, one’s preferences it’s learnt from past meals, seasonal-produce availability, et cetera. Maybe I’ll try and design something one day…

Meditation

Again, I mentioned this last time, but sadly this kind of worked its way out of my daily schedule. I definitely want to try and fit it back in, and would still recommend it to anyone that’s thought about giving it a go. Basically, you just want to find somewhere quiet to sit down for 10-15 minutes and focus on taking long, deep breaths. Simple enough, but I remember feeling a lot calmer when I practised daily.

Focuses and goals

My current work can be divided into several tasks: working on my main analysis at CMS, that is training neural networks to classify particle collisions, writing supporting code, considering systematic uncertainties, and extracting limits on particle theory; developing two separate plugin algorithms for CMS to identify a certain type of particle and to reduce the uncertainty in a particular kinematic measurement; and fulfilling the requirements of my PhD.

Rather than trying to juggle all these tasks at once, I’ve been experimenting with the way I allocate my time. Initially I tried working for half a day on each task, cycling them round, but I found that this wasn’t enough time to feel I was making sufficient progress on each task. Similarly, a week on each seems too long, especially when some level of progress is expected on each task.

My current approach is based on milestones; deciding that I want to get a particular task to a specified point before moving to focus on the next. These could be: getting a system setup up by Friday afternoon so I can let it run over the weekend; working to get a nice new set of results for a meeting next week; or getting some data to process correctly into the right format. A point which is measurable, requires some work to reach, but isn’t going to take weeks.

I think this has several advantages: when I come back to a task I know exactly where I left off, and have had time to think about the next step and what potential problems I might run into; it keeps each task (and my enthusiasm for it) from stagnating; and it allows me to provide a more comprehensible report of my progress at meetings – “I’ve been working on this” becomes “I implemented this feature”.

Anyway, that’s it for this time. The list hasn’t changed too much since last time, but there are a few new things here. If you’ve got any suggestions of your own, I’d really like to read them. Cheers!