Josh

Building in the open

Practicing

Lessons learned and observations from working in the software engineering industry.

2026

Automating My Apple Music Library Export

Using macOS GUI scripting to fully automate my music stats pipeline

Moving the Critic Into My Editor

What if you could have an AI critic semantically linting your writing, inline?

Three LLM Agents for My Knowledge Garden

I built three AI agents that tend my knowledge garden in different ways: one walks in front, one walks behind, and one walks beside me.

README, Don't AGENTS.md Me

This is the place where I rant that the AGENTS.md pattern is a dist...

Trust But Verify

I’ve been a huge fan of webcomic name for years. Every comic ends w...

ComEd Hourly Pricing Calendar

I built an iCal feed of ComEd electricity price changes so I can plan around cheap hours from my calendar.

Displaying Letterboxd Like Counts on My Movie Reviews

I’ve been crossposting my Letterboxd reviews to this site for a whi...

Links That Survive the Printer

How I built automatic QR code footnotes so printed pages keep their links.

Site Traffic in 2025

2025 was the first full year I had basic analytics on this site (vi...

Bringing Back Webmentions

A year and a half ago I dropped support for webmentions on this blo...

2025

My GitHub Wrapped 2025

First I used git-wrapped.com again to pull my 2025 stats but then I...

gh-nvim-username-keywords: GitHub @-mention Autocomplete in Your Neovim Editor

I’ve been writing my GitHub issue and PR comments in neovim more an...

gh-wrapped is Your GitHub Wrapped Year in Review, On Demand

Recent Decembers, I watch people share their “Spotify/etc. Wrapped”...

My Raycast Wrapped 2025 (and Prior Years)

I’ve been using Raycast on my work and personal computers for over ...

Shopify Editions Winter '26

Jump to 15:10 of the X spaces livestream to get a brief overview of...

My Studio Stool

I bought the instruction zine for The Studio Stool from Manual mont...

A Digital Two-Sentence Journal

A vampire's journal and a physical notebook inspired me to write a program to store my experiences

Contributing to Open-Source Should be Required, Like Jury Duty

A note I found in my journal, from seven years ago, on the day I wa...

Word Count Bookmarklet

Inspired by See Your Word Count While You Write from dreeves, I whi...

Making MCP Tool Calls Scriptable with mcp_cli

I will often explore a solution or script with an LLM agent (e.g. C...

SYSTEMS AND METHODS FOR SELECTIVELY EXECUTING USER-GENERATED LOGIC

Our (me and some of my team members at Shopify) U.S. patent applica...

Earning the Right to Be Illegible

Seeing like a software company is the best writing about large-comp...

Re-Investing in Local CI

I read this great post by Brandur over the weekend and got inspired...

The Box Model: A Framework for Role Clarity

I spent months as a Senior Staff Engineer before realizing nobody h...

Apple Calendar's Search Just Doesn't

I cannot, for the life of me, figure out what Apple Calendar’s sear...

Bending the Fiddle Leaf Fig

This fiddle leaf fig has been in two homes with us now for about 7 ...

Directed Notifications for Claude Code Async Programming

This afternoon I leveled up my previous Claude Code notifications. ...

Releasing gh-pr-staleness: GitHub CLI Extension for Commits Behind Target

Working in a monorepo and with a merge-queue (as we are now doing i...

Website Redesign

I’ve spent the last week or so redesigning my personal blog/site to...

My Markdown Preview Utility

I write a lot of markdown and I am delivered a lot of markdown, inc...

UI vs. API. vs. UAI

First we built a user interface (UI) when the application was just ...

Feedforward, Tolerance, Feedback: Improving Interfaces for LLM Agents

My team is building an agent for complex, multi-language artifacts ...

The gem exec command gives me hope for Ruby in a world of fast software

As more and more software is being developed quickly by LLMs, I’m s...

Don't Forget: Remote MCP Servers are Just cURL Calls

You can call any streamable-http transport MCP (Model Context Proto...

Building Paperboy: A Personal Reading Recommendation Engine

I have a problem. My Readwise Reader inbox has over a thousand arti...

Claude Code Notifications for Async Programming

I’m doing so much asynchronous programming through agents now. Whil...

My “Four-(Sometimes Five-) Bullet” Incident Snapshot

Detection → Mitigation → Remediation → Impact (+ Comms) in a minute

My Graham Evaluation

So yesterday someone at work shared this fun video of a guy trying ...

The Hidden Cost of Human-Centric Tools in LLM Workflows

I built and released gh-view-md because I think we’re entering an i...

Releasing gh-view-md - A GitHub CLI Extension for LLM-Optimized Issue and PR Viewing

A new GitHub CLI extension that renders issues and pull requests in clean markdown format, perfect for feeding to LLMs or offline viewing

Reference

Keyboard Shortcuts

Key Action
o Source
e Edit
i Insight
r Random
h Home
s or / Search
Josh Beckman's Organization: https://www.joshbeckman.org/blog/practicing/