This page contains a list of the tools I’m using for research or at home. Most of what I use regularly is free and open source software (FOSS), not because I’m ideological (you’ll see some paid apps too), but because FOSS often produces tools that are effective and convenient. As I work in the public sector, the software and hardware I use for policy work tends to be quite different and—frankly—far less productive for me personally as it involves locked-down, expensive enterprise IT that’s a long way behind the technological frontier. One of my missions is to unlock the productivity benefits of frontier tech (including FOSS) for the public sector!
Reading and writing
Document writing. I never got into Microsoft Word. I’ve had to use it for work a lot and I would struggle to find much good to say about it apart from live editing for multiple people—though the security function in one organisation I worked in asked everyone not to use this feature. I do the majority of my writing in pandoc-flavored Markdown (including this website and my blog). Some of the benefits of writing in markdown are that it’s intuitive, readable, flexible, future proof, interoperable with many other programmes, and it allows you to focus on content. If I need to get a Word document out of the end, I use pandoc to do it, with a line like
pandoc briefing.md -V geometry:margin=0.2in --standalone \ --bibliography references.bib --citeproc --csl=harvard.csl -o briefing.docx
applied to a file called “briefing.md”, a bibtex file of references (“references.bib”), and a citation style (here “harvard.csl”). For more elaborate documents, like a book manuscript, I’ve created a couple of helper tools like this quarto template.
Text editor. I mostly use Microsoft’s Visual Studio Code (with the markdown all in one and markdown preview enhanced extensions) for writing markdown, but I’m aware that there are other options out there such as Ulysses, Marked, and Typora.
Note taking. I store all my notes in Microsoft OneNote. In many ways, I’d like to have a clean text markdown-based note-taking system using something like Obsidian but I’ve found that OneNote is especially good for dumping rich media like images and URLs into notes when I’m on the go.
Writing papers. For papers, I tend to still use LaTeX. Although Visual Studio Code has a LaTeX editor that’s very good, I still use TeXshop. Co-authors sometimes want to use Overleaf, which I’m not a huge fan of, but does have some useful features and is more accessible than using version control.
Reading papers. I store all of my papers in Zotero, which is an open source endeavour. You can support them by paying for their storage. They have a good iPad app too.
Coding and analysis
- Version control. I use git (of course!) and GitHub. Occasionally co-authors ask to use Dropbox.
- Development environment. I use Visual Studio Code for almost all code, including Python and R. (I wrote a post about how to set it up for R here.) Some of the extensions I use are autoDocstring, colorize, Excel Viewer, git blame, git graph, git history, gitlens, indent-rainbow, and Jupyter. I also use Docker for development, including the excellent Visual Studio Code docker extensions.
- Cloud compute. When I need cloud capabilities, it depends. For anything light-ish that I just want to try in an isolated environment, I might just spin up a ready-built cloud environment using Github Codespaces but for more serious projects I usually go for Google Cloud, connecting via Visual Studio Code remote (instructions in this post.) I’m excited about how Google Cloud Workstations might make this all a bit easier for the wider analytical community.
- Package manager. To install things sensibly on a Mac, I use Homebrew. To make the terminal experience a bit nicer, I use ohmyzsh along with command line utilities exa as a replacement for
ls
and wget for downloads. - Programming language. My default is Python, for a whole host of reasons, with, of course, some SQL. I use the Anaconda distribution of Python and sometimes use Anaconda (or its faster extension Mamba) as a package manager1, but increasingly use Poetry instead, especially for building packages. I’m excited to see where Rye goes. I will happily dip into R too from time to time. I’m interested in learning some Rust.
- Hardware. I use a 2021 MacBook Pro with the M1 Max chip, which is inexplicably powerful.
1 I only use the ‘conda-forge’ channel.
Communication
- Email and Calendar. I use Spark (Mac) for emails, but don’t have a fancy calendar app and tend to use Apple’s default offering, Calendar. Fantastical looks interesting but because my schedule is mostly bound to a locked-down version of Outlook, a fancy calendar app isn’t all that helpful.
- Meetings. Microsoft Teams is anathema to productivity. Have you noticed how the message notifications appear over the text box that you’re supposed to write in? They’re not even trying. For calls, I tend to use Zoom if given a choice but gather.town is more fun for virtual social events.
- Communicating about analysis. Recently, I’ve ended up communicating about papers via WhatsApp, but this is unsatisfactory on multiple levels and if something more serious and sensible were needed I’d probably opt for slack or discord.
- Slide shows. My preference is to use written notes over slide decks whenever possible (you can read a bit more about why here), following the Amazon model. But you need a slide show now and again! If it’s leaning toward a general or wide-audience talk, I’ll typically use Keynote. I know it isn’t cross-platform, but you can create something that looks good in it quickly and easily—and you can export every stage of builds to PDF too. For giving talks on research papers, I’ll use beamer and LaTeX because I can automate the updating of the slides—though I might try Quarto for slides next time I need to do this.
- Website. I use Quarto and Github pages, a powerful combination. For the website code, I’m indebted to Andrew Heiss for making the code for his website available.
Misc
- For graphics, I normally go for matplotlib, which is so much more powerful than most people realise. All of the graphics in my book The Star Builders were created using matplotlib. If I need a manual programme for graphics, I normally use Inkscape, which is much better on Mac than it once was.
- I keep track of tasks with the excellent Things (Mac).