Rating system for humans

I’ve been thinking about rating systems for humans. Not just how we evaluate things in the moment, but how we want those evaluations to shape what we encounter again in the future. It started with a conversation about music. My wife and I were discussing how to rate songs in a way that felt both intuitive and useful. A 1 to 10 scale felt overly nuanced, too many options with too little distinction.

Fixing MPRequestErrorDomain Error in Apple Music Shortcut

Today I learned how to work around a bug in the iOS Shortcuts app when trying to build a song rating tool for Apple Music. The shortcut is simple: get the currently playing song, prompt for a 0-5 rating, and append the result to a file in iCloud Drive. But I kept running into this error: The operation couldn’t be completed. (MPRequestErrorDomain error 1.) It failed on the “Get Current Song” action, even though music was actively playing in the Apple Music app.

Toggle Word Wrap in Vim

Toggling word wrapping in vim is easy with: :set wrap! This flips between wrapped and unwrapped lines without having to remember :set wrap vs. :set nowrap. References: Vim: Toggle Word Wrap Word Wrapping in Vim

I Finally Subscribed to The Atlantic

I’ve been reading The Atlantic for years—sometimes directly but usually through Apple News. I’ve admired their deep reporting, sharp writing, and the fact that their journalists seem to care more about insight than clicks. But despite all that, I never subscribed. It wasn’t deliberate. Like a lot of readers today, I just consumed. I’d follow a link, consume a few pieces a month, and then move on. Apple News made it even easier.

How to go up one directory in macOS Finder

While working in macOS Finder (especially in list view), I found myself wanting a fast way to navigate up one folder level — like you would with cd .. in the terminal. Answer: Use Cmd + ↑ (Up Arrow) to go up one directory. Use Cmd + ↓ (Down Arrow) to enter the selected folder.

The Evolution of Animated Images in App Documentation

In the early days of app documentation, animated images (like GIFs) were a fantastic way to demonstrate how an application worked. They provided a dynamic, visual way to guide users through processes that might have been confusing with text alone. However, I’ve noticed a shift over time. These animations have become faster and more complex, to the point where they’re sometimes more of a distraction than a help. You can see it in action on the VSCode extensions page for the just released Gemini Code Assist:

How to customize nginx config in a docker image

When hosting websites with docker (and proxying via Caddy), I often need to tweak the nginx config. This how-to guide will walk you through the steps you can take to accomplish this. 0. Setup For this tutorial, here’s my setup: Dockerfile FROM nginx:alpine COPY public/ /usr/share/nginx/html The Dockerfile is in source code directory and we have another directory called nginx where we can store customized config files. Build image:

Enable git over ssh

Have you ever watched video where developer securely clone their git repos without entering a password and wondered how to set that up? Well, it’s quite simple and I’ll walk you through the steps. This approach uses ssh keys to authenticate and then the sync occurs over ssh tunnels, encrypting the traffic. Setting up ssh keys is simple and you’ll no longer have to type in a username and password.

Simple double opt-in web app for Postmark mailing list

If you’re using an email service like Postmark, you’ll have to handle your own list management except unsubscribes and suppression (e.g. from hard bounces). To do this, a little web app will be needed if you want to do things like double opt-in (good idea). You’ll likely then want more features like profile management but the goal of this howto is getting a simple and hopefully secure webapp in place for /subscribe and /confirm (you can get unsubscribes/suppressions from Postmark via web-hooks or an API call).

Hugo no existing content direction configured

If you receive ‘Error: no existing content directory configured for this project’ from hugo when adding new content, there’s a simple fix. This post will walk you through the steps to resolve the error.