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.

I removed 1,918 comments across twelve workers. 51 of them were load-bearing.

I removed 1,918 comments across twelve workers. 51 of them were load-bearing.

2
Comments
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
A stale hash failed 29 of 59 tests. The tool that refreshes hashes had never seen that copy.

A stale hash failed 29 of 59 tests. The tool that refreshes hashes had never seen that copy.

1
Comments
4 min read
Asked whether my tree was coherent, I said yes. The number turned out to be 30 of 55.

Asked whether my tree was coherent, I said yes. The number turned out to be 30 of 55.

1
Comments
3 min read
Four of my claims cited evidence that contradicted them, and nothing had ever read it

Four of my claims cited evidence that contradicted them, and nothing had ever read it

1
Comments
3 min read
My progress was 0.5% or 7.3%, depending on which denominator the report used

My progress was 0.5% or 7.3%, depending on which denominator the report used

1
Comments
3 min read
My verifier accepted "13 of 13" by finding the number 13 once

My verifier accepted "13 of 13" by finding the number 13 once

1
Comments
2 min read
I labelled a dependency cycle "unknown" and called it rigour

I labelled a dependency cycle "unknown" and called it rigour

1
Comments
3 min read
My registry accepted a duplicate ID, and the wrong thing failed three steps later

My registry accepted a duplicate ID, and the wrong thing failed three steps later

2
Comments
3 min read
Two required components had no design at all, and the numbering hid it

Two required components had no design at all, and the numbering hid it

1
Comments
3 min read
My checker reported 11 unknown names. Declaring all 11 in one place would have passed and been wrong.

My checker reported 11 unknown names. Declaring all 11 in one place would have passed and been wrong.

1
Comments
3 min read
My end-to-end run is ten of ten, and one of those ten is just my word for it

My end-to-end run is ten of ten, and one of those ten is just my word for it

1
Comments
3 min read
My parser reported a parse error on a file that was never malformed

My parser reported a parse error on a file that was never malformed

1
Comments
3 min read
A deprecated value has to live somewhere, and widening the set was the wrong somewhere

A deprecated value has to live somewhere, and widening the set was the wrong somewhere

1
Comments
3 min read
My check ran green every time and its result could never reach the thing that needed it

My check ran green every time and its result could never reach the thing that needed it

1
Comments 2
3 min read
My build went green and the permanent record kept almost none of it

My build went green and the permanent record kept almost none of it

2
Comments 1
3 min read
My determinism check can only test one producer in seven, and the print says so

My determinism check can only test one producer in seven, and the print says so

2
Comments 1
3 min read
My duplicate-code detector flagged the check I had just written. I deleted the duplication, not the rule.

My duplicate-code detector flagged the check I had just written. I deleted the duplication, not the rule.

2
Comments 1
3 min read
My checker blamed the other tool, and the defect was in the one doing the blaming

My checker blamed the other tool, and the defect was in the one doing the blaming

1
Comments 2
3 min read
I added three new checks and ten unrelated tests went red. That was the system working.

I added three new checks and ten unrelated tests went red. That was the system working.

1
Comments 2
3 min read
My freshness check went stale every time someone did the right thing

My freshness check went stale every time someone did the right thing

2
Comments 2
3 min read
My privacy scan found 412 leaks. 374 of them were one line of my own tooling.

My privacy scan found 412 leaks. 374 of them were one line of my own tooling.

2
Comments 1
3 min read
The measurement in my permanent log was a string literal

The measurement in my permanent log was a string literal

1
Comments 1
3 min read
My negative test stopped being negative when a config file grew by four rows

My negative test stopped being negative when a config file grew by four rows

Comments 1
3 min read
Two tools disagreed 67 times, and the checker was wrong in all 67

Two tools disagreed 67 times, and the checker was wrong in all 67

1
Comments 1
3 min read
Both verifiers were honest, agreed with each other, and the signatures still failed

Both verifiers were honest, agreed with each other, and the signatures still failed

Comments 1
3 min read
All 23 of my line-number citations were wrong, and the coverage check could not notice

All 23 of my line-number citations were wrong, and the coverage check could not notice

5
Comments 1
3 min read
My audit printed 0 of 0 and called it a pass

My audit printed 0 of 0 and called it a pass

5
Comments
3 min read
My check passed because the bug preserved the exact thing it was measuring

My check passed because the bug preserved the exact thing it was measuring

6
Comments 1
3 min read
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.

7
Comments 2
4 min read
An unquoted heredoc halved my backslashes and turned a character class into the letter w

An unquoted heredoc halved my backslashes and turned a character class into the letter w

5
Comments
4 min read
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 3
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 4
3 min read
My end-to-end test wrote three blocks into the append-only log it was testing

My end-to-end test wrote three blocks into the append-only log it was testing

5
Comments
3 min read
My build record kept the word pass and dropped the number the verdict rested on

My build record kept the word pass and dropped the number the verdict rested on

5
Comments
4 min read
A control named COVERAGE printed 4/4 at fourteen commits. The 4 was how many things it counts.

A control named COVERAGE printed 4/4 at fourteen commits. The 4 was how many things it counts.

5
Comments
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 1
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 1
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.

6
Comments 8
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
A control that had genuinely failed printed exit 0, because I read its status through a pipe

A control that had genuinely failed printed exit 0, because I read its status through a pipe

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
A reader said my gate was checking the wrong thing. Proving him right broke my harness twice

A reader said my gate was checking the wrong thing. Proving him right broke my harness twice

7
Comments
4 min read
Our parser read 0 of 887 lines from our own production data. The gate didn't call it a failure.

Our parser read 0 of 887 lines from our own production data. The gate didn't call it a failure.

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 9
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 2
4 min read
The discriminator between a membrane and a logger

The discriminator between a membrane and a logger

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