Here's Some Links, Apr 2, 2023

Here’s what I’ve enjoyed over the last few weeks. These will continue to be a little all over the place, but that is just a reflection of who I am.

For more, follow on Mastodon to Mastodon Profile to Mastodon Profile

At this point I’m just coming up with reasons to play with the Mastodon API. I don’t know. I haven’t used in years but I started again recently just because I love logging things. I was also thinking what if I could automatically update my Mastodon profile with dynamic content. Mastodon profiles, by default, have up to four fields you can customize the label and content of. A common use for one of the fields to list their pronouns, link to their website, or share their location, so why not your last played track from My script works can work in two ways: it will look for a field titled and set the value to the last played track, or it will look for a field value of a url and set the field title to the last played track.

This script requires but it can easily be converted to just run with Node. You will need to setup the config portion of the script with your username, API key, Mastodon instance, and Mastodon token. I hope that doesn’t sound like a lot. I’ve documented the code a bit to help you through all of this.

As always, if you have an questions or need help reach out to me on Mastodon.

My Essential Apps

My Essential Apps

I often recommend a lot of apps for different platforms to people, so I decided to catalogue them recently. I admins, it is a little much, lol, and I don’t know how I’m going to keep it updated. I might not, but a lot of these apps have been with me for a long time.

I do want to comment on how I listed the prices: the cost to avoid subscriptions is what I listed. Some of these apps are free, and you may not need to pay for them, or you could pay less, but I thought it was important to set expectations up front.

How to Verify Your Commits

Anyone can be anyone when it comes to commits. For example, here is a commit where ””Linus Torvalds”” deletes Linux. I put this document together for myself a while back, but I thought I would share it with other people who want a straightforward guide to setting up commit signing with GPG.


  1. Install gpg brew install gnupg2 (or sudo apt-get install gnupg2, etc)
  2. Generate the key with gpg --full-generate-key (the default type is probably fine)
  3. Make sure it is at least 4096 bits
  4. Make sure you use your Github no-reply email or an email provided to your Github account.
  5. Get the signing key by running gpg --list-secret-keys --keyid-format=long
  • In the following list, the signing key is 3AA5C34371567BD2
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot 
ssb   4096R/42B317FD4BA89E7A 2016-03-10
  1. Get your public key by running gpg --armor --export YOUR-SIGNING-KEY-HERE | pbcopy
  2. Add your gpg key to your Github key settings
  3. Turn on Vigilant mode at the bottom of that page.
  4. Add your signing key to your Git config git config --global user.signingkey YOUR-SIGNING-KEY-HERE
  5. To sign all commits run git config --global commit.gpgsign true
  6. Add the GPG export to your zshconfig echo 'export GPG_TTY=$(tty)' >> ~/.zshrc;

For Mac

  1. Mac: You can let Keychain manage your pin entry by running brew install pinentry-mac
  2. Tell gpg about it with echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf
  3. Restart gpg agent killall gpg-agent

Backup Key

  1. Export the public key gpg --export -a YOUR-SIGNING-KEY-HERE > gpg-public.asc
  2. Export the private key gpg --export-secret-keys -a YOUR-SIGNING-KEY-HERE > gpg-secret.asc
  3. You now should have two files gpg-public.asc and gpg-secret.asc in your current directory

Restore Key

  1. Import the public key gpg --import gpg-pub.asc
  2. Import the secret key gpg --import gpg-sc.asc


Here's Some Links, Feb 16, 2023

I’m trying to get better at bookmarking and categorizing things so I can find them later. In the process, I’ve started posting the links I’m excited about to Mastodon from time to time, and now I’m collecting some of them here.

For more, follow on Mastodon

Only Mutuals. That was the joke I couldn’t get out of my head. So I decided to make a website that only my mutual followers could access. Nothing risqué, just things for my friends: like the wallpapers I used to design and so on.

While I had been playing with the Mastodon API, I had not been playing with the authenticated part. So I built an application that authenticates you with your Mastodon server and then checks to see if you are following me and if I am following you back. Nothing too fancy.

Over the past few months, I decided to familiarize myself with how the Mastodon APIs work across all servers, so I put together this site for simply viewing and sharing links to Mastodon posts. It’s very simple and minimal, but it also makes sharing very convenient on platforms like iMessage where you can’t see the content of a post.

I also used this as an opportunity to play around with some NextJS 13 features that I wanted to try out. If you are interested, head over to the repository on GitHub.

Checking Your SF Jury Summon

Checking Your SF Jury Summon

In San Francisco, when we get summoned for jury duty, we are lucky enough to have a website to check that tells us it will be updated at 4:30 pm on weekdays. It’s a pretty simple website, which makes it perfect for automating this task.

Ask Siri

You can use the on your Apple Watch, iPhone, iPad, and Mac. You will need to add your group number to the script for this to work.

Get San Francisco Jury Duty Status.shortcut

Home screen widget

There is a great app for iPhone and iPad called Scriptable that lets you write and run JavaScript that can make home screen widgets. You will need to set your group number on line with const GROUP_NUMBER.

Get SF Jury Duty Widget.js for for

I’ve just started playing around with, and I’m enjoying my time playing around with all they have to offer.

I wanted to build a quick and easy way into iOS and macOS to use parts of I created three shortcuts with the Apple’s Shortcuts for PURLs (short urls), Paste (like GitHub Gist), and Statuslog (a log of “what are you doing now”).

All are available to use directly or from the share sheet in iOS or from Quick Actions in macOS.

  • Create PURL
    • Requirements: account name, purl domain, and API key
    • Accepts: URLs and text
    • Returns: a purl url
  • Create Paste
    • Requirements: account name, paste domain, and API key
    • Accepts: Text-based files and raw text
    • Returns: a paste url
  • Post Statuslog
    • Requirements: account name and API key
    • Accepts: text
    • Returns: a status url

I hope you find these useful. Feel free to contact me on Mastodon with any feedback you may have.

Lil Gator Game

Lil Gator Game

I feel like this cute little fellow got left off of so many best of 2022 lists because it came out so late in the year, but gosh it is great. If you like A Short Hike, you will definitely enjoy this lil gator’s journey.

My 2022 in Media

What even is time anymore? Everything feels like it’s still 2020. This was the year knowing the days of the week went out the window. What I can remember is: playing every Yakuza game and watching Smosh and Good Mythical Morning to keep myself grounded.


My girlfriend and I got in to watching anime together and at a terrific time. I don’t recall anyone talking about Pop Team Epic’s new season??? That’s weird.

  • Spy × Family
  • Chainsaw Man
  • Pop Team Epic Season 2
  • Lycoris Recoil


This year I got in to listening to FLACs and other lossless audio files. I’m still not sure if I hear a difference but it all sounds so good.

  • BETWEEN 1&2 by TWICE
  • Mannequin by DECO*27
  • Sanketsu-girl by Sayuri


As I mentioned, this year was taken over by the Yakuza series, including it’s Judgment spinoff. Traveling still is not the best idea right now. So, the next best thing is experiencing Japan in the games by Ryu ga Gotoku. The games make you feel like you are there. It’s always fun to see a place you’ve been to recreated in a game with as much love and detail as it deserves.

  • Shin-chan: Me and the Professor on Summer Vacation (Nintendo Switch)
  • Escape Academy (PC)
  • GhostWire: Tokyo (PS5)
  • PowerWash Simulator (PC)
  • Tiny Tina’s Wonderlands (PC)

TV Shows

Streaming services are trying to figure out how hard they can push their customers. In price, but also the ridiculous stunts they keep pulling. It’s all good, past me bought Deadwood so I can rewatch it whenever I want.

  • Paper Girls (Prime Video)
  • Severance (Apple TV+)
  • The Rehearsal (HBO)
  • Tokyo Vice (HBO)
  • Yellowjackets (Showtime)
Girlfriend Technology, July Update

Girlfriend Technology, July Update

I don’t think I ever introduced my software company, Girlfriend Technology, on this blog.

Girlfriend Technology is a software company I started to distribute apps under. My goal is to build apps that can benefit queer people, or at least think of them first instead of as an afterthought.

My app, X to Y, stemmed from a former employer not allowing me to change my name at work to be my legal name. I got tired of seeing my deadname and made my own personal browser extension to fix it.

X to Y got a nice update last week to allow it to play nice on webpages with dynamic content. The next update will help with backing up and restoring preferences.

Falsehoods Programmers Believe About Names

It is wild that this piece is 12 years old and constantly gets more relevant with age. I do not get why everyone wants to constantly gate keep names, like you would know better than the one telling you their name.

Virtual Reality Is Sexist: But It Does Not Have to Be

Virtual Reality Is Sexist: But It Does Not Have to Be

Previously I have posted about danah boyd’s research on how hormones impact how your brain processes depth, but here is another study about how interpupillary distance, IPD, settings on VR headsets make it hard for people other than, for example, cisgender men to find a distance that works for them, leading to motion sickness. A while ago I tried to adjust my IPD but never found a setting that worked for me. It was either too close or too far, and the motion sickness remained.



A love letter to a public transit system I haven’t used in years.

Star St.Germain and Tim Riot have made a really emotional pixel art journey through the city I simultaneously live in but rarely see anymore.

The DankPods Headphone Starter Guide.

The DankPods Headphone Starter Guide.

DankPods put together a great guide to headphones. I use quiet a bit of the things he recommends, which you can see on my uses page.



Inspired by, I have written up my current setup. I will try to keep this post updated as things change.


The Bedrock


  • iPad Pro - This is my main machine, to be honest. I use it for everything, yes even coding.
  • Custom PC - This is my default desk experience when I am not working. I enjoy the new Windows 11.
  • MacBook Pro - I basically just use this for work, building the iOS/macOS builds of my apps, or Facetime.
  • Surface Pro 6 - I picked up the Surface a while back and it still runs great and is a quick portable way to bring a Windows machine with me. It’s great for low spec gaming too.

The Input Club

  • Blue Portico75 Keyboard - A 75% keyboard with a knob and a USB-C port.
  • Kensington VeriMark USB Fingerprint Key - This is finicky but when it works it’s pretty cool.
  • Kone XP - I wanted to try out a gaming mouse and this seemed like the perfect place to start. It’s light and has automatic profile switching between apps and games.
  • Logitech MX Ergo - I learned during quarantine that my hand starts to hurt after long periods of using a regular mouse. The MX Vertical is great but I’ve wanted to try a trackball mouse for a while.
  • Stream Deck - The answer to the question, “omg where is the hang up button on Zoom?!” It’s right there, on a physical button.

The Audio Video Club



  • 1Password - Use a password manager. Use unique passwords. Use two-factor auth. Just do it, already.
  • Affinity Designer - A full Illustrator experience on all of my devices, even iPad. No subscription fees.
  • Affinity Photo - A full Photoshop experience on all of my devices, even iPad. No subscription fees.
  • Fantastical - Not available on Windows. Fantastical merges a variety of calendars and todo lists together with custom views and natural language processing.
  • Microsoft Edge - Another Chromium based browser but without all the Google stuff. Tab napping to save resources on tabs you aren’t using is a huge plus.
  • Obsidian - A customizable library of Markdown files you can optionally apply end-to-end encryption to and sync.
  • VS Code - A fast and reliable code editor that is extendible. Runs on any platform either natively or in the web browser.


  • Blink Shell - SSH and Mosh support, now with the ability to mount SSH connections to the Files app, and the ability to launch VS Code.
  • Day One - Keeping a journal is a rewarding way to see how far you’ve come and remember important events in your life.
  • Inspect Browser - Inspect Element for iOS, not as full featured but the best and most reliable I’ve found.
  • Textastic - Old reliable code editor. It’s no VS Code, but it’s pretty good for prototyping HTML or JavaScript.
  • Working Copy - Git on iOS and it works with other apps.

Windows 11

  • PowerToys - There are so many features in here I love but I use FancyZones the most to move windows around in predetermined positions on my screen.
  • Velocity - This is like Dash for Mac but on Windows. It stores a variety of documentation for programming offline where you can easily search it for what you’re looking for.


  • Alfred - Quickly perform tasks, find apps and files, and manage your clipboard history.
  • Bartender - Everyone wants to be in the macOS menu bar. Hide those distractions.
  • Dash - Stores coding documentation offline where you can search it for what you’re looking for.
  • Hazel - Monitors files and performs actions when certain conditions are met. For example, I have a folder of Markdown files that will automatically commit itself to a Git repository when there are changes.
  • ImageOptim - Please don’t throw images up online without making sure their file size is as small as it can be without reducing image quality.
  • iStat Menus - What company spyware is causing my Mac to be so slow? Oh it’s probably just Docker. I hate it when Docker eats all available resources when it’s idle.
  • iTerm - A terminal that I can split the views in half vertically or horizontally. I swear I don’t use most of what this offers.
  • Keyboard Maestro - Set up custom actions on your Mac. I use it to extend what my Steam Deck can do.
  • Loopback - This is also primarily for the Steam Deck so I can play my annoying soundboard during work meetings.
  • Shush - This app hasn’t been updated in sooooo long and I fear for the day it stops working. It’s a great way to toggle the mute on your microphone or have a cough button.


VS Code Extensions

  • change-case - There is nothing like a handy way to convert which case your text or variables are.
  • Code Spell Checker - Never spend another hour trying to debug code that would work if didn’t make that typo.
  • GitHub Copilot - This pair programmer’s inteligence is like magic, but it does pay to keep an eye on it so it stays on track.
  • GitHub Pull Requests and Issues - Create and review PRs without having to find what your looking for in GitHub.
  • Live Share - Invite someone you trust to code along side you each from the comfort of each other’s own VS Code.
  • Remote Development - I use this for connecting to a Windows Subsystem for Linux quite often, but it’s also great for working over SSH.
  • Sort lines - Like casing, there’s nothing like a quick way to remove duplicates from a list and sort it at the same time.
  • Turbo Console Log - Highlight text and press a keyboard shortcut to have your own easy to find console log. Each log is easily identifiable with an emoji, file name, and line number.

Browser Extensions



  • 1Blocker - Blocks ads and trackers for your security, even inside apps.
  • Baking Soda - Replaces all video players (except YouTube, see Vinegar below) with a native video player where you can choose to have picture-in-picture or stop that annoying auto-play
  • Noir - My preferred extension for applying dark mode to websites that haven’t implemented their own dark modes yet.
  • Vinegar - Replaces YouTube video players with one that supports picture-in-picture and stops that annoying auto-play. (use with Baking Soda to make all video players play nice)
I rewrote my blog with Astro

I rewrote my blog with Astro

Welcome to the blog that was known as

I had a fun technique for making a blog using a bookmarking service to act as my content management system. I never knew how the bookmarking service felt about how I was using it and it made my blog on external services.

A few months ago I heard about Astro, a new build tool for building websites in JavaScript. I’ve since made a few sites using it and have been pretty impressed. Before I was using Next.js, and I will continue to use it where appropriate.

The biggest change will be that I can no longer simply share a link to post on my blog. I will need to write a brand new Markdown file and deploy it, which brings it’s own set of benefits. For one, I can now write posts like this.

See you soon~

X to Y

X to Y

Ever think it would be funny to replace a word with another? Sick and tired of a website deadnaming you? You are going to enjoy X to Y! X to Y supports plain text, regex, and urls.

Magnet Links

Magnet Links

Tired of seeing “Safari cannot open the page because the address is invalid.” alerts when you try to open a magnet link? This Safari extension helps by adjusting the links to go through

look what you made me do: a lot of people have asked me to make NFT games and I won’t

look what you made me do: a lot of people have asked me to make NFT games and I won’t

The amount of talk about the environmentally harmful and the further harming of people who struggle financially is mind blowing but Doc put it in words the crypto-bros will understand. If they ever take their fingers out of their ears and stop shouting “na na na na i cant hear you.”

Webbed - Sbug Games

Webbed - Sbug Games

I never thought a game about spiders would happily capture me in it’s web, but here we are. Highly recommend this game, and it’s a steal for the price.

Improv Dungeon

Improv Dungeon

Time to replace your improv partner! You’ve played AI Dungeon, now play Improv Dungeon. Write out your scenario and the AI will play along!

Is the Oculus Rift sexist?

Is the Oculus Rift sexist?

danah boyd’s piece from 2014 has always been facinating to me, but relating it to my own experiences around transitioning and the ways that I have percevied depth just feels like a lot of gender validation for me :)

Heroku removes SMS as an MFA Verification Method

Heroku removes SMS as an MFA Verification Method

We all know SMS two factor auth is very dangerous due to it’s insecure nature, but we don’t often here companies actually doing anything about it. Most won’t remove SMS two factor auth because they want your phone number so they can better target you with ads. Hopefully we start to see more people follow this trend, as everyone else is just playing security theatre.

1 of 4