All posts by tag
Tags
- ableism
- accessibility
- acorn
- alfred
- alterconf
- amazon‑dynamodb
- amazon‑ecr
- amazon‑ecs
- amazon‑s3
- amazon‑sqs
- apache
- applescript
- asexuality
- automation
- aws
- aws‑cloudtrail
- aws‑iam
- azure
- backblaze
- backups
- bash
- blogging‑about‑blogging
- books
- build‑automation
- cambridge
- code‑terrorism
- community‑management
- conferences
- data‑viz
- dates
- datetime‑shenanigans
- digital‑preservation
- docker
- domestic
- fandom
- finatra
- fish‑shell
- frustrations
- fun
- gender
- git
- github
- glitch
- golang
- goodreads
- graph‑theory
- graphic‑design
- hardware
- harry‑potter
- health
- history
- html
- http‑2
- hypothesis
- icloud
- imac
- images
- inclusion
- instapaper
- ios
- iphone
- ipod
- javascript
- jekyll
- keynote
- kindle
- language
- languages
- latex
- linux
- london
- macos
- make
- markdown
- maths
- misc
- mysql
- notebook
- opsec
- os‑x
- pandemic
- pelican
- personal
- photography
- pinboard
- podcasts
- politics
- privacy
- productivity
- programming
- public‑speaking
- pyconuk
- python
- python‑pillow
- reading
- regex
- religion
- rust
- scala
- security
- shell‑scripting
- skeletor
- slack
- slides
- snippets
- software‑development
- spreadsheets
- swift
- taking‑notes
- television
- terraform
- textexpander
- textmate
- the‑good‑place
- time‑travel
- tnmoc
- trains
- travis
- tumblr
- typesetting
- ui‑design
- uk‑politics
- unicode
- wellcome
- windows
- wolfram‑alpha
- work
- writethedocs
- writing
- youtube
ableism
May 2018 | A brief thought on Google Duplex |
accessibility
Jul 2019 | Ten braille facts / ⠼⠁⠚⠀⠃⠗⠁⠊⠇⠇⠑⠀⠋⠁⠉⠞⠎ | |
Feb 2019 | Checking Jekyll sites with HTMLProofer | |
Jan 2019 | ![]() | 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-ecr
Nov 2020 | A script to copy images from Docker Hub to Amazon ECR |
amazon-ecs
Jan 2020 | Finding the CPU and memory bottlenecks in an ECS cluster |
amazon-s3
amazon-sqs
May 2020 | Moving messages between SQS queues |
apache
May 2016 | Finding 404s and broken pages in my Apache logs |
applescript
asexuality
Oct 2016 | ![]() | The A stands for Asexual |
automation
Jul 2020 | Getting a Markdown link to a window in Safari |
aws
aws-cloudtrail
Sep 2020 | Two Python functions for getting CloudTrail events |
aws-iam
Dec 2020 | Creating short-lived, temporary roles for experimenting with AWS IAM policy documents |
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
Nov 2020 | How I read non-fiction books | |
Sep 2015 | Review: Effective Python |
build-automation
Mar 2019 | ![]() | 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 | ![]() | Assume worst intent (designing against the abusive ex) |
Apr 2018 | (Anti) Social Media |
conferences
Feb 2019 | ![]() | More advice on running inclusive and welcoming events |
Jan 2019 | Notes from You Got This 2019 | |
Sep 2018 | Signs of the time | |
Aug 2018 | ![]() | 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 | ![]() | Drawing ASCII bar charts |
dates
Mar 2013 | Strange clock bug in OS X | |
Feb 2013 | Darwin, pancakes and birthdays |
datetime-shenanigans
digital-preservation
docker
Nov 2020 | A script to copy images from Docker Hub to Amazon ECR | |
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
git
github
Sep 2019 | Experiment: GitHub code search with de-duplication | |
Mar 2019 | ![]() | Creating a GitHub Action to auto-merge pull requests |
Jul 2018 | ![]() | 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 | ![]() | 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 |
html
Nov 2020 | Remembering if a <details> element was opened |
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
inclusion
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
Nov 2020 | Remembering if a <details> element was opened | |
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
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 | ![]() | Storing language vocabulary as a graph |
Jun 2019 | ![]() | Reading a Chinese dictionary / 读一本中文字典 |
latex
Jan 2020 | A Docker image to run LaTeX | |
Oct 2017 | ![]() | 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 | ![]() | A few examples of extensions in Python-Markdown |
maths
Nov 2020 | Maths is about facing ambiguity, not avoiding it | |
Jul 2019 | Finding divisors of a number with Python | |
Oct 2016 | ![]() | 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 | ![]() | 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 | ![]() | The friends I lost along the way |
Apr 2020 | ![]() | Adventures in euphoria and embodiment |
Nov 2019 | ![]() | How I scan and organise my paperwork |
Jun 2019 | ![]() | An inescapable conclusion |
Mar 2019 | ![]() | A day out to the Forth Bridge |
Jan 2019 | How much sunlight affects my mood levels | |
Nov 2018 | ![]() | My visit to the Aberdulais Falls |
Apr 2018 | 24 hours or bust | |
Feb 2018 | A working from home experiment | |
Oct 2016 | ![]() | 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
Nov 2020 | How I read non-fiction books | |
Oct 2020 | A new README for docstore, my tool for organising scanned paperwork | |
Nov 2019 | ![]() | 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 | ![]() | 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 | ![]() | 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
python-pillow
reading
Nov 2018 | Keeping track of my book recommendations |
regex
Jul 2020 | What does \d match in a regex? | |
Apr 2016 | ![]() | 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
security
Feb 2020 | ![]() | A remote-controlled oven is a safety nightmare |
Jul 2018 | ![]() | A robot leaked my SSH keys |
May 2018 | ![]() | 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 | ![]() | Monki Gras 2019: The Curb Cut Effect |
Sep 2018 | ![]() | 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 | ![]() | 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 |
taking-notes
Nov 2020 | How I read non-fiction books |
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 |
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 | ![]() | 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
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 | ![]() | 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 |
writing
Nov 2020 | “Non-technical users” |
youtube
Apr 2019 | Getting a transcript of a talk from YouTube |