Josh

Building in the open

Practicing

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

2026

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: https://www.joshbeckman.org/blog/practicing/