Richard Lawrence


Software I have written

I write my own programs and contribute to free software projects when I am able.

You can find me on GitHub and Bitbucket as wyleyr. If you are using any of my programs, I’d be happy to hear about it!


ox-linguistics is a package for writing linguistics-style examples in Org mode. It supports writing example sentences using ordinary Org mode lists. Examples are exported to LaTeX using a linguistics example package such as linguex or gb4e. For example:

#+ATTR_LINGUISTICS: :package linguex
1) ? A questionable example am I. <<s:questionable>>
2) Is this a question? <<q:question>>
   - Yes. <<a:yes>>
   - I don't think so. <<a:no>>

Here I refer back to sentence [[s:questionable]].

will be exported to LaTeX as:

\ex.?\label{s:questionable}A questionable example am I.
\ex.\label{q:question}Is this a question?
\b.\label{a:no}I don't think so.

Here I refer back to sentence \ref{s:questionable}.

This has a few advantages:

  • you can write examples with Org’s more pleasant syntax
  • you can easily switch from one backend package to another
  • you can use Org’s internal links to reference examples

This package currently supports simple examples in linguex and gb4e, but it does not support glosses.

Source is available on GitHub and Bitbucket.


schoolutils is a collection of utilities to track and manage student data, including a grade database, grade calculators, and more.

I wrote schoolutils because I was tired of dealing with the slow, error-prone Web interface to the grading functions on bSpace (UC Berkeley’s course management platform). I use it to keep track of my students’ grades and to perform grade calculations at the end of each semester. schoolutils makes data entry fast and easy, allows me to write my grade calculations in Python, and provides a few simple reporting functions that are useful to me as an instructor.

The package is available on PyPI here. Source is available on GitHub and Bitbucket.


email_submit is an almost-stupidly simple system for managing submissions of student assignments (or whatever) via email. It takes care of extracting attachments from emails, naming them in a consistent way, and sending replies with comments attached.

(I don’t use email_submit much myself any more, as I generally prefer to grade hard copies of student assignments. If I ever need it, I will probably merge email_submit’s capabilities into schoolutils. But in the meantime, email_submit may be useful to anyone who grades electronically.)

The source is available on Bitbucket here.

Software I use

As far as possible, I use free and open source software for all my computing, because I believe it is better for society, and because it works better for me. I describe the software I use here in the hope that it will make some people curious, not because I have a particularly unique setup.

I do most of my work in GNU Emacs, in various major modes. Emacs is my text editor, my mail reader, my organizational software, and my publishing platform.

Apart from reading and sending mail, I do almost everything in Emacs using Org Mode. Org is an incredibly powerful piece of software, and I find it absolutely indispensable; I cannot recommend it more highly. I use it to:

  • manage all my tasks, appointments and to-do items
  • store my reading list and notes
  • track my work time
  • write papers, notes on readings, teaching notes, and my dissertation
  • maintain this web site

I keep the programs I write, and all of my important textual data (including my writing and Org agenda files), under version control with git. I use magit as an Emacs interface to git.

I download my mail using OfflineIMAP. For indexing, tagging, and searching mail, I use notmuch. I use notmuch’s Emacs interface for reading mail and searching my mail database. afew takes care of automatically tagging my mail, and keeping my local tags in sync with folders on the mail server.

For encrypting email and other sensitive data (like my grade database), I use GnuPG.

Web browsing is just about the only thing I don’t do through Emacs. I use Firefox as a browser, with the following add-ons for privacy and security:

Finally, Debian GNU/Linux is my preferred operating system, though most of this software runs on other systems as well.

Author: Richard Lawrence

Created: 2018-01-10 Wed 14:14