These are all the things I wish existed.
Feel free to steal any of them (and please tell me if you build one! I'll definitely use it)

Email auto-forwarder

There are certain emails that I always want to automatically forward on to another address, and am currently forwarding manually. e.g:

  • Emails from should be forwarded to TripIt
  • Emails from the nursery should be forwarded to my wife

I'd like to be able to filter on:

  • Addresses in To, CC and BCC
  • Email subject
  • Email body
  • Attachments (presence + file type)

I should be able to use any combination of To, CC and BCC when forwarding on the emails, and choose if I want to also forward on attachments.

Related links:

eInk Calendar

Our house runs on digital calendars, but sometimes it's nice to see what's coming up on a shared surface.

This usually means transcribing major events on to a paper calendar periodically.

I'd like to be able to automatically show events on a shared screen

Related links:

Unsubscribe dashboard

A UI that reads all emails in a folder and shows all emails with an unsubscribe link.

Provide a way to group by sender / subject / unsubscribe URL

I'd like to be able to choose which folder this runs in (minimum Inbox + Trash, but ideally any folder/label)

Google Contacts <-> Social Images

Automatically update your contact's profile image based on social media.

Use the following data sources:

  • Gravatar (email)
  • Twitter
  • Instagram
  • Facebook
Related links:

Strip clipboard UTM parameters with Hammerspoon

Friends don't let friends share links with UTM parameters on them.

Hammerspoon provides tools to run code in response to the clipboard contents changing. It also provides tools to update the contents of the clipboard.

Putting these two things together we should be able to copy a link with UTM parameters, and by the time we paste again they should have been stripped from the clipboard.

Related links:

Kindle Highlights to `sqlite`

I'd like to browse my Kindle highlights using Datasette, which means getting them in to a sqlite database somehow.

My intention would be to build a kindle-highlights-to-sqlite CLI following the pattern that Simon W has started in the Dogsheep org

This tool must work for highlights on personal documents in addition to purchased books, which means we'll likely have to use My Clippings.txt as the data source. This can be accessed by connecting the Kindle with a USB cable and browsing the documents folder.

Related links:

ListenToTaxman CLI

Make ListenToTaxman usable from the CLI.

Output formats:

  • JSON
  • TSV

Also configure .listentotaxmanrc to configure values that rarely change e.g. "Repay Student Loan", "Pension Contribution"

Proposed usage:

# Show the gross + net wage per year, month and week on an income of £123,000
listentotaxman --time 'year,month,week' --fields 'gross,net' --output json 123000

Stretch goal: Runs 2 incomes through ListenToTaxman with the same inputs and calculates a % change for each row

Related links:

Newsletter Link Aggregator

A tool to find the most popular links within a set of newsletter subscriptions.


  • Specify the timeframe to search for newsletters (default 7 days)
  • Ability to specify a list of senders / subjects to match


  • Log in to email and fetch all newsletters based on the provided matching rules
  • Extract all URLs from the newsletter (excluding unsubscribe + "read in a browser" links)
  • Resolve the final URL of each URL
  • Strip any tracking parameters (UTM source)
  • Sort the URLs by number of occurances
  • Display URLs, highest count first

Stretch goal: Also show which newsletters the link was in, along with any comment provided by the newsletter author


Look for identical schemas in an OpenAPI document and automatically extract a component and rewrite the schema to use it.

It should be context aware, which means extracting requestBody, responseBody etc into the correct components section rather than using components.schemas for everything

Automatic Password Changes

A tool for automatically rotating passwords. Uses Puppeteer to log in through a browser and update your credentials.

My use case is for 1Password, but ideally it would work with any password manager that has a programmatic interface.


  • Read a single/all vaults from 1Password
  • Log in to a site and update the password with a generated password
  • Support OTP codes provided via 1Password
  • Adding a new site should be self contained in a single file

Initially I thought that each site would be a JavaScript file to execute, but if there are enough similarities we could make this YAML driven

Related links:

Plex Share/Unshare CLI

A CLI for sharing and unsharing specific libraries with users on Plex. Intended to disable sharing at specific times / when bandwidth is limited.

The script shown below looks like it works, but I'd like to package it up into a CLI:

# Share a specific library (defaults to all libraries) with a user
plex-library share [--library 1234567] <user_id>

Plex token, Server ID and libraries will be read from .plex.yml

Related links:

Run Alex using Spectral

Automatically check your JSON schema documents for inclusive language

Check any field that can contain text (including path, summary, description, examples, field names etc)

Related links:

Run spellcheck using Spectral

Automatically spellcheck your JSON schema documents

Check any field that can contain text (including path, summary, description, examples, field names etc)

Related links:

Create CBZ from Webcomic

Download and package webcomics into CBZ format for reading with ComicZeal

Related links:

yargs options generator

Generate Yargs options + argument definitions with a UI. Output the following configuration:

const packageDetails = require(path.join(__dirname, "package.json"));
"-a, --allow <actions>",
"comma separated list of actions to allow e.g. mheap/debug-action. May be a glob e.g. mheap/*"
"-v, --verbose",
Related links: