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.
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.
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’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.
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.
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:
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:
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.
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).
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.