Forem

SEN LLC profile picture

SEN LLC

I build small, focused tools and ship them open-source. Based in Japan 🇯🇵 with SEN LLC, working through a 100+ portfolio at sen.ltd/portfolio. Posts about TypeScript, AWS, and bugs that taught me so

Location Tokyo, Japan Joined Joined on  Personal website https://sen.ltd

Work

Engineer at SEN LLC

Micro-benchmarking TypeScript Without Lying to Yourself

Micro-benchmarking TypeScript Without Lying to Yourself

Comments
8 min read
The Four Rate-Limiting Algorithms You Should Know (I Built a PHP Service That Runs All Five)

The Four Rate-Limiting Algorithms You Should Know (I Built a PHP Service That Runs All Five)

Comments
10 min read
A Polite Port Scanner in 400 Lines of Tokio

A Polite Port Scanner in 400 Lines of Tokio

Comments
9 min read
Counting TypeScript Escape Hatches — A Zero-Dependency CLI with a Baseline Gate

Counting TypeScript Escape Hatches — A Zero-Dependency CLI with a Baseline Gate

Comments
9 min read
The similar crate is underrated: I wrote a colored diff CLI in a weekend

The similar crate is underrated: I wrote a colored diff CLI in a weekend

Comments
8 min read
A Minimum-Viable RSS Aggregator in TypeScript with Hono

A Minimum-Viable RSS Aggregator in TypeScript with Hono

Comments
12 min read
SQLite's PRAGMAs You Never Remember — I Put Them in a CLI

SQLite's PRAGMAs You Never Remember — I Put Them in a CLI

Comments
8 min read
A Self-Hosted PHP Contact Form Backend Without CAPTCHA

A Self-Hosted PHP Contact Form Backend Without CAPTCHA

Comments
7 min read
I Built jq for TOML Because My Shell Scripts Deserved Better

I Built jq for TOML Because My Shell Scripts Deserved Better

Comments
9 min read
pdf-lib Is an Under-Appreciated Gem: A Tiny PDF API in TypeScript

pdf-lib Is an Under-Appreciated Gem: A Tiny PDF API in TypeScript

Comments
10 min read
Building a URL Shortener in Rust with axum, SQLite, and 30 Lines of base62

Building a URL Shortener in Rust with axum, SQLite, and 30 Lines of base62

Comments
9 min read
I Built a CLI Runner for VS Code's `.http` Files in ~500 Lines of TypeScript

I Built a CLI Runner for VS Code's `.http` Files in ~500 Lines of TypeScript

Comments
8 min read
npm audit --json Is Unreadable. I Wrote a Formatter With Zero Dependencies.

npm audit --json Is Unreadable. I Wrote a Formatter With Zero Dependencies.

Comments
8 min read
TOTP From First Principles: Building an RFC 4226 / 6238 CLI in Rust

TOTP From First Principles: Building an RFC 4226 / 6238 CLI in Rust

Comments
9 min read
Envelope Encryption for .env Files, the Right Way (PHP CLI, Stdlib Only)

Envelope Encryption for .env Files, the Right Way (PHP CLI, Stdlib Only)

Comments
9 min read
Mocking an OpenAPI Spec From Scratch in 600 Lines of TypeScript

Mocking an OpenAPI Spec From Scratch in 600 Lines of TypeScript

Comments
9 min read
Parsing RSS and Atom From Scratch in Rust with quick-xml

Parsing RSS and Atom From Scratch in Rust with quick-xml

Comments
10 min read
The Four Pagination Strategies Every Backend Dev Should Know

The Four Pagination Strategies Every Backend Dev Should Know

Comments
9 min read
zod-to-schema: A Zero-Config CLI That Runs Your TypeScript In-Process

zod-to-schema: A Zero-Config CLI That Runs Your TypeScript In-Process

Comments
8 min read
A local requestbin in 200 lines of PHP — why self-hosting beats webhook.site for production debugging

A local requestbin in 200 lines of PHP — why self-hosting beats webhook.site for production debugging

Comments
9 min read
The `notify` crate is surprisingly pleasant — I built a cross-platform file watcher in four dependencies

The `notify` crate is surprisingly pleasant — I built a cross-platform file watcher in four dependencies

Comments
8 min read
SSE Is the Right Answer More Often Than You Think — A Hono + TypeScript Reference Service

SSE Is the Right Answer More Often Than You Think — A Hono + TypeScript Reference Service

Comments
9 min read
Parsing phpinfo() in Pure PHP — or, How to Diff Two Containers

Parsing phpinfo() in Pure PHP — or, How to Diff Two Containers

Comments
8 min read
gron Was Right: Flat JSON Is Easier to Grep (A Rust Take With Four Formats and a Round-Trip)

gron Was Right: Flat JSON Is Easier to Grep (A Rust Take With Four Formats and a Round-Trip)

Comments
10 min read
HTTP Cookies in the Wild Are a Mess — I Built a CLI That Eats Them

HTTP Cookies in the Wild Are a Mess — I Built a CLI That Eats Them

Comments
8 min read
Password Generation Is About Entropy, Not Randomness

Password Generation Is About Entropy, Not Randomness

Comments
8 min read
HMAC Webhook Signing Isn't Complicated — the Formats Are

HMAC Webhook Signing Isn't Complicated — the Formats Are

Comments
8 min read
A Minimal HTTP Debug Server in Rust with axum

A Minimal HTTP Debug Server in Rust with axum

Comments
10 min read
I Wrote a JWT Verifier in 150 Lines. You Probably Shouldn't — But Here's What I Learned.

I Wrote a JWT Verifier in 150 Lines. You Probably Shouldn't — But Here's What I Learned.

Comments 1
9 min read
hexview: writing a color-aware hex dump in Rust with one dependency

hexview: writing a color-aware hex dump in Rust with one dependency

Comments
9 min read
A TypeScript API Starter With Sharp Boundaries — Hono + Zod + better-sqlite3

A TypeScript API Starter With Sharp Boundaries — Hono + Zod + better-sqlite3

Comments
8 min read
Writing a Safe SQL INSERT Generator Taught Me Why ORMs Exist

Writing a Safe SQL INSERT Generator Taught Me Why ORMs Exist

Comments
7 min read
RFC 5545 is a 200-Page Spec. Your iCalendar Feed Needs About 150 Lines.

RFC 5545 is a 200-Page Spec. Your iCalendar Feed Needs About 150 Lines.

Comments
9 min read
PHP as a Microservice: A Markdown-to-HTML API in 200 Lines of Slim 4

PHP as a Microservice: A Markdown-to-HTML API in 200 Lines of Slim 4

Comments
8 min read
Read composer.lock Directly: A 1000-Line CLI That Beats composer show --tree

Read composer.lock Directly: A 1000-Line CLI That Beats composer show --tree

Comments
8 min read
Why a Tiny Audit Tool Beats a Big Security Framework (laravel-audit)

Why a Tiny Audit Tool Beats a Big Security Framework (laravel-audit)

Comments
9 min read
What's Actually In This CSV? A Zero-Dep Python Profiler

What's Actually In This CSV? A Zero-Dep Python Profiler

Comments
9 min read
Perceptual Image Diff Without NumPy — Building a Pillow-Only CLI

Perceptual Image Diff Without NumPy — Building a Pillow-Only CLI

Comments
9 min read
When the Library IS the Product: A 200-Line FastAPI Wrapper for wordcloud

When the Library IS the Product: A 200-Line FastAPI Wrapper for wordcloud

Comments
8 min read
Building a Furigana HTTP Service in Python: Why It's Not Just a Lookup Table

Building a Furigana HTTP Service in Python: Why It's Not Just a Lookup Table

Comments
6 min read
Japanese Width Conversion Without Regex: Full↔Half ASCII, Katakana, and the Dakuten Merge Problem

Japanese Width Conversion Without Regex: Full↔Half ASCII, Katakana, and the Dakuten Merge Problem

Comments
9 min read
Slugifying Japanese URLs Is Harder Than You Think — I Built a Focused CLI

Slugifying Japanese URLs Is Harder Than You Think — I Built a Focused CLI

Comments
10 min read
Every Link Preview in Your App Is the Same 30 Lines You Haven't Written Yet

Every Link Preview in Your App Is the Same 30 Lines You Haven't Written Yet

Comments
7 min read
Generating a Valid RSS Feed From Scratch in Stdlib Python

Generating a Valid RSS Feed From Scratch in Stdlib Python

Comments
10 min read
Counting Moras: Why Your 5-7-5 Haiku Validator is Probably Wrong

Counting Moras: Why Your 5-7-5 Haiku Validator is Probably Wrong

Comments
9 min read
Text Generation Before Transformers: Building a Markov Chain in 200 Lines of Python

Text Generation Before Transformers: Building a Markov Chain in 200 Lines of Python

Comments
10 min read
Writing `tail -f | jq` That Doesn't Feel Like a Rube Goldberg Machine

Writing `tail -f | jq` That Doesn't Feel Like a Rube Goldberg Machine

Comments
10 min read
Building a Hash Identifier Without ML — Just Rules, Scores, and Honesty About Ambiguity

Building a Hash Identifier Without ML — Just Rules, Scores, and Honesty About Ambiguity

Comments
8 min read
How ULID Actually Works: Implementing the Codec in 60 Lines of Python

How ULID Actually Works: Implementing the Codec in 60 Lines of Python

Comments
10 min read
A 150-Line FastAPI Service for 'Is Today a Holiday?'

A 150-Line FastAPI Service for 'Is Today a Holiday?'

Comments
8 min read
When does this cron run next? Give it its own 70 MB container

When does this cron run next? Give it its own 70 MB container

Comments
8 min read
How to Make Sense of a HAR File Without DevTools

How to Make Sense of a HAR File Without DevTools

Comments
8 min read
Python's urllib.robotparser Is Subtly Wrong — and Why That Matters for SEO

Python's urllib.robotparser Is Subtly Wrong — and Why That Matters for SEO

Comments
8 min read
Writing a Polite Crawler: sitemap-gen for the Sites SSGs Forgot

Writing a Polite Crawler: sitemap-gen for the Sites SSGs Forgot

Comments
9 min read
What's actually in a modern favicon set (and why everyone gets it wrong)

What's actually in a modern favicon set (and why everyone gets it wrong)

1
Comments
10 min read
I Built a FastAPI QR Code Service and the Library Choice Mattered More Than the Code

I Built a FastAPI QR Code Service and the Library Choice Mattered More Than the Code

Comments
9 min read
The Right-Sized Image Service: A FastAPI Watermarker in ~110 MB

The Right-Sized Image Service: A FastAPI Watermarker in ~110 MB

Comments
10 min read
grep's flat output is the wrong abstraction for exploratory searches

grep's flat output is the wrong abstraction for exploratory searches

Comments
9 min read
Dead Code in Python Is Undecidable — So I Built a Detector That Admits It

Dead Code in Python Is Undecidable — So I Built a Detector That Admits It

Comments
10 min read
Building linkcheck: Why I Stopped Parsing Markdown with Regex

Building linkcheck: Why I Stopped Parsing Markdown with Regex

Comments
9 min read
loading...