RSSAmplifier

Blog

Ben Gubler

Ben Gubler's personal website. Thoughts on web development, AI, and building things that matter.

bengubler.comRSS feed ↗31 posts

Latest posts

Introducing Fig

A small TypeScript UI runtime based on React Fiber.

Introducing agentpane

A local web UI for AI coding agents. Multi-pane, multi-session, streaming — run Claude Code and Codex side by side from your browser.

Introducing helm

A typed TypeScript framework for AI agents. Replace dozens of tools with two — search and execute — and sandbox LLM-generated code with granular permissions.

My Internship at Vercel

My experience as an intern working on Next.js at Vercel.

Summer 2025 in Review

Things I learned and projects I made.

Introducing ts-base: A Modern TypeScript Library Template

Build with tsdown, Vitest, release-please, and Biome.

Introducing Eta v4

Making Eta ESM-only, changing package scope, and improving CI/CD.

Introducing tokka-bench

A comprehensive evaluation framework for comparing tokenizers across human and programming languages.

Nix macOS Starter: Declarative Development Setup with Mise

Starter Nix config for macOS using nix-darwin, home-manager, and mise.

Dialects for Humans: Sounding Distinct from LLMs

Humans are developing new linguistic patterns to distinguish themselves from AI-generated content, and the rate of change will accelerate.

Adding .md URLs for Raw Markdown Content in Next.js

How to add .md URLs to your Next.js blog to serve raw markdown content, inspired by Vercel's docs.

Smooth Page Transitions in Next.js with next-view-transitions

Add smooth page transitions to Next.js using the View Transitions API.

No, Children Aren't Naturally Better at Languages

A short summary of Mark Rosenfelder's thoughts on child language acquisition

More Language Thoughts

Quick thoughts about miscellaneous language / linguistic topics

Links #1

Interesting things I've been reading

Using HuggingFace Datasets Offline

How to save a HuggingFace dataset to disk and use it offline

Tips #1

Markdown detection in Google Docs, swiping between tabs in Brave Browser for iOS, and running TypeScript files from the command line.

Making a Radix Dropdown the Same Width as Its Trigger

How to make the dropdown content of a Radix or shadcn dropdown match the width of the trigger.

Debugging Python in VSCode

Using the code.interact() function to launch an interactive code interpreter

On Microblogging

Why I'm starting a microblog and how it differs from my main blog.

Rebuilding Alpaca with the Hugging Face Trainer Class

Fine-tuning Llama-2-7B using the Alpaca dataset and Hugging Face Trainer

Introducing gom: GPU Monitoring across Containers

I published `gom`, a CLI tool for monitoring GPU usage across Docker containers.

Enroot on Slurm for Distributed ML: Part 2

How to use Enroot on Slurm for containerized multi-node training.

Enroot on Slurm for Distributed ML: Part 1

How to use Enroot on Slurm for containerized multi-node training.

Quick & Helpful Slurm Commands

A quick guide to using Slurm for distributed machine learning.

Setting Up Docker for Machine Learning

The Dockerfile I use to set up my machine learning environment.

Accelerate vs. DeepSpeed vs. FSDP

Which one should you use for distributed training?

LLMs Will Never Be Able to Do (Complicated) Math

Since contemporary LLM architectures lack recursion, they're fundamentally incapable of doing some math operations.

One Config File to Rule Them All

JavaScript tools have too many config files. Let's combine them.

Introducing Eta v3

The next version of Eta, an embedded JS template engine, brings API and documentation improvements.

Introducing My New Website

I created a brand-new personal website using Next.js, Tailwind CSS, and MDX.