Pragmatism in today's world

Jumping to the end of bash's history

I use bash's history all the time, via ctrl+r and also with the up and down keys; it's wonderful. Sometimes, I want to get back to the end of my history and I recently discovered that there's a shortcut for this: meta+>. It doesn't matter where you are in your history, pressing meta+> jumps you to the end and you have a blank prompt again. I use iTerm2 on my Mac and have my right… continue reading.

Converting JWKS JSON to PEM using Python

Following on from my earlier exploration of JWKS (RFC7517), I found myself needing to convert the JWKS into PEM format. This time I turned to Python with my preference of using uv with inline script metadata and created jwks-to-pem.py. The really nice thing about inline script metadata is that we can use the cryptography package to do all the hard work with RSA and serialisation. We just have to remember that the base64 encoded values… continue reading.

Stop in-place editing of bash history items

Recently, since getting a new computer, I've noticed that I've been losing bash history items and it took a while to work out what was going on, though I'm still not completely sure as it never seemed to be so much of a problem. I regularly use the up and down keys with context specific history. For example, I will type ma and then press up to search back through all the make commands I've… continue reading.

Notarising a macOS standalone binary

I've been writing a simple Swift command line tool called QuickSS. It's a single file swift file, that I compile to a standalone binaryusing: swiftc quickss.swift -o quickss To distribute it on modern Macs, I need to sign it and then get Apple to notarise it. Signing the binary To sign the binary, you need a "Developer ID Application" certificate from your paid developer account. If you don't have one there already create a new… continue reading.

Using the 1Password CLI in a script

I'm currently writing a script that notarises a macOS CLI app which needs to access a password. Rather than put it in an environment variable, I thought I'd use the 1Password CLI. This is the first time I've used it, so these are my notes. The 1Password CLI tool is call op. I installed it via Homebrew with: brew install 1password-cli Sign in You need to sign in. op signin As I have multiple accounts… continue reading.

Backing up Signal messages on Mac

I'm using Signal more now and as it's fully end-to-end encrypted, if something goes wrong with your phone or you lose it, you will lose your entire message history. Signal on Android has an official backup method, but there isn't one for iPhone or desktop. As a result, a number of backup tools have been written by various people. The one I've had most luck with on my Mac desktop is signalbackup-tools. Note that the… continue reading.

Sunrise and sunset times on the Mac command line

I recently discovered the /usr/libexec/corebrightnessdiag command line tool on macOS. In particular, /usr/libexec/corebrightnessdiag nightshift-internal will give information about when the Mac's nightshift settings, including when sunrise and sunset are! $ /usr/libexec/corebrightnessdiag nightshift-internal Night Shift Status { AutoBlueReductionEnabled = 1; BlueLightReductionSchedule = { DayStartHour = 7; DayStartMinute = 0; NightStartHour = 22; NightStartMinute = 0; }; BlueReductionAvailable = 1; BlueReductionEnabled = 0; BlueReductionMode = 0; BlueReductionSunScheduleAllowed = 1; Version = 1; } Night Shift Sunset/Sunrise {… continue reading.

File uploads with Slim 4, tested with curl

Unsurprisingly, uploading files with Slim 4 is pretty much the same as for Slim 3 as they are both use PSR-7 for Requests. Recently, Matthew asked a question about why he was getting an error, so I looked into it. One thing that's really nice about Slim is that you can write a complete application in a single file (+ the vendor directory) which is helpful for testing things. Here's the entire application: public/index.php: <?php… continue reading.

Command line access to GitLab & GitHub

I've always been a huge fan of the command line and have been using the gh command line tool to access GitHub for a while. My current client uses GitLab and I was delighted to discover that there is a glab CLI tool. As you can imagine, both tools do essentially the same thing: operate on GitHub/GitLab from the command line. The two main uses of gh & glab that I have is creating and… continue reading.

Stash unstaged changes in git

I wanted to stash just the unstaged changes in my git repo. There's a git stash –staged which will stash the staged files, but I didn't see an equivalent to stash just the unstaged ones. Obviously, this is a common problem so a minute or two of googling will find the Git stash uncached: how to put away all unstaged changes? Stack Overflow question. Turns out that you have to remember the the staging area… continue reading.