iex> Ken</>

I never asked why: shipping firmware on floppy disks in the mid-2010s

iex> Blog.post!("20260917-floppy-disks-firmware")
%Post{
title: "I never asked why: shipping firmware on floppy disks in the mid-2010s",
date: ~D[],
author: ,
reading_time: 4, # minutes
tags: [:embedded, :japan],
body: """

Around 2015 or 2016, I was writing embedded firmware for a passbook printer. The domestic version, for the Japanese market. When a release was ready, we delivered it to the customer on a floppy disk.

Not as a joke, not as a fallback. That was the delivery format.

Sony had stopped manufacturing them in 2011. Laptops had not shipped with drives for roughly a decade by then. And there we were, engineers at a large Japanese manufacturer, writing a build onto a 3.5 inch disk and sending it to a bank.

I later worked on the overseas version of the same product, though at a different time, and the floppy disks belong to the domestic one.

The part where I explain why

This is where the post is supposed to turn, and I give you the satisfying reason. Air-gapped by design. A certification that would cost more to redo than the disks cost to keep. A machine with a twenty year service life that shipped with a drive and will die with one.

I cannot give you that, because I do not remember, and I am fairly sure I never knew.

My best reconstruction is that the customer asked for it. Japanese banks run remarkably old systems and are institutionally careful, and a release procedure written at some point in the past has enormous staying power once it exists. Nobody at the bank was defending floppy disks. They had simply written down how firmware arrives, a long time ago, and nothing had ever forced them to open that document again.

So: probably not a security property. Probably not a clever constraint. Probably just a procedure that nobody had a reason to revisit, being followed by people who were not being paid to revisit it.

What I actually remember

Not the reasoning. The hassle.

Producing the deliverable was genuinely annoying, and the specifics have almost entirely evaporated. I could not tell you the steps now. What survives is the texture of it: a fiddly, careful, tedious process that had to be done exactly right, repeatedly, for reasons nobody in the room could have articulated.

That is what compliance work does to your memory. The friction stays and the content goes. I remember being irritated far better than I remember what I was doing.

The other half was on our side. I worked for a large Japanese manufacturer, with everything that implies. There was no real culture of proposing a different way of doing something. New methods were not sought out. A process that worked, in the narrow sense of producing an outcome that nobody complained about, was not a process anyone was rewarded for questioning.

The part that actually bothers me

It is not the floppy disks. Old hardware in banking is normal and often defensible, and I would not be surprised if there turned out to be a real reason I simply never learned.

What bothers me is that I was a young engineer, doing something visibly absurd, and I accepted "this is how we do it" as a complete answer. I did not go and find out. It did not occur to me that finding out was part of the job.

I have since built a whole approach to software out of asking why something is the way it is, and being suspicious of arrangements that persist because nobody has looked at them. I got there eventually. But there was a version of me who wrote a build onto a floppy disk in 2015 or 2016, thought "this is ridiculous", and then did it again the following month without once asking anybody a question.

"""
}
iex> Blog.Post.tip()
"If this post saved you time or taught you something, please consider buying me a coffee on Ko-fi ☕. It keeps me writing in the open."
iex> Blog.Post.adjacent()
%{
next: :nil
}
iex> Blog.archive()
iex> Blog.subscribe(:atom)
"/blog/atom.xml" # paste into any RSS reader
iex> Ken.tip()