Getting Claude Code to Work with Browser MCP

If you’re trying to set up Browser MCP (https://browsermcp.io/) with Claude Code here’s what you actually need to run: claude mcp add --scope user browsermcp npx @browsermcp/mcp@latest That’s it! Browser MCP will be available from any directory you’re running claude in to whichever browser tab you are currently sharing What is Browser MCP? Browser MCP (Model Context Protocol) is a tool that allows Claude to control a browser instance, enabling it to: ...

August 11, 2025 · 1 min

SideNotes: zero‑friction project notes next to your code

I wanted a scratchpad that lives with the code but never in Git. SideNotes is a tiny shell helper that gives every repo a persistent notes that are already available in your editor. It shows up as a SideNotes folder in your project tree, but the notes live outside the repo and are globally git ignored. Why Mostly because I always use VS Code for scratch notes anyway Keep brainstorming and temporary thinking near the code without polluting commits or PRs One consistent place for notes across all repos Fast to open and create notes from the shell Plain Markdown on disk, editor‑agnostic How it works Per-project notes live under a central directory (e.g. ~/Code/SideNotes/<project>/) A SideNotes symlink is created in your repo so notes appear in your editor’s file tree Git ignores the SideNotes symlink globally, so nothing lands in version control # Create a new note note first-idea #=> Created: SideNotes/2025-08-08_14-22_first-idea.md # Disk location ~/Code/SideNotes/your-repo/2025-08-08_14-22_first-idea.md # You and your editor see ./your-repo/SideNotes/2025-08-08_14-22_first-idea.md # Git sees git status #=> On branch develop #=> nothing to commit, working tree clean Commands notes_init [project_name]: Initialize notes for the current repo (optional custom name) note <slug>: Create a timestamped Markdown file and open it (e.g. note performance-sweep) notes: Show usage and list notes newest‑first notes_latest: Open the most recent note notes_projects: List all projects with notes and counts Tips Set your editor with export EDITOR=vim (or nvim, nano, etc.) Want a different base directory? export SIDENOTES_DIR=~/Notes/Projects The symlink name (SideNotes) can be changed in the script if you prefer something else Why not keep notes in the repo? Documentation should be kept in the repo but can’t keep every little thing in there for someone else to review. ...

August 8, 2025 · 2 min

Laravel Cache Remember Forever if Truthy

I kept needing a cache method that would only store a value permanently if the result was truthy. For expensive operations that might return null or false, I wanted to keep trying until I got a real result, then cache that forever. The problem Laravel’s Cache::rememberForever() caches any result, including null/false values. Fairly often I want to cache successful results and keep retrying failed ones. The solution Add this macro to your AppServiceProvider boot method: ...

June 19, 2025 · 2 min

Better File Formatting When Working With LLMs

Copilot, Cursor, Claude Code, etc are convenient for automatically pulling relevant files from your codebase when asking questions but with difficult or sprawling questions I get much better results by manually selecting the files I want to include. To simplify this manual process, I wrote a small script named catcopy. What catcopy does catcopy takes a regex pattern, searches the codebase for matching filenames, gets the contents of each, and copies to the clipboard broke up with big markdown headers. ...

April 12, 2025 · 2 min

Git file history

View the commit history for a particular file with git on the command line: git log --follow -p -- filename

March 10, 2017 · 1 min · Paul

Disable Full Screen Shortcut on Mac OSX 10.10 Yosemite

Full screen is super annoying on OS X lately. I use SizeUp which gives me a shortcut for expanding the windows instead of using the green button but i’m still having random encounters with full screen mode because of the shortcut ctrl+shift+f. So here’s how to disable that..or at least make it harder to do by accident: # Change full screen shortcut to Shift + Ctrl + Opt + Cmd + F defaults write -g NSUserKeyEquivalents -dict-add "Enter Full Screen" "$~^@F"

May 24, 2015 · 1 min · Paul

Remove all images from JQuery UI CSS

/* remove all default background images from jquery ui */ .ui-icon,.ui-widget-content .ui-icon, .ui-state-active .ui-icon, .ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active, .ui-state-default .ui-icon, .ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default, .ui-state-error .ui-icon,.ui-state-error-text .ui-icon, .ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error, .ui-state-highlight .ui-icon, .ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight, .ui-state-hover .ui-icon,.ui-state-focus .ui-icon, .ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus, .ui-widget-content, .ui-widget-header, .ui-widget-header .ui-icon, .ui-widget-overlay, .ui-widget-shadow { background-image: none; }

May 4, 2015 · 1 min · Paul

Updating git on OS X Mavericks

The easiest way to update git to 2.2.1 or higher is to use homebrew. brew install git If you get a command not found error, you can install homebrew from brew.sh (scroll down for a one liner, i won’t copy it here in case it updates). If you get a different error, check out Updating homebrew on yosemite.

January 13, 2015 · 1 min · Paul

Updating Homebrew on Yosemite

The Error $ brew /usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 21: /usr/local/Library/brew.rb: Undefined error: 0 $ brew doctor /usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 21: /usr/local/Library/brew.rb: Undefined error: 0 The Fix Make homebrew think /System/Library/Frameworks/Ruby.framework/Versions/1.8 still exists until you successfully update: cd /System/Library/Frameworks/Ruby.framework/Versions sudo ln -s Current 1.8 brew update sudo rm 1.8

January 13, 2015 · 1 min · Paul

OS X pg gem install or bundle install issues

If you’re getting errors like: Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb checking for pg_config... yes Using config values from /usr/local/bin/pg_config checking for libpq-fe.h... yes checking for libpq/libpq-fs.h... yes checking for pg_config_manual.h... yes checking for PQconnectdb() in -lpq... no checking for PQconnectdb() in -llibpq... no checking for PQconnectdb() in -lms/libpq... no Can't find the PostgreSQL client library (libpq) *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby --with-pg --without-pg --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/ --with-pqlib --without-pqlib --with-libpqlib --without-libpqlib --with-ms/libpqlib --without-ms/libpqlib Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/pg-0.17.1 for inspection. Results logged to /Library/Ruby/Gems/2.0.0/gems/pg-0.17.1/ext/gem_make.out Try: ...

August 16, 2014 · 1 min · Paul