What I use

Last updated

10 Dec 2024

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. Because I work in the public sector, I often have to use very different software and hardware at work—mostly tech that I wouldn’t recommend to anyone. This is why the list is focused on research and home purposes. 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 the Microsoft Office suite of tools that includes Word. I’ve had to use Word for work a lot and I struggle to find much good to say about it. I do the majority of my writing for others (including this website and blog) in Markdown, or Quarto, which is basically also Markdown! 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 either Pandoc or Quarto. With Pandoc, it’s a line like bash 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”). It’s fairly similar to using Quarto to generate a Word document. For more elaborate documents, like a book manuscript, I’ve created a couple of helper tools like this quarto template.

  • Note taking. I store general notes in Microsoft OneNote but for single projects that are bigger and more complex (perhaps with many interlocking themes) I now use the truly excellent Obsidian. Obsidian is a clean text Markdown-based note-taking system that separates the data (Markdown files) from the viewer/editor in a way that means you always stay in control of your own data. If you want a seamless experience across phone, tablet, and computer, you’ll need to pay for their storage.

  • Text editor. I use Microsoft’s Visual Studio Code (with the Markdown all in one and Markdown preview enhanced extensions) for all text, including writing Markdown. Obsidian is a fine Markdown editor too. I’ve yet to try alternatives such as Ulysses, Marked, and Typora.

  • Writing papers. For papers, I’ve now switched to using Markdown/Quarto. You can find a cookie-cutter research template with paper and slides here. You can insert figures, tables, and numbers into text, including in-line, so that the paper and slides can be completely updated if the results change. That makes it perfect for reproducible analytical pipelines. You can also export to LaTeX. I still use LaTeX from time to time. Although Visual Studio Code has a LaTeX editor that’s very good, I use TeXshop for LaTeX editing.

  • Reading papers. I store papers in Zotero, which is an open source endeavour. You can support them by paying for their storage. They have an excellent iPad app too. Even better, you can sync your papers and notes with Obsidian.

Coding and development

  • Version control. I use git and GitHub.
  • 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.) I also use Docker for development, including the excellent Visual Studio Code docker extensions.
  • Cloud compute. When I need cloud capabilities, I mostly go for Google Cloud, connecting via Visual Studio Code remote (instructions in this post.)
  • Package manager. To install things sensibly on a Mac, I use Homebrew.
  • Terminal:
    • ghostty for my terminal
    • ohmyzsh for zsh configuration
    • ohmyposh as a prompt engine
    • lsd as a replacement for ls
    • wget for downloads
    • ripgrep for text-in-file search
    • llm to run local and remote large language models
    • duckdb -ui for exploring SQL databases
    • ffmpeg for converting audio and video
    • imagemagick for working with image files
    • f2 for bulk renaming files
    • Inkscape on the command line, mainly for converting things to svg
  • Programming language. My default is Python, for a whole host of reasons, with, of course, some SQL. I am a huge convert to uv and now use it to install Python, build packages, and manage repo packages. With more complex projects that require dependencies that are not pure Python (eg the PyMC package), I use the Miniconda distribution of Python with its fast extension Mamba.
  • Building Python packages. There’s a template for that!
  • Hardware. I use a 2021 MacBook Pro with the M1 Max chip, which is inexplicably powerful: so much so that, in 2001, it would have been the world’s fastest supercomputer.

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.
  • 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. Email tends to be the most common still though.
  • 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 audience and it covers a wide range of topics, 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 used to reach for beamer and LaTeX but I now use Quarto for slides because everything can be programmatically re-generated if results change, it plays nicely with code chunks and code execution, and the HTML slides you can create are pretty nice. Again, check out the research project template here
  • 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).
  • For timing how long I spend on different tasks or projects, I use a combination of Timery on top of Toggl.
  • For fonts, Nerd Fonts is good, as are the GitHub ones. For a much wider selection, there’s always Google Fonts.