Skip to content

Instantly share code, notes, and snippets.

View nateberkopec's full-sized avatar

Nate Berkopec nateberkopec

View GitHub Profile
@nateberkopec
nateberkopec / Dockerfile
Created January 23, 2026 00:33
Puma closed_socket? tradeoff benchmark
FROM ruby:3.3-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends build-essential \
&& rm -rf /var/lib/apt/lists/*
RUN gem install puma -v 6.4.2
WORKDIR /app
COPY config.ru puma.rb /app/
@nateberkopec
nateberkopec / agent-rm-rf-hooks.md
Last active January 26, 2026 02:04
Protecting Against Autonomous Agent rm -rf Commands

Protecting Against Autonomous Agent rm -rf Commands

Protecting Against Agent rm -rf Commands

AI coding agents can run shell commands. Sometimes they run rm -rf by mistake. This deletes files forever. While of course I always read and approve all tool calls manually, by hand, and never let my agents work except under direct supervision 100% of the time, sometimes I miss things.

How It Works

  1. Hooks catch rm -rf before it runs
  2. Refuse the command with a clear error telling you to use trash
@nateberkopec
nateberkopec / README.md
Created January 21, 2026 20:34
Puma JSON logging demo - response to issue #3865

Puma JSON Logging Demo

This demo shows how to achieve JSON-formatted boot messages from Puma using existing configuration options. This is in response to GitHub Issue #3865.

Summary

Puma already supports custom log formatting via two DSL options:

  1. log_formatter - A block that transforms each log message string
@nateberkopec
nateberkopec / n_plus_one_where.rb
Created January 4, 2026 22:14
Rails N+1 query that cannot be fixed with includes() - using where() in instance method
# frozen_string_literal: true
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
gem "rails", "~> 8.0"
gem "sqlite3"
end
Senior Product Engineer
Job Type: Full-time
Kaysville, UT and Remote (United States Only)
Salary Range: 180-220K DOE
Who We Are:
At Bark we’re doing something special to make the digital world a safer place for
children. Our work isn't just another job; it's a chance to make a real impact on the lives
of children and families.
Imagine using cutting-edge machine-learning to empower parents to partner with their
kids, providing them with the tools and alerts they need to ensure their child's safety and
@nateberkopec
nateberkopec / gh-ai.fish
Last active October 7, 2025 09:09
Fish function to have AI write commit messages w/rerolling
function gc-ai
# Check required dependencies
if not command -q gum
echo "Error: gum is not installed. Install it from https://github.com/charmbracelet/gum"
return 1
end
if not command -q bat
echo "Error: bat is not installed. Install it from https://github.com/sharkdp/bat"
return 1
@nateberkopec
nateberkopec / gh_watch
Created August 6, 2025 22:37
Watch GitHub PR status with audio notifications
#!/bin/bash
set -e
if [ $# -eq 0 ]; then
echo "Usage: gh_watch <github-pr-url>"
echo "Example: gh_watch https://github.com/hyfn/xpo/pull/4974"
exit 1
fi
@nateberkopec
nateberkopec / yubikey-b-signatures.txt
Created July 5, 2025 05:20
Proof of ownership of two Yubikeys
pub rsa2048 2025-07-05 [SC] [expires: 2027-07-05]
3C3E54D4F0A2218E1C1AA1A2ED9299DFE432C3A1
uid [ultimate] Nate Berkopec (Yubikey B) <nate.berkopec@gmail.com>
sig 3 ED9299DFE432C3A1 2025-07-05 [self-signature]
sig 6BF45F815F702663 2025-07-05 Nathan Berkopec (5 NFC Master) <nate.berkopec@gmail.com>
sub rsa2048 2025-07-05 [A] [expires: 2027-07-05]
sig ED9299DFE432C3A1 2025-07-05 [self-signature]
sub rsa2048 2025-07-05 [E] [expires: 2027-07-05]
sig ED9299DFE432C3A1 2025-07-05 [self-signature]
@nateberkopec
nateberkopec / 0_roadmap.md
Last active July 17, 2025 03:57
Speedshop Retainer Roadmap + Changelog

Speedshop Retainer Roadmap

This is the roadmap for the Speedshop Ruby on Rails performance retainer service. It was last updated March 28th, 2025. Items are in rough priority order.

In-Progress:

  1. Alerting, dashboards, key metrics, and ticket backlogs for all: We want everyone to be on the same footing with SLOs for queues and tracking our core set of 20 metrics, plus your app's specific key metrics (see next bullet), along with a ticket backlog for stuff to work on.

Upcoming:

@nateberkopec
nateberkopec / changelog.md
Last active March 28, 2025 03:37
Speedshop Retainer Changelog

Speedshop Retainer Changelog

This is the changelog for the Speedshop Ruby on Rails performance retainer service. For what we're doing in the future, see the roadmap. This was last updated March 28th, 2025.

March 2025

  1. Office Hours. You can now sign up for regular office hours, 30 minutes every 2 weeks.
  2. Retainer Roadmap and Changelog. We're working on more services and extensions to the retainer service. You can keep up with stuff yet to come in the Roadmap, and stuff done already in the Changelog.
  3. Free Ongoing Education/Workshops. We started a book club for The Rails Performance Apocrypha.