DEV Community

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

A Per-URL TODO List Chrome Extension in 150 Lines — Single-Key chrome.storage Design, URL Normalization, and Three Sync Paths for the Toolbar Badge

A Per-URL TODO List Chrome Extension in 150 Lines — Single-Key chrome.storage Design, URL Normalization, and Three Sync Paths for the Toolbar Badge

1
Comments
5 min read
A 150-Line `whentime tokyo london ny` CLI in Rust — and Why You Need IANA tzdata, Not 'UTC + N'

A 150-Line `whentime tokyo london ny` CLI in Rust — and Why You Need IANA tzdata, Not 'UTC + N'

Comments
5 min read
Three Address Checksums, Three Engineering Philosophies — Verifying Base58Check, Bech32m, and EIP-55 in 250 Lines of Browser JS

Three Address Checksums, Three Engineering Philosophies — Verifying Base58Check, Bech32m, and EIP-55 in 250 Lines of Browser JS

Comments
6 min read
A 230-Line Chrome MV3 Extension That Copies the Page Selection as Markdown — Without `<all_urls>`

A 230-Line Chrome MV3 Extension That Copies the Page Selection as Markdown — Without `<all_urls>`

Comments
6 min read
BIP39 in 180 Lines of Vanilla JS — Mnemonic Generation, Validation, Seed Derivation, and the Japanese Wordlist Trap

BIP39 in 180 Lines of Vanilla JS — Mnemonic Generation, Validation, Seed Derivation, and the Japanese Wordlist Trap

2
Comments 1
6 min read
Why Your Web Audio Tuner Sucks at Low Notes (and What to Use Instead of FFT)

Why Your Web Audio Tuner Sucks at Low Notes (and What to Use Instead of FFT)

Comments
6 min read
GitHub's Stargazers API Caps at 40,000. Here's How Star-History Tools Fake the Rest

GitHub's Stargazers API Caps at 40,000. Here's How Star-History Tools Fake the Rest

Comments
6 min read
A 3.7 KB Othello Engine: Bitboards in Rust, Raw WASM, No wasm-bindgen

A 3.7 KB Othello Engine: Bitboards in Rust, Raw WASM, No wasm-bindgen

Comments
6 min read
I Built a Japanese Poetry Quiz and the Web Speech API Showed Me Its Teeth

I Built a Japanese Poetry Quiz and the Web Speech API Showed Me Its Teeth

1
Comments
5 min read
I Finally Understand the SVG d Attribute — Because I Built an Editor for It

I Finally Understand the SVG d Attribute — Because I Built an Editor for It

1
Comments
8 min read
I Put the Same Mandelbrot Kernel on the CPU and the GPU — and Watched float32 Crack

I Put the Same Mandelbrot Kernel on the CPU and the GPU — and Watched float32 Crack

Comments
6 min read
Why setTimeout Is a Bad Metronome — and What to Use Instead

Why setTimeout Is a Bad Metronome — and What to Use Instead

Comments
5 min read
How Much Faster Is Rust/WASM Than JS for Image Filters? I Ran Both Side by Side and Measured

How Much Faster Is Rust/WASM Than JS for Image Filters? I Ran Both Side by Side and Measured

2
Comments
6 min read
A Cross-OS Port Finder in Rust — One CLI, Three Completely Different Data Formats

A Cross-OS Port Finder in Rust — One CLI, Three Completely Different Data Formats

Comments
9 min read
A 300-Line GitHub Actions Security Linter: Five Rules That Catch the CVE Patterns

A 300-Line GitHub Actions Security Linter: Five Rules That Catch the CVE Patterns

Comments
7 min read
A TLS Certificate CLI in Rust — No OpenSSL, No Ceremony, Just a Fail-the-Build Exit Code

A TLS Certificate CLI in Rust — No OpenSSL, No Ceremony, Just a Fail-the-Build Exit Code

1
Comments
7 min read
CSV Sort, Done Right: Why `sort -t,` Is a Trap and What a 300-Line PHP CLI Does Instead

CSV Sort, Done Right: Why `sort -t,` Is a Trap and What a 300-Line PHP CLI Does Instead

1
Comments
9 min read
Reimplementing fd in 500 lines of Rust (and what I learned about the crates it stands on)

Reimplementing fd in 500 lines of Rust (and what I learned about the crates it stands on)

1
Comments
10 min read
I Built a .env Diff Tool That Refuses to Print Values

I Built a .env Diff Tool That Refuses to Print Values

1
Comments 1
10 min read
Writing a Regex Playground in 200 Lines of Rust

Writing a Regex Playground in 200 Lines of Rust

Comments
9 min read
A 10 MB Markdown-to-HTML Service in Rust with pulldown-cmark

A 10 MB Markdown-to-HTML Service in Rust with pulldown-cmark

Comments
9 min read
git log --pretty is a tiny DSL: building a zero-dep CHANGELOG generator

git log --pretty is a tiny DSL: building a zero-dep CHANGELOG generator

Comments
8 min read
Seed Data Without a Dependency Tree: A Tiny PHP CLI Instead of Faker

Seed Data Without a Dependency Tree: A Tiny PHP CLI Instead of Faker

Comments
10 min read
sharp on Alpine Without Tears: a 260 MB Image Resize API in Hono

sharp on Alpine Without Tears: a 260 MB Image Resize API in Hono

Comments
9 min read
Writing a tar Inspector in Rust with Three Dependencies

Writing a tar Inspector in Rust with Three Dependencies

Comments
9 min read
A Tiny PHP Invoice-PDF API: Slim 4, dompdf, and the JPY Rounding Footgun

A Tiny PHP Invoice-PDF API: Slim 4, dompdf, and the JPY Rounding Footgun

Comments
9 min read
Writing dig in 500 Lines of Rust (with hickory-resolver, the trust-dns successor)

Writing dig in 500 Lines of Rust (with hickory-resolver, the trust-dns successor)

Comments
10 min read
Writing Cron Semantics in ~100 Lines of TypeScript

Writing Cron Semantics in ~100 Lines of TypeScript

2
Comments
8 min read
PHPStan's JSON Output Is Noise. I Wrote a Formatter with a Baseline Diff.

PHPStan's JSON Output Is Noise. I Wrote a Formatter with a Baseline Diff.

Comments
9 min read
I Got Tired of Pasting EXPLAIN Plans Into Web Tools, So I Wrote pg-explain-viz

I Got Tired of Pasting EXPLAIN Plans Into Web Tools, So I Wrote pg-explain-viz

Comments
10 min read
Discord Slash Commands Without an SDK: ed25519 in 250 Lines of TypeScript

Discord Slash Commands Without an SDK: ed25519 in 250 Lines of TypeScript

Comments
10 min read
Writing an HTTP Load Tester That Doesn't Lie About p99

Writing an HTTP Load Tester That Doesn't Lie About p99

Comments
8 min read
A Portfolio-Sized URL Shortener in 300 Lines of PHP

A Portfolio-Sized URL Shortener in 300 Lines of PHP

1
Comments
9 min read
Describing Cron Expressions: Why Templates Don't Work, and What Does

Describing Cron Expressions: Why Templates Don't Work, and What Does

Comments
8 min read
Writing a YAML Linter in Rust Because YAML Is Secretly Terrible

Writing a YAML Linter in Rust Because YAML Is Secretly Terrible

Comments
11 min read
Parsing Prisma Schema By Hand: A 300-Line CLI That Emits Mermaid ER Diagrams

Parsing Prisma Schema By Hand: A 300-Line CLI That Emits Mermaid ER Diagrams

Comments
10 min read
Debugging TCP by Building Your Own Logging Proxy in 400 Lines of Rust

Debugging TCP by Building Your Own Logging Proxy in 400 Lines of Rust

1
Comments
8 min read
Building an XPath Query Tool in PHP — Slice XML Like a Pro

Building an XPath Query Tool in PHP — Slice XML Like a Pro

Comments
8 min read
Building a Changelog Generator in Rust — From Conventional Commits to Keep a Changelog

Building a Changelog Generator in Rust — From Conventional Commits to Keep a Changelog

Comments
8 min read
Building a .gitignore Generator CLI in Python — 51 Templates, Zero Dependencies

Building a .gitignore Generator CLI in Python — 51 Templates, Zero Dependencies

Comments
9 min read
Building a MIME Type Lookup CLI in TypeScript — 800+ Types, Magic Bytes, and Zero Dependencies

Building a MIME Type Lookup CLI in TypeScript — 800+ Types, Magic Bytes, and Zero Dependencies

Comments
8 min read
Building a TOML Formatter in Rust — Sorted Keys, Aligned Equals, and CI-Friendly Check Mode

Building a TOML Formatter in Rust — Sorted Keys, Aligned Equals, and CI-Friendly Check Mode

Comments
8 min read
Building an HTTP Status Code Reference CLI in PHP — No Dependencies Required

Building an HTTP Status Code Reference CLI in PHP — No Dependencies Required

Comments
8 min read
I Wrote a .env Linter from Scratch — Here Are the 9 Rules That Actually Matter

I Wrote a .env Linter from Scratch — Here Are the 9 Rules That Actually Matter

Comments
8 min read
Building a Configurable TCP Echo Server in Rust with Tokio

Building a Configurable TCP Echo Server in Rust with Tokio

Comments
8 min read
Implementing semver 2.0.0 from scratch in TypeScript — no semver package allowed

Implementing semver 2.0.0 from scratch in TypeScript — no semver package allowed

Comments
9 min read
Building a strict INI parser from scratch in Python — no configparser allowed

Building a strict INI parser from scratch in Python — no configparser allowed

Comments
8 min read
Building a Concurrent TCP Port Scanner in Rust with Tokio Semaphores

Building a Concurrent TCP Port Scanner in Rust with Tokio Semaphores

Comments
9 min read
phpcron: a tiny PHP CLI for poking at cron expressions

phpcron: a tiny PHP CLI for poking at cron expressions

Comments
8 min read
Writing a compliant RFC 6902 JSON Patch CLI in one evening, zero runtime deps

Writing a compliant RFC 6902 JSON Patch CLI in one evening, zero runtime deps

Comments
9 min read
A 600-line Rust log rotator, or: what logrotate would look like if it had no config file

A 600-line Rust log rotator, or: what logrotate would look like if it had no config file

Comments
10 min read
Micro-benchmarking TypeScript Without Lying to Yourself

Micro-benchmarking TypeScript Without Lying to Yourself

1
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

1
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
loading...