I sent an email this morning without the attachment. It was a dense, three-page analysis of a data recovery project for a legacy mainframe system-the kind of work that requires me to play digital archaeologist, brushing dust off ancient sectors of magnetic tape.
I had spent four hours perfecting the prose, ensuring the technical nuances were handled with a surgeon’s grace. I hit send with a flourish, only to realize thirty seconds later that the actual report, the “thing” the client needed, was still sitting on my desktop.
I mention this because it’s a trivial version of a much more expensive blindness. We become so enamored with the logic and the delivery that we forget the physical vessel. We spend all our energy on the “message” (the software, the data, the protocol) and treat the “envelope” (the hardware, the physical layer, the copper) as an immutable fact of nature that cannot be questioned.
The Masterpiece of Compensatory Engineering
Ines was sitting in a lab that smelled faintly of ozone and stale coffee, facing a version of this same blindness. On her screen, she had 412 lines of filtering logic. It was a masterpiece of compensatory engineering.
The Pilot Paradox: Hundreds of lines of “intelligent” software struggling to bridge a 12% gap in raw data.
It included duplicate suppression rules, triple-check retry loops, and a complex Bayesian weighting system designed to guess if a “missed” tag was actually absent or just being shy. This code was written to save a project that was currently failing its pilot at a major distribution center.
The read rates were hovering at a dismal 88%, and the system integrators were demanding more “intelligent” software to bridge the gap. Ines is a brilliant architect, but that night, she felt more like a janitor. She was cleaning up a mess she hadn’t made.
She looked at the tag sitting on her desk-a standard, off-the-shelf RFID label that procurement had bought by the million because it saved four cents per unit over the custom alternative.
The Anatomy of a Failure
Then she did something she hadn’t done in of engineering: she picked up a craft knife and cut the tag open. She peeled back the laminate with the care of someone performing an autopsy.
Underneath, the copper trace of the antenna was revealed. It was thinner than she had imagined, a fragile, spidery geometric pattern that looked almost accidental. She held it up to the light. It was a “general purpose” antenna, designed to work “okay” on cardboard, “poorly” on plastic, and “not at all” on metal.
Her client was currently trying to track steel engine components.
She looked from the pathetic sliver of copper in her hand to the 412 lines of code on her monitor. Those lines of code were essentially a very long, very expensive apology for the fact that the copper trace was the wrong shape for the job.
The software team had spent “tuning” the middleware. They had tweaked the filtering logic until it was a house of cards. They had added retry rules that increased latency to the point where the conveyor belt had to be slowed down by 14%.
Every time the hardware failed to deliver a clean signal, the software was expected to hallucinate the missing data. We call this “software-defined” everything, but in reality, it’s often “software-compensated” failure.
We treat the physical layer as a given-something that arrived in a box, stamped with the authority of a supplier-while the code is seen as infinitely malleable. The code is the only part of the system the team is actually permitted to change.
The “Permitted Layer” Problem
I used to believe that abstraction was the highest form of engineering. I thought that if you could wrap a physical problem in enough layers of logic, the physical problem ceased to exist. I was wrong.
I spent nearly on a project for a shipping port where we tried to “filter out” the radio frequency noise of stacks of ten-ton shipping containers. We wrote incredibly clever algorithms to predict where a tag should be based on its last known velocity and the signal strength of nearby readers.
We failed. We failed because you can’t out-code the way radio waves bounce off a mountain of steel. We should have changed the tags. I should have insisted on it. But I didn’t, because I didn’t think I was allowed to.
“Changeable, malleable, infinite”
“Fixed, static, procurement-locked”
In most organizations, the boundary between what is “fixed” and what is “changeable” is drawn by department charts and procurement contracts, not by engineering logic. The software team is allowed to change the code. The operations team is allowed to change the process.
But the hardware? The hardware was bought by a different department on a . To suggest the hardware is the problem is to suggest that the procurement department made a mistake, or that the supplier relationship needs to be renegotiated.
So the engineers do what they are permitted to do: they write more code. They build middleware to suppress the noise. They build duplicate-check engines. They build retry logic. They store the hardware’s mistakes in the software’s memory, which is the most expensive storage medium on earth when you consider the long-term maintenance of that complexity.
The tragedy is that the physical layer is often the cheapest place to solve the problem. If Ines could have changed the antenna geometry-if she could have tuned the tag to the specific dielectric constant of the material it was being placed on-those 412 lines of code would have collapsed into ten.
The system would have worked because the physics was right, not because the software was clever.
In my work as a digital archaeologist, I often find old systems from the or that are surprisingly robust. When you look at the boards, you see traces that were hand-drawn.
The engineers didn’t have the luxury of infinite processing power to “clean up” a bad signal. They had to get the signal right the first time. They tuned the induction coils. They matched the impedances. They respected the copper.
The Reality of the Warehouse
Today, we treat the physical world as a messy “input” that needs to be “sanitized” by a digital “process.” We’ve forgotten that the most elegant solution is often a physical one.
This is where the relationship with a supplier usually breaks down. Most vendors sell you a catalog. They sell you Part Number A-104, and if it doesn’t work in your specific warehouse, they suggest you buy a more expensive reader or hire a consultant to write better middleware. They treat their hardware as a finished product, a static fact.
But the reality of industrial IoT is that there is no such thing as a “standard” environment. Moisture, metal, the regional frequency differences between a facility in Frankfurt (ETSI) and one in Chicago (FCC), the speed of a specific conveyor-these are not “noise” to be filtered. They are the reality the system must inhabit.
When I see companies like
operating in this space, I realize they are filling the gap that the “permitted layer” creates.
They don’t treat the tag as a black box that arrives from a catalog. They treat the antenna geometry, the chip selection, and the encapsulation material as variables that can be tuned. They are doing the “illegal” thing: they are touching the hardware. They are taking the responsibility for the signal before it ever reaches the software.
If Ines had been working with a partner who viewed RFID as a technical service rather than a commodity order, she wouldn’t have been sitting there with a craft knife at 2:00 AM.
She would have had a tag that was engineered for the engine components from day one. She wouldn’t have needed 412 lines of filtering logic. She would have had a clean, 99.8% read rate, and she could have spent her time building features that actually added value to the business, instead of writing apologies for a piece of copper.
The most expensive code in the world is the logic written to apologize for a piece of copper that was never allowed to change.
Every stuck system has a layer that is treated as unchangeable. Usually, it’s the layer where the most expensive mistakes are hidden. In the world of RFID and NFC, that layer is almost always the air interface-the point where the digital world meets the physical one.
We are so afraid of the “hardware mistake” that we commit ourselves to a “software debt” that lasts for the life of the project. We treat the hardware as a fixed cost and the software as a variable cost.
In reality, the software complexity required to “fix” bad hardware is a recurring tax that never goes away. It’s a tax on latency, a tax on compute power, and a tax on the sanity of engineers who have to maintain a system that is essentially trying to defy physics.
Moving Data, Not Fixing Physics
I’m still thinking about that email I sent without the attachment. It’s a reminder that no matter how much I polish my “logic,” if the delivery mechanism fails, the whole effort is zero.
In the world of engineering, we need to stop being so polite to the physical layer. We need to stop assuming the box we were given contains the only solution. Sometimes, the most “innovative” thing a software architect can do is put down the keyboard, pick up a craft knife, and ask why the copper is shaped like that.
And then, they need to find a partner who is willing to change the shape of the copper so the software can finally do what it was meant to do: move data, not fix bad physics.
The next time you find yourself writing a “retry” loop for a physical signal, ask yourself:
Who decided this part was fixed? What did that decision save them, and what is it costing you?
If the answer is “we bought these from a catalog and we aren’t allowed to change them,” you aren’t doing engineering. You’re doing damage control. And the world has enough janitors.
What we need are people who aren’t afraid to tune the antenna.