DEV Community

Mahiro Hirakawa profile picture

Mahiro Hirakawa

Independent. Local-first developer tools, and a verification substrate for effects that have to be undoable. Rust. Limits written down before features.

My safety check was an assert. Five lines made the module refuse to load without it.

My safety check was an assert. Five lines made the module refuse to load without it.

6
Comments 1
3 min read

Want to connect with Mahiro Hirakawa?

Create an account to connect with Mahiro Hirakawa. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
git commit with a pathspec ignored my index and committed the file as it sat on disk

git commit with a pathspec ignored my index and committed the file as it sat on disk

5
Comments 2
4 min read
A red I expected hid an instrument that was reading an empty directory

A red I expected hid an instrument that was reading an empty directory

7
Comments 1
3 min read
2500 tests in my public repository and nothing was running them

2500 tests in my public repository and nothing was running them

6
Comments
4 min read
A maintainer closed all four of my pull requests in one minute, and the close was correct

A maintainer closed all four of my pull requests in one minute, and the close was correct

5
Comments
3 min read
I wrote that their test harness had no denominator. Their own script header said it first.

I wrote that their test harness had no denominator. Their own script header said it first.

6
Comments
3 min read
I sent 17 pull requests to one repository and the maintainer locked it for 24 hours

I sent 17 pull requests to one repository and the maintainer locked it for 24 hours

6
Comments
4 min read
cast(bool, x) is a promise to the type checker. At runtime it is the identity function.

cast(bool, x) is a promise to the type checker. At runtime it is the identity function.

5
Comments 7
3 min read
Four agent frameworks got the same approval check wrong. Four others got it right.

Four agent frameworks got the same approval check wrong. Four others got it right.

5
Comments
3 min read
The scanner read 2581 files and reported zero. The defect was on line 403.

The scanner read 2581 files and reported zero. The defect was on line 403.

5
Comments
3 min read
47% of my lifetime views are on articles with no link out

47% of my lifetime views are on articles with no link out

6
Comments
3 min read
Four filters returned nothing and I read all four as nothing being there

Four filters returned nothing and I read all four as nothing being there

6
Comments
3 min read
I built a tool to catch empty scans read as passes, and shipped it with an empty scan read as a pass

I built a tool to catch empty scans read as passes, and shipped it with an empty scan read as a pass

5
Comments
2 min read
My grep filter had no digits in it. The one field with a digit was the one I said was missing

My grep filter had no digits in it. The one field with a digit was the one I said was missing

8
Comments
4 min read
I build a tool that says don't trust self-report. Then I trusted mine seven times in one day

Real examples of silent software failures

I build a tool that says don't trust self-report. Then I trusted mine seven times in one day

9
Comments 8
5 min read
Eight of my nine mutants died, and the survivor wasn't a weak test

Eight of my nine mutants died, and the survivor wasn't a weak test

7
Comments
3 min read
The rollback in gemini-cli restored an empty directory, and the test for it passed

The rollback in gemini-cli restored an empty directory, and the test for it passed

6
Comments
3 min read
Three gotchas installing a plugin into someone else's agent

Three gotchas installing a plugin into someone else's agent

6
Comments
4 min read
The discriminator between a membrane and a logger

The discriminator between a membrane and a logger

6
Comments 5
3 min read
A red gate and a silent one turned out to mean the same thing

A red gate and a silent one turned out to mean the same thing

5
Comments
3 min read
Relabeling 22 backlog items moved a progress bar 23 points, and I hadn't shipped anything

Relabeling 22 backlog items moved a progress bar 23 points, and I hadn't shipped anything

5
Comments
3 min read
My editor's background linter filled the one drive I had left, 341GB at a time

My editor's background linter filled the one drive I had left, 341GB at a time

5
Comments
3 min read
Deleting files inside WSL doesn't shrink the disk they lived on

Deleting files inside WSL doesn't shrink the disk they lived on

5
Comments
3 min read
A double-quoted $HOME sent three of my directories nowhere I could find them

A double-quoted $HOME sent three of my directories nowhere I could find them

5
Comments
3 min read
git commit -m with a path argument doesn't commit what you staged

git commit -m with a path argument doesn't commit what you staged

5
Comments
3 min read
My CI has been red for 18 days. It never started a single job.

My CI has been red for 18 days. It never started a single job.

8
Comments 2
4 min read
Undo almost never proves what it undid

Undo almost never proves what it undid

9
Comments 2
4 min read
The one place in OpenClaw's tool path where a write can still be stopped

Real gateway test proves file writes intercepted

The one place in OpenClaw's tool path where a write can still be stopped

14
Comments 14
5 min read
A real model's write, escrowed before it landed

A real model's write, escrowed before it landed

5
Comments
4 min read
The bug only showed up once the feature started working

The bug only showed up once the feature started working

5
Comments
4 min read
Shipping a binary 4 days late, honestly

Shipping a binary 4 days late, honestly

5
Comments
3 min read
The only way our GitHub Action went green was when the verifier was missing

Confesses to shipping a fail-open stub in CI

The only way our GitHub Action went green was when the verifier was missing

8
Comments 8
3 min read
The same wrong number was in six files and I still don't know where it came from

The same wrong number was in six files and I still don't know where it came from

6
Comments
4 min read
The enum had six reasons and the code needed a seventh

The enum had six reasons and the code needed a seventh

6
Comments
4 min read
Six things reported green and were lying

Six things reported green and were lying

8
Comments 2
4 min read
The limits page is longer than the feature list

The limits page is longer than the feature list

8
Comments 9
4 min read
I ran 10,373 mutations through a reversibility gate. Tamper detection caught 600 of 600.

Honest benchmark caveats and crates link inside

I ran 10,373 mutations through a reversibility gate. Tamper detection caught 600 of 600.

8
Comments 5
14 min read
What "undo" actually means when the target is a real repo, not a fixture

What "undo" actually means when the target is a real repo, not a fixture

6
Comments
7 min read
The undo has to exist before the write does

Only 13.8% of tools currently support inverses

The undo has to exist before the write does

7
Comments 9
8 min read
ime bugs, display-width bugs, and bidi bugs are the same bug

ime bugs, display-width bugs, and bidi bugs are the same bug

4
Comments
4 min read
Output is cheap now. Keep the receipts.

Output is cheap now. Keep the receipts.

5
Comments 11
4 min read
Teaching a grader the difference between pаypаl and paypal

Teaching a grader the difference between pаypаl and paypal

5
Comments
4 min read
a width check said the string was safe to cut. it split a kanji in half.

a width check said the string was safe to cut. it split a kanji in half.

5
Comments 2
7 min read
The Enter key that submits your form while a Japanese user is still typing

The Enter key that submits your form while a Japanese user is still typing

4
Comments 4
5 min read
Three ways CJK text breaks big open-source projects, over and over

Three ways CJK text breaks big open-source projects, over and over

4
Comments 6
6 min read
The Sandwich Test: How I Check If A Dev-Tool Idea Is Actually Winnable Before I Build It

The Sandwich Test: How I Check If A Dev-Tool Idea Is Actually Winnable Before I Build It

5
Comments 2
5 min read
How this page breaks Japanese lines

How this page breaks Japanese lines

4
Comments
2 min read
The Enter key that fires while you're still typing

The Enter key that fires while you're still typing

5
Comments 2
3 min read
I cataloged 93 CJK and Unicode bugs in open source. Most are the same five mistakes.

I cataloged 93 CJK and Unicode bugs in open source. Most are the same five mistakes.

4
Comments
5 min read
A searchable corpus of CJK and Unicode bugs in open-source libraries

A searchable corpus of CJK and Unicode bugs in open-source libraries

5
Comments
4 min read
Your main input handles IME composition. The rename box next to it doesn't.

Your main input handles IME composition. The rename box next to it doesn't.

6
Comments 2
4 min read
Japan-readiness is a cliff, not a gradient: what 92 dev tools' front doors actually look like

Japan-readiness is a cliff, not a gradient: what 92 dev tools' front doors actually look like

1
Comments
6 min read
I find Japan-shaped holes in global software

I find Japan-shaped holes in global software

1
Comments
4 min read
how to build a CJK/IME regression suite for a terminal or editor app

how to build a CJK/IME regression suite for a terminal or editor app

1
Comments
5 min read
I tested whether AI coding agents break on Japanese input

I tested whether AI coding agents break on Japanese input

1
Comments
3 min read
the bugs that only break in Japanese (and how to find them in someone else's repo)

the bugs that only break in Japanese (and how to find them in someone else's repo)

1
Comments
4 min read
the bug a merged fix forgot: how i find first OSS contributions that actually merge

the bug a merged fix forgot: how i find first OSS contributions that actually merge

1
Comments
5 min read
I scanned 15 funded developer tools for Japan-readiness. Every one scored F.

I scanned 15 funded developer tools for Japan-readiness. Every one scored F.

1
Comments
3 min read
The Japan-readiness Standard

The Japan-readiness Standard

1
Comments
3 min read
the same few bugs keep hiding in libraries you already trust

the same few bugs keep hiding in libraries you already trust

1
Comments 2
6 min read
loading...