browse posts: by date / by tag

All posts by tag

Tags

ableism

May 2018 A brief thought on Google Duplex

accessibility

Jul 2019 Ten braille facts / ⠼⠁⠚⠀⠃⠗⠁⠊⠇⠇⠑⠀⠋⠁⠉⠞⠎
Feb 2019 Checking Jekyll sites with HTMLProofer
Jan 2019 Red heart Monki Gras 2019: The Curb Cut Effect
May 2018 A brief thought on Google Duplex

acorn

Feb 2020 Adjusting the dominant colour of an image
Jun 2019 Converting Acorn images on the command-line

alfred

Mar 2016 Get images from the iTunes/App/Mac App Stores with Alfred
Aug 2014 A quick Alfred workflow for opening recent screenshots

alterconf

Apr 2017 Accessibility at AlterConf

amazon-dynamodb

May 2020 Getting every item from a DynamoDB table with Python
Apr 2020 Using DynamoDB as a calculator

amazon-ecs

Jan 2020 Finding the CPU and memory bottlenecks in an ECS cluster

amazon-s3

Aug 2020 S3 prefixes are not directories
Aug 2020 S3 keys are not file paths
Jun 2020 Red heart Large things living in cold places
May 2020 Illustrating lifecycle transitions in Amazon S3
Mar 2020 Finding the size and cost of each of your S3 buckets
Jan 2020 A deletion canary: testing your S3 bucket permissions
Sep 2019 Streaming large objects from S3 with ranged GET requests
Jul 2019 Listing even more keys in an S3 bucket with Python
Apr 2018 Two shortcuts for using S3 in the shell

amazon-sqs

May 2020 Moving messages between SQS queues

apache

May 2016 Finding 404s and broken pages in my Apache logs

applescript

Jul 2020 Getting a Markdown link to a window in Safari
Jun 2020 Using AppleScript to open a URL in Private Browsing in Safari
Jun 2019 Converting Acorn images on the command-line
Aug 2014 A quick Alfred workflow for opening recent screenshots
Jun 2014 Catching instapaper:// URLs from ReadKit

asexuality

Oct 2016 Red heart The A stands for Asexual

automation

Jul 2020 Getting a Markdown link to a window in Safari

aws

Sep 2020 Two Python functions for getting CloudTrail events
Jun 2020 Red heart Large things living in cold places
May 2020 Getting every item from a DynamoDB table with Python
May 2020 Moving messages between SQS queues
May 2020 Illustrating lifecycle transitions in Amazon S3
Apr 2020 Using DynamoDB as a calculator
Mar 2020 Finding the size and cost of each of your S3 buckets
Jan 2020 A deletion canary: testing your S3 bucket permissions
Jan 2020 Finding the CPU and memory bottlenecks in an ECS cluster
Dec 2019 November 2019 scripts: downloading podcasts, retrying flaky errors, Azure and AWS
Nov 2019 An AWS costs graph that works for me
Sep 2019 Streaming large objects from S3 with ranged GET requests
Jul 2019 Listing even more keys in an S3 bucket with Python
Feb 2019 Red heart Working with really large objects in S3
Jan 2019 Debugging a stuck Terraform plan
Dec 2018 Getting credentials for an assumed IAM Role
Nov 2018 Finding SNS topics without any subscriptions
Sep 2018 A basic error logger for Python Lambdas
Aug 2018 Red heart Implementing parallel scan in DynamoDB with Scanamo
Apr 2018 Two shortcuts for using S3 in the shell
Jan 2018 Red heart Getting every message in an SQS queue
Jan 2018 Listing keys in an S3 bucket with Python, redux
Nov 2017 Red heart Downloading logs from Amazon CloudWatch
Jul 2017 Listing keys in an S3 bucket with Python

aws-cloudtrail

Sep 2020 Two Python functions for getting CloudTrail events

azure

Oct 2020 Replicating Wellcome Collection’s digital archive to Azure Blob Storage

backblaze

Jan 2020 Excluding lots of folders in Backblaze

backups

Mar 2016 Backup paranoia

bash

Nov 2015 Quick shell access for Docker containers
Jul 2015 Useful Bash features: exit traps

blogging-about-blogging

Apr 2020 Getting word count stats for my blog
Jun 2019 A Jekyll filter for obfuscating email addresses

books

Sep 2015 Review: Effective Python

build-automation

Mar 2019 Red heart Creating a GitHub Action to auto-merge pull requests
Aug 2018 Selective sudo on Travis
Mar 2018 The Hypothesis continuous release process

cambridge

May 2014 Some Part IA exam advice
May 2014 Brief advice for Part II

code-terrorism

Apr 2020 Using DynamoDB as a calculator
Dec 2019 This YAML file will self-destruct in five seconds!

community-management

Sep 2018 Red heart Assume worst intent (designing against the abusive ex)
Apr 2018 (Anti) Social Media

conferences

Feb 2019 Red heart More advice on running inclusive and welcoming events
Jan 2019 Notes from You Got This 2019
Sep 2018 Signs of the time
Aug 2018 Red heart Ideas for inclusive conferences and events
Oct 2017 Lightning talks
Apr 2017 Accessibility at AlterConf
Sep 2016 Silence is golden
Sep 2016 Live captioning at conferences

data-viz

May 2018 Red heart Drawing ASCII bar charts

dates

Mar 2013 Strange clock bug in OS X
Feb 2013 Darwin, pancakes and birthdays

datetime-shenanigans

Jun 2020 Finding the months between two dates in Python
May 2020 Showing human-friendly dates in JavaScript
May 2019 Falsehoods programmers believe about Unix time

digital-preservation

Oct 2020 Replicating Wellcome Collection’s digital archive to Azure Blob Storage
Jun 2020 Red heart Large things living in cold places
Jun 2020 Archive monocultures considered harmful
May 2020 How long is my data? 💾
Feb 2020 Storing multiple, human-readable versions of BagIt bags
Feb 2020 Red heart Building Wellcome Collection’s new archival storage service
Oct 2019 Digital preservation at Wellcome Collection

docker

Jan 2020 A Docker image to run LaTeX
Dec 2017 Your repo should be easy to build, and how
Oct 2017 Using pip-tools to manage my Python dependencies
Nov 2015 Backups and Docker
Nov 2015 Quick shell access for Docker containers

domestic

Oct 2018 How to set the clock on a Horstmann Electronic 7 water heater

fandom

Jan 2017 A Python interface to AO3
Jan 2017 Experiments with AO3 and Python

finatra

Oct 2018 Custom 404 responses in Finatra

fish-shell

Oct 2014 “Missing argument at index 2” in fish

frustrations

Oct 2017 Control Centre: one step forward, two steps back

fun

May 2020 How long is my data? 💾
Jan 2020 An interactive map of British railway stations 🚂

gender

May 2020 Letter to my MP about Liz Truss and medical treatment for trans youth
Apr 2020 Thinking about your gender
Apr 2020 Red heart Adventures in euphoria and embodiment
Jun 2019 Red heart An inescapable conclusion
Jun 2019 Hey Apple, cycle tracking isn’t just for women
May 2019 Red heart Questions to ask when writing a trans inclusion policy
Oct 2018 Open consultation on the Gender Recognition Act
Nov 2017 How I ask about gender

git

Mar 2018 Notes on A Plumber’s Guide to Git
Nov 2017 Pruning old Git branches
Nov 2017 Red heart A plumber’s guide to Git
Sep 2017 Some useful Git commands for CI
Jun 2015 Useful Git features: a per-clone exclude file

github

Sep 2019 Experiment: GitHub code search with de-duplication
Mar 2019 Red heart Creating a GitHub Action to auto-merge pull requests
Jul 2018 Red heart A robot leaked my SSH keys

glitch

May 2020 How long is my data? 💾
Jan 2020 An interactive map of British railway stations 🚂
Jan 2020 Generating pride-themed Norse valknuts with Python 🌈

golang

Nov 2018 Finding SNS topics without any subscriptions

goodreads

Feb 2017 A script for backing up your Goodreads reviews

graph-theory

Apr 2020 Red heart Storing language vocabulary as a graph

graphic-design

Sep 2018 Signs of the time
Aug 2018 Making the venue maps for PyCon UK

hardware

Jul 2018 My favourite iMac accessory

harry-potter

Jan 2016 The Harry Potter Collector’s iPod
Apr 2014 Pulling back the veil

health

Jan 2019 How much sunlight affects my mood levels

history

Jul 2020 Why do programming languages have a main() function?
May 2020 The Sachsenhausen concentration camp

http-2

Sep 2015 Apple quietly adopts HTTP/2

hypothesis

Dec 2016 Another example of why strings are terrible

icloud

Jul 2018 Moving my calendars from iCloud to FastMail

imac

Jul 2018 My favourite iMac accessory

images

Jul 2020 Changing the accent colour of ICNS icons
Mar 2020 Creating striped flag wallpapers with Pillow
Feb 2020 Adjusting the dominant colour of an image
Sep 2019 Red heart Drawing with triangular coordinates in SVG
Aug 2019 Red heart Getting a tint colour from an image with Python and k-means
Oct 2016 Red heart Creating low contrast wallpapers with Pillow
Oct 2016 Red heart Tiling the plane with Pillow

inclusion

Mar 2020 Inclusion can’t be an afterthought
Oct 2019 Adding religious holidays to my calendar
Jun 2019 Hey Apple, cycle tracking isn’t just for women
Feb 2019 Red heart More advice on running inclusive and welcoming events
Aug 2018 Red heart Ideas for inclusive conferences and events

instapaper

Feb 2017 A script for backing up your Instapaper bookmarks
Jun 2014 Catching instapaper:// URLs from ReadKit

ios

Aug 2018 Do Not Distract while driving
Oct 2017 Control Centre: one step forward, two steps back
Feb 2016 Saved by the Prompt
Sep 2015 What does “Spotlight Suggestions” turn off?

iphone

Oct 2020 How do I use my iPhone cameras?

ipod

Jan 2016 The Harry Potter Collector’s iPod

javascript

May 2020 Showing human-friendly dates in JavaScript
Apr 2016 Hiding the YouTube search bar
Feb 2015 Adding checkboxes to lists
Aug 2013 Cleaning up Google Maps

jekyll

Apr 2020 Getting word count stats for my blog
Mar 2020 A Jekyll filter for adding non-breaking spaces
Jun 2019 A Jekyll filter for obfuscating email addresses
Feb 2019 Checking Jekyll sites with HTMLProofer
Oct 2017 What happens when you overengineer a static site?

keynote

Oct 2017 Displaying tweets in Keynote

kindle

Aug 2019 Removing the DRM from my Kindle books

language

Jul 2019 Ten braille facts / ⠼⠁⠚⠀⠃⠗⠁⠊⠇⠇⠑⠀⠋⠁⠉⠞⠎

languages

Apr 2020 Red heart Storing language vocabulary as a graph
Jun 2019 Red heart Reading a Chinese dictionary / 读一本中文字典

latex

Jan 2020 A Docker image to run LaTeX
Oct 2017 Red heart Four ways to underline text in LaTeX
Jul 2014 Getting plaintext LaTeX from Wolfram Alpha

linux

May 2016 Safely deleting a file called ‘-rf *’

london

Jan 2019 A delightful store for speciality spreads: Paul Rothe & Sons

macos

Sep 2020 Using qlmanage to create thumbnails on macOS
Jul 2020 Getting a Markdown link to a window in Safari
Jul 2020 Changing the accent colour of ICNS icons

make

Dec 2017 Your repo should be easy to build, and how
Oct 2017 Using pip-tools to manage my Python dependencies

markdown

Mar 2017 Red heart A few examples of extensions in Python-Markdown

maths

Jul 2019 Finding divisors of a number with Python
Oct 2016 Red heart Tiling the plane with Pillow
Mar 2015 Some exam advice
May 2014 Some Part IA exam advice
May 2014 Brief advice for Part II
Feb 2013 Darwin, pancakes and birthdays
Jan 2013 Zero

misc

Oct 2018 How do you hide a coin for 400 years?
Jul 2018 Moving my calendars from iCloud to FastMail
Jul 2018 A tip for travel instructions

mysql

Apr 2020 Exploring an unknown SQL server

notebook

May 2020 Social media as a growth culture for opinions
May 2020 Give your audience time to react
May 2020 Illustrating lifecycle transitions in Amazon S3
Apr 2020 Complex systems have complex failures
Mar 2020 Rich enough to make bad choices

opsec

Jul 2018 Red heart A robot leaked my SSH keys

os-x

Jan 2020 Excluding lots of folders in Backblaze
Mar 2019 Finding the latest screenshot in macOS Mojave
May 2016 “The document could not be saved”
Nov 2015 Export a list of URLs from Safari Reading List
Sep 2015 Apple quietly adopts HTTP/2
May 2015 One-step paste in the iOS Simulator
Mar 2015 Adding Python to the OS X firewall
Dec 2014 A script for exporting from iMessage
Nov 2013 TextMate 2 and Quick Look
Mar 2013 Strange clock bug in OS X
Mar 2013 Candybar and icon recommendations

pandemic

Apr 2020 Look out for survivor’s guilt

pelican

Dec 2014 RSS linkposts in Pelican
Sep 2014 Playing with 404 pages

personal

Jun 2020 Always read your contracts
May 2020 Red heart The friends I lost along the way
Apr 2020 Red heart Adventures in euphoria and embodiment
Nov 2019 Red heart How I scan and organise my paperwork
Jun 2019 Red heart An inescapable conclusion
Mar 2019 Red heart A day out to the Forth Bridge
Jan 2019 How much sunlight affects my mood levels
Nov 2018 Red heart My visit to the Aberdulais Falls
Apr 2018 24 hours or bust
Feb 2018 A working from home experiment
Oct 2016 Red heart The A stands for Asexual
Sep 2014 My new standing desk

photography

Oct 2020 How do I use my iPhone cameras?

pinboard

May 2020 Downloading the AO3 fics that I’ve saved in Pinboard
Jul 2017 Backing up full-page archives from Pinboard
Mar 2013 Automatic Pinboard backups

podcasts

Jan 2016 The Skeletor clip loop, 2015 edition
Jan 2015 Empire’s BBFC Ratings Podcast Special
Dec 2014 Skeletors All the Way Down
Jul 2014 Thoughts on Overcast
Jun 2014 Skeletor!
May 2013 Podcast feeds on Tumblr
Dec 2012 Hypercritical

politics

May 2020 Letter to my MP about Liz Truss and medical treatment for trans youth
Jul 2019 Section 28, and LGBTQ+ people in UK schools
Jan 2015 Register to vote – GOV.UK

privacy

Jan 2019 Thoughts on privacy and Oyster cards

productivity

Oct 2020 A new README for docstore, my tool for organising scanned paperwork
Nov 2019 Red heart How I scan and organise my paperwork
Apr 2018 24 hours or bust
Nov 2016 Some low-tech ways to get more ideas

programming

Oct 2020 The importance of good error messages
Jul 2020 Why do programming languages have a main() function?
Apr 2020 Exploring an unknown SQL server

public-speaking

May 2020 Give your audience time to react

pyconuk

Sep 2018 Red heart Assume worst intent (designing against the abusive ex)
Sep 2018 Building trust in an age of suspicious minds
Sep 2018 Signs of the time
Sep 2018 PyCon UK 2018
Aug 2018 Making the venue maps for PyCon UK
Nov 2017 Red heart A plumber’s guide to Git
Nov 2017 Using privilege to improve inclusion
Sep 2016 Silence is golden
Sep 2016 Live captioning at conferences

python

Aug 2020 Using fuzzy string matching to find duplicate tags
Jun 2020 Finding the months between two dates in Python
May 2020 Getting every item from a DynamoDB table with Python
May 2020 Downloading the AO3 fics that I’ve saved in Pinboard
May 2020 Taking tuple unpacking to terrible places
Apr 2020 Using DynamoDB as a calculator
Apr 2020 A snippet for downloading files with Python
Apr 2020 Red heart Storing language vocabulary as a graph
Mar 2020 Creating striped flag wallpapers with Pillow
Feb 2020 Adjusting the dominant colour of an image
Jan 2020 Generating pride-themed Norse valknuts with Python 🌈
Dec 2019 This YAML file will self-destruct in five seconds!
Dec 2019 November 2019 scripts: downloading podcasts, retrying flaky errors, Azure and AWS
Nov 2019 Saving a copy of a tweet by typing ;twurl
Oct 2019 Red heart Adventures in Python with concurrent.futures
Oct 2019 The rough edges of filecmp
Sep 2019 Red heart Drawing with triangular coordinates in SVG
Aug 2019 Red heart Getting a tint colour from an image with Python and k-means
Aug 2019 Removing the DRM from my Kindle books
Jul 2019 Finding divisors of a number with Python
Jul 2019 Listing even more keys in an S3 bucket with Python
Mar 2019 Atomic, cross-filesystem moves in Python
Feb 2019 Red heart Working with really large objects in S3
Dec 2018 Notes on reading a UTF-8 encoded CSV in Python
Dec 2018 Iterating in fixed-size chunks in Python
Dec 2018 Getting credentials for an assumed IAM Role
Sep 2018 A basic error logger for Python Lambdas
Aug 2018 Finding slow builds in Travis
May 2018 Red heart Drawing ASCII bar charts
May 2018 Red heart Beware of logged errors from subprocess
Jan 2018 Red heart Getting every message in an SQS queue
Jan 2018 Listing keys in an S3 bucket with Python, redux
Nov 2017 Red heart Downloading logs from Amazon CloudWatch
Oct 2017 Using hooks for custom behaviour in requests
Oct 2017 Using pip-tools to manage my Python dependencies
Sep 2017 Ode to docopt
Sep 2017 A Python module for lazy reading of file objects
Jul 2017 Listing keys in an S3 bucket with Python
Mar 2017 Red heart A few examples of extensions in Python-Markdown
Feb 2017 A script for backing up your Instapaper bookmarks
Feb 2017 A script for backing up your Goodreads reviews
Jan 2017 A Python interface to AO3
Jan 2017 Experiments with AO3 and Python
Dec 2016 A tool for backing up your message history from Slack
Dec 2016 Another example of why strings are terrible
Nov 2016 Use keyring to store your credentials
Oct 2016 Red heart Creating low contrast wallpapers with Pillow
Oct 2016 Red heart Tiling the plane with Pillow
Oct 2016 Why I use py.test
Aug 2016 Python snippet: dealing with query strings in URLs
Aug 2016 Python snippets: Is a URL from a Tumblr post?
Aug 2016 Python snippets: Cleaning up empty/nearly empty directories
Jul 2016 Python snippets: Chasing redirects and URL shorteners
Jun 2016 Reading web pages on my Kindle
Jun 2016 Introduction to property-based testing
Jun 2016 Red heart Introduction to property-based testing
May 2016 Finding 404s and broken pages in my Apache logs
May 2016 A Python smtplib wrapper for FastMail
Mar 2016 Get images from the iTunes/App/Mac App Stores with Alfred
Mar 2016 Exclusively create a file in Python 3
Dec 2015 Simpler syndication, by Dr. Drang
Nov 2015 Export a list of URLs from Safari Reading List
Nov 2015 Beyond PEP 8: Best practices for beautiful intelligible code
Nov 2015 Python and the BBC micro:bit
Oct 2015 Getting Started Testing, by Ned Batchelder
Sep 2015 Review: Effective Python
Jun 2015 Persistent IPython notebooks in Windows
Jun 2015 Safer file copying in Python
May 2015 Previewing notes from nvALT in Marked
Mar 2015 Pygmentizr
Mar 2015 Adding Python to the OS X firewall
Feb 2015 A Flask app for taking notes
Dec 2014 RSS linkposts in Pelican
Dec 2014 A script for exporting from iMessage
Dec 2014 Acronyms
Nov 2014 Unpacking sets and ranges from a single string
Sep 2014 Playing with 404 pages
Aug 2013 Finding untagged posts on Tumblr
Mar 2013 Automatic Pinboard backups
Feb 2013 Darwin, pancakes and birthdays

python-pillow

Mar 2020 Creating striped flag wallpapers with Pillow
Aug 2019 Red heart Getting a tint colour from an image with Python and k-means
Oct 2016 Red heart Creating low contrast wallpapers with Pillow
Oct 2016 Red heart Tiling the plane with Pillow

reading

Nov 2018 Keeping track of my book recommendations

regex

Jul 2020 What does \d match in a regex?
Apr 2016 Red heart Treat regular expressions as code, not magic

religion

Oct 2019 Adding religious holidays to my calendar

rust

Jul 2017 Backing up full-page archives from Pinboard

scala

Jul 2020 Running concurrent Try functions in Scala
Apr 2020 Comparing JSON strings when testing in Scala
Sep 2019 Streaming large objects from S3 with ranged GET requests
Sep 2019 Iterating over the entries of a compressed archive (tar.gz) in Scala
May 2019 Red heart Creating a locking service in a Scala type class
Oct 2018 Custom 404 responses in Finatra
Aug 2018 Red heart Implementing parallel scan in DynamoDB with Scanamo

security

Feb 2020 Red heart A remote-controlled oven is a safety nightmare
Jul 2018 Red heart A robot leaked my SSH keys
May 2018 Red heart Beware of logged errors from subprocess
Nov 2016 Use keyring to store your credentials

shell-scripting

Jul 2020 How to do parallel downloads with youtube-dl
Mar 2019 Finding the latest screenshot in macOS Mojave
Oct 2016 A shell alias for tallying data
May 2016 Safely deleting a file called ‘-rf *’
Dec 2015 Pretty printing JSON and XML in the shell
Nov 2015 Quick shell access for Docker containers
Jul 2015 Useful Bash features: exit traps
Oct 2014 “Missing argument at index 2” in fish

skeletor

Jan 2016 The Skeletor clip loop, 2015 edition
Dec 2014 Skeletors All the Way Down
Jun 2014 Skeletor!

slack

Dec 2016 A tool for backing up your message history from Slack

slides

Jan 2019 Red heart Monki Gras 2019: The Curb Cut Effect
Sep 2018 Red heart Assume worst intent (designing against the abusive ex)
Sep 2018 Building trust in an age of suspicious minds
Apr 2018 (Anti) Social Media
Nov 2017 Red heart A plumber’s guide to Git
Nov 2017 Using privilege to improve inclusion
Sep 2017 Ode to docopt
Jun 2016 Introduction to property-based testing

snippets

Sep 2018 A basic error logger for Python Lambdas

software-development

Dec 2017 Your repo should be easy to build, and how

spreadsheets

Dec 2019 Some useful spreadsheet functions: FORMULATEXT, MATCH, CONCATENATE and INDIRECT

swift

Feb 2015 Swift 1.2 improves the “let” keyword, and other improvements

television

Jun 2020 Fat shaming in The Good Place

terraform

Nov 2019 Preparing for Terraform 0.12: fixing module sources
May 2019 Finding unused variables in a Terraform module
Jan 2019 Debugging a stuck Terraform plan

textexpander

Feb 2016 How I use TextExpander to curb my language
Aug 2014 A TextExpander snippet for Amazon affiliate links

textmate

May 2016 “The document could not be saved”
Nov 2013 TextMate 2 and Quick Look

the-good-place

Jun 2020 Fat shaming in The Good Place

time-travel

Oct 2018 How do you hide a coin for 400 years?

tnmoc

Nov 2017 My favourite WITCH story

trains

Jan 2020 An interactive map of British railway stations 🚂

travis

Aug 2018 Finding slow builds in Travis
Aug 2018 Selective sudo on Travis

tumblr

Dec 2018 A script for backing up Tumblr posts and likes
Aug 2018 Avoiding the automatic redirect on Tumblr posts
Aug 2016 Python snippets: Is a URL from a Tumblr post?
Aug 2015 Finding even more untagged posts on Tumblr
Oct 2014 Notes on Tumblr
Aug 2014 Updates to my site for finding untagged Tumblr posts
Jun 2014 Finding untagged posts on Tumblr, redux
Aug 2013 Finding untagged posts on Tumblr
May 2013 Podcast feeds on Tumblr

twitter

Nov 2019 Saving a copy of a tweet by typing ;twurl
Apr 2019 Reversing a t.co URL to the original tweet

typesetting

Oct 2017 Red heart Four ways to underline text in LaTeX

ui-design

Aug 2018 Do Not Distract while driving

uk-politics

Oct 2018 Open consultation on the Gender Recognition Act

unicode

Dec 2016 Another example of why strings are terrible

wellcome

Oct 2020 Replicating Wellcome Collection’s digital archive to Azure Blob Storage
Jun 2020 Red heart Large things living in cold places
Feb 2020 Storing multiple, human-readable versions of BagIt bags
Feb 2020 Red heart Building Wellcome Collection’s new archival storage service
Oct 2019 Digital preservation at Wellcome Collection

windows

Jun 2015 Persistent IPython notebooks in Windows

wolfram-alpha

Jul 2014 Getting plaintext LaTeX from Wolfram Alpha

work

Mar 2020 Sick leave while working from home
May 2019 Red heart Questions to ask when writing a trans inclusion policy
Mar 2018 Keep an overnight bag in the office
Feb 2018 A working from home experiment

writethedocs

Sep 2016 aspell, a command-line spell checker
Feb 2016 How I use TextExpander to curb my language

youtube

Apr 2019 Getting a transcript of a talk from YouTube