Everyone likes getting distracted. My distraction is being a geek and fiddling around with code in order to automate my workflows. Ostensibly this is to make me more productive. However, I am probable kidding myself. These posts are a collection of my hacks for the Mac and iOS that assist me in my academic life.
Organising literature in Curio
I have previously written about how I use DEVONthink Pro as the repository for all of my annotations and reading briefs. And despite the amazing ability of DEVONthink Pro to find similar text and documents there is a missing element, at least for me. That missing element is the ability to link similar records in a graphical fashion that suits the way in which I think visually. Where this is important is being able to ‘see’ the connections between records in a way that a pure text based wiki is not able to do. In the below figure I have provided an example of the ‘idea graphs’ that I create in Curio for a particular topic, at little bit like a Zettelkasten. The ‘inbox’ is an album (using Curio terminology) which formats and stores items of text that I copy and dump from DEVONthink. These text figures are then dragged out onto the main canvas when I want to create connections. I then link related items to each other with arrows and apply a label to the arrow to indicate the relationship as well as apply colours or group in pinboards to organise the items.
Working with references in DEVONthink
My general workflow involves importing PDFs into DEVONthink 3, renaming them based on an Author, Date format, applying tags and labels. Bookends is the referencing program that I use to generate citations and bibliographies.
Sending text to Marked with Alfred
I have been playing around with Drafts for Mac for a little while and it has now taken over all my note taking function. Previously my notes were stored on Dropbox and accessed through a variety of text editors. One of the issues with the Mac version of Drafts, so far, is the lack of actions. However, Alfred can easily be used on text selections to automate a number of tasks. One automation is sending the draft to Marked for a nice preview (with a variety of themes based on CSS) and the ability to export to a range of formats. In Alfred create a new workflow with a trigger that takes the selected text. Pass the contents of this to the following Bash script:
Sending Airmail email to Things
While Airmail can send an email as a task to Things it is, in my opinion, missing an important part and that is the body of the email. Having the body of the email in the task note makes task management more effective. In order to achieve this the following Applescript will populate the Things quick entry panel with the first 1000 characters of the email and place a link back to the original email in the notes. One key component is trimming the characters (in order to not overwhelm the quick entry panel with text). While there might be an Applescript solution for this I instead simply call the following TextSoap action.
Using DevonThink as a work journal
Recently I spent a bit of time looking at Agenda, a note taking app that is aimed at keeping track of calendar events, meeting minutes and project notes. What I realised is that many of the attributes of Agenda can be replicated in DevonThink through the use of templates, smart groups, tags and labels.
Templates in DevonThink
The Mac version of DevonThink has the fantastic ability to create a series of templates. I have made a number of these to deal with meeting minutes and work journal entries. What is lacking in the iOS version of DevonThink is something similar. However, what I have found is that templates can be created in Drafts and then sent to DevonThink through a Drafts action.
Annotating on an iPad
The iPad is ideally suited for reading PDFs and making highlights and annotations. With the addition of the Apple Pencil highlighting PDFs got even easier and is now my preferred way of reading articles. However, I have not found an ideal solution for getting annotations into DevonThink and rely upon a series of hacks to export my highlights. There are three strategies that I use:
Bookends, Pandoc and institutional authors
I write in Markdown and use Pandoc to output Word/PDF documents. A Pandoc filter, called pandoc-citeproc, can scan the Markdown file and replace the reference placeholders with the correct citation based on a BibTex file. Bookends can export BibTex files and this is what I have been doing. However, one of the issues that has prevented me from completely going over to pandoc-citeproc has been that institutional authors are abbreviated in the output. For example Ministry of Health would look like Ministry, OH in the Pandoc processed document. I have struggled with a way to avoid manually correcting the BibTex file (can be done by enclosing institutional authors with curly brackets) and have stumbled upon the following hack in Bookends (which I use to export the BibTex file). The hack is to enter the institutional author in a user field (I have used user8) and then to create a custom format that is based on BibTex.fmt. (I have unimaginatively called mine BibTex modified.fmt). Within the format manager make the following changes to the author field in all reference types:
Linking Instapaper and DevonThink
For some time I have been using Pocket to collect research articles from various services, such as Twitter, RSS feeds from journals and news articles. While this worked well I started experiencing a number of issues with Pocket and decided to change my workflow to Instapaper. What I like about Instapaper is the ability to determine which folder to save articles to e.g. a folder on PhD related topics or a folder of primary care articles. This segregates my news feeds so I don’t have a jumble of articles in the Home tab i.e. my articles on conscientisation theory are not mixed in with my news articles about the Kardashians (as if!).
Sending base 64 encoded emails to DevonThink
DevonThink-to-go has the ability to create a new document through Base64 encoding. While this is useful for images I thought that it would also be useful for archiving properly formatted emails from Airmail. While I have previously documented how to archive an HTML formatted email into DTTG there is one major fault with this. and that is that the email that is created appears as an HTML file in DTTG (rather than an email). In order to get DTTG to recognise that a file is in fact an email there needs to be a UTI associated with the file. For emails the UTI is com.apple.mail.email. Another requirement is header information i.e.
Javascript bookmarklet and PDF Expert
PDF Expert 6 came out today and I discovered that it had a simple URL scheme for opening PDFs. Adding pdfe
to the beginning of a web URL will launch PDF Expert and the PDF is imported.
Airmail iOS to DevonThink
I am not stuck in front of my computer all day. In fact half the time I take my iPad with me and try and try and do as much as I can in iOS. I have struggled until recently to find a way in which to file emails into DevonThink-to-go (DTTG). However, in the latest release of DTTG to 2.1.3 the URL scheme has received a massive up-date including the ability to generate HTML documents and PDF documents (the later through Base 64 encoding). By creating a custom action in Airmail it is now possible to send an HTML formatted email through to DTTG. One issue though is that in my archived emails in DevonThink I like to have a link back to the original email and the senders details. The following URL scheme, triggered as a custom action in AirMail, will do just that.
Setting the metadata of a PDF in Bookends
Metadata of PDFs can be handy to have. For example in DevonThink the metadata of a PDF can be displayed in column view and give you more information than can be gleaned from the title alone. An example of how I store my PDFs in DevonThink in column view is:
Using PopClip as a research scratchpad
When I am reading through journal articles I often come across other articles and references that look like they would be good to read as well. Invariably this leads down a bit of a rabbit warren of searching for papers and inevitably losing the initial thread of my thoughts with the original article. In these cases having a scratch pad handy in which I can jot down the references to look up at a later date is useful.
Sending AirMail email to DevonThink
I spend a lot of my day managing email and so selecting a good email programme is therefore very important. Over the years I have mostly used Apple Mail but more recently I have been drawn to the power of AirMail by Bloop Software. AirMail ticks most of the buttons of what I want in an email programme, such as reminders, deferring email, markdown composing and integration with a range of other programmes. But one thing that I really wanted to be able to do was to integrate Airmail with DevonThink. My preferred workflow is to triage my email, decide on the course of action required, i.e. reply immediately, defer until later, trash or place in my task list for action. Part of the workflow also involves placing a copy of the email and any associated attachments in my project management structure managed by DevonThink. My project structure, which is created from a DevonThink template, typically looks like this:
Dealing with actions from meetings
Taking meeting minutes is a common task in academia. A critical component of good meeting minutes is recording the actions or tasks that arise out of the meeting. While recording actions is important it becomes a waste of time if those actions are not transferred into a task management system. My current task manager of choice is 2Do, which has a great URL scheme for iOS automation. By leveraging the power of Drafts, Workflow and 2Do I can convert my meeting minutes into tasks in 2Do. I achieve this by annotating actions that are required as follows:
Combining Drafts and Working Copy
Both Drafts and Working Copy form the core of my workflow in publishing posts to my Github hosted website. One of the requirements of a Jekyll hosted Github blog is that posts must be named in a particular way i.e. yyyy-mm-dd-title-of-post.md. In order to automate the naming of posts from Drafts I wrote the following Javascript to run as an action in Drafts: