article: Every Prototype Is Also a Measurement Tool - #140
Conversation
kunman93
left a comment
There was a problem hiding this comment.
very well written.
P.S. I used AI to review your PR, otherwise I wouldn't have found all of these findings.
| Whether it’s a completely new, innovative product or the next iteration of an existing one, I keep seeing the same pattern. | ||
|
|
||
| Right from the start — during requirements definition, system architecture, and in early functional prototypes — one crucial element is often overlooked. | ||
| And this happens regardless of whether you’re developing an electric toothbrush, a coffee machine, or a medical ventilator. |
There was a problem hiding this comment.
| And this happens regardless of whether you’re developing an electric toothbrush, a coffee machine, or a medical ventilator. | |
| This happens regardless of whether you’re developing an electric toothbrush, a coffee machine, or a medical ventilator. |
| And this happens regardless of whether you’re developing an electric toothbrush, a coffee machine, or a medical ventilator. | ||
|
|
||
| From day one, the device is designed with the finished product in mind. | ||
| What's often forgotten is this: the path to that finished product is long, full of unknowns that must be explored, understood, and — most importantly — measured. During development, the final product doesn’t exist yet. |
There was a problem hiding this comment.
| What's often forgotten is this: the path to that finished product is long, full of unknowns that must be explored, understood, and — most importantly — measured. During development, the final product doesn’t exist yet. | |
| What's often forgotten is this: the path to the finished product is long, full of unknowns that must be explored, understood, and — most importantly — measured. During development, the final product doesn’t exist yet. |
|
|
||
| From day one, the device is designed with the finished product in mind. | ||
| What's often forgotten is this: the path to that finished product is long, full of unknowns that must be explored, understood, and — most importantly — measured. During development, the final product doesn’t exist yet. | ||
| It only emerges through countless iterations, tests, measurements, debugging loops, and insights. |
There was a problem hiding this comment.
| It only emerges through countless iterations, tests, measurements, debugging loops, and insights. | |
| It emerges only through countless iterations, tests, measurements, debugging loops, and insights. |
|
|
||
| ## The missing piece: measurability during development | ||
|
|
||
| Especially in early phases, core functions of the device often need to be explored experimentally. |
There was a problem hiding this comment.
| Especially in early phases, core functions of the device often need to be explored experimentally. | |
| Especially in the early phases, core functions of the device often need to be explored experimentally. |
| **But for development, the opposite is true.** | ||
|
|
||
| System integrators and engineers need access to all relevant signals — and since nobody knows at the beginning which signals will turn out to be relevant later, "relevant" effectively means *everything*. | ||
| All raw sensor data, all actuator control values, all internal states (such as state machine states), ideally at the native sampling rate. |
There was a problem hiding this comment.
| All raw sensor data, all actuator control values, all internal states (such as state machine states), ideally at the native sampling rate. | |
| All raw sensor data, all actuator control values, and all internal states (such as state machine states), ideally at the native sampling rate. |
| 4. **Selective logging:** | ||
| Developers choose only the signals relevant for the current measurement. This requires more logic and user interaction. | ||
| 5. **Event-based logging:** | ||
| Useful for signals that change infrequently (e.g., system states). Harder to use with CSV because timestamps must be transmitted. |
There was a problem hiding this comment.
| Useful for signals that change infrequently (e.g., system states). Harder to use with CSV because timestamps must be transmitted. | |
| Useful for signals that change infrequently (e.g., system states) but harder to use with CSV because timestamps must be transmitted. |
| Developers choose only the signals relevant for the current measurement. This requires more logic and user interaction. | ||
| 5. **Event-based logging:** | ||
| Useful for signals that change infrequently (e.g., system states). Harder to use with CSV because timestamps must be transmitted. | ||
| 6. **Separate channels:** |
There was a problem hiding this comment.
| 6. **Separate channels:** | |
| 6. **Separate channels:** |
|
|
||
| Both approaches can work — but only if the architecture supports them. | ||
| Once again, this brings us back to early design decisions. | ||
| Inter-controller communication must either be designed for the required data volume and frequency, or the main processor must provide a system clock or heartbeat that other controllers can synchronize to. |
There was a problem hiding this comment.
| Inter-controller communication must either be designed for the required data volume and frequency, or the main processor must provide a system clock or heartbeat that other controllers can synchronize to. | |
| Inter-controller communication must either be designed for the required data volume and frequency, or the main processor must provide a system clock or heartbeat that other controllers can synchronize with. |
| > A prototype that 'works' is useful".\ | ||
| "A prototype that is measurable is invaluable. |
There was a problem hiding this comment.
| > A prototype that 'works' is useful".\ | |
| "A prototype that is measurable is invaluable. | |
| > A prototype that “works” is useful. A prototype that is measurable is invaluable. |
|
|
||
| Without complete and correctly timed measurement data, debugging becomes guesswork and optimization becomes trial and error. Planning a clear developer interface early saves time, reduces frustration, and dramatically accelerates product development. | ||
|
|
||
| Or, to put it another way: |
There was a problem hiding this comment.
| Or, to put it another way: | |
| Or, to put it another way: | |
| ## The missing piece: measurability during development | ||
|
|
||
| Especially in early phases, core functions of the device often need to be explored experimentally. | ||
| Proofs-of-concept usually only answer a simple question: _Does it work at all?_ How it works in detail only becomes clear over the course of the project. |
There was a problem hiding this comment.
| Proofs-of-concept usually only answer a simple question: _Does it work at all?_ How it works in detail only becomes clear over the course of the project. | |
| POC'a usually only answer a simple question: _Does it work at all?_ How it works in detail only becomes clear over the course of the project. |
| 4. **Selective logging:** | ||
| Developers choose only the signals relevant for the current measurement. This requires more logic and user interaction. | ||
| 5. **Event-based logging:** | ||
| Useful for signals that change infrequently (e.g., system states). Harder to use with CSV because timestamps must be transmitted. |
There was a problem hiding this comment.
| Useful for signals that change infrequently (e.g., system states). Harder to use with CSV because timestamps must be transmitted. | |
| Useful for signals that change infrequently (e.g., system states), this is harder to use with CSV because timestamps must be transmitted. |
| In one of my recent projects, I was fortunate: a logging function already existed, though not in the required scope. | ||
| Extending it was accepted without much resistance. | ||
| Still, it became clear once again that retrofitting logging late is far more work than planning it upfront. |
There was a problem hiding this comment.
| In one of my recent projects, I was fortunate: a logging function already existed, though not in the required scope. | |
| Extending it was accepted without much resistance. | |
| Still, it became clear once again that retrofitting logging late is far more work than planning it upfront. | |
| I was fortunate in one of my recent projects as a logging function already existed. Unfortunately it was not (yet) fit for purpose. | |
| We were allowed to extend it without excessive deliberation. | |
| That said, retrofitting the existing solution was more complicated than if we had planned the logging capability upfront. |
| As a result, the entire data path — both between processors and in the logging output — had to be reworked to support native-rate raw data logging. | ||
| It took more than a week of unplanned work before all raw data finally appeared correctly at the logging interface. |
There was a problem hiding this comment.
| As a result, the entire data path — both between processors and in the logging output — had to be reworked to support native-rate raw data logging. | |
| It took more than a week of unplanned work before all raw data finally appeared correctly at the logging interface. | |
| As a result, the entire data path — both between processors and in the logging output — had to be reworked to support logging at the raw data rate. | |
| It took more than a week of unplanned work before all of the raw data finally appeared correctly at the logging interface. |
| As a result, the entire data path — both between processors and in the logging output — had to be reworked to support native-rate raw data logging. | ||
| It took more than a week of unplanned work before all raw data finally appeared correctly at the logging interface. | ||
|
|
||
| ## Example: pressure sensor calibration during operation |
There was a problem hiding this comment.
| ## Example: pressure sensor calibration during operation | |
| ## Example: Pressure Sensor Calibration During Operation |
| Inter-controller communication must either be designed for the required data volume and frequency, or the main processor must provide a system clock or heartbeat that other controllers can synchronize to. | ||
| These are not details you want to figure out late in the project. | ||
|
|
||
| ## Why logging must be planned from day one |
There was a problem hiding this comment.
| ## Why logging must be planned from day one | |
| ## Why Logging Must Be Planned From Day One |
| A well-designed early concept saves time, makes the project more robust, and — most importantly — accelerates development. | ||
| Debugging becomes painful when you can’t see what’s happening inside the system. | ||
|
|
||
| ## Example: logging in a highly complex distributed system |
There was a problem hiding this comment.
| ## Example: logging in a highly complex distributed system | |
| ## Example: Logging in a Highly Complex Distributed System |
|
|
||
| The key takeaway: logging must be considered from the very beginning — during system architecture design, hardware design, and even component selection — to avoid performance issues later. | ||
|
|
||
| ## Distributed systems: logging across multiple controllers |
There was a problem hiding this comment.
| ## Distributed systems: logging across multiple controllers | |
| ## Distributed Systems: Logging Across Multiple Controllers |
| Most importantly, the output must be synchronized to the system clock, ideally by including timestamps. | ||
| Without proper timing, measurement data quickly becomes ambiguous and hard to interpret. | ||
|
|
||
| ## When data volume becomes a problem |
There was a problem hiding this comment.
| ## When data volume becomes a problem | |
| ## When Data Volume Becomes a Problem |
| All raw sensor data, all actuator control values, all internal states (such as state machine states), ideally at the native sampling rate. | ||
| Only with this level of visibility can you truly understand system behavior, develop features efficiently, analyze bugs, and systematically identify root causes. | ||
|
|
||
| ## Turning prototypes into measurement instruments |
There was a problem hiding this comment.
| ## Turning prototypes into measurement instruments | |
| ## Turning Prototypes Into Measurement Instruments |
| What's often forgotten is this: the path to that finished product is long, full of unknowns that must be explored, understood, and — most importantly — measured. During development, the final product doesn’t exist yet. | ||
| It only emerges through countless iterations, tests, measurements, debugging loops, and insights. | ||
|
|
||
| ## The missing piece: measurability during development |
There was a problem hiding this comment.
| ## The missing piece: measurability during development | |
| ## The Missing Piece: Measurability During Development |
|
|
||
| ## Example: pressure sensor calibration during operation | ||
|
|
||
| The same project also showed why logging actuator commands is just as important as logging raw sensor data — both at native frequency and fully time-synchronized. |
There was a problem hiding this comment.
| The same project also showed why logging actuator commands is just as important as logging raw sensor data — both at native frequency and fully time-synchronized. | |
| This same project also showed why logging actuator commands is just as important as logging raw sensor data — both at controller native frequency and fully time-synchronized. |
| Without complete and correctly timed measurement data, debugging becomes guesswork and optimization becomes trial and error. Planning a clear developer interface early saves time, reduces frustration, and dramatically accelerates product development. | ||
|
|
||
| Or, to put it another way: | ||
| > We’re not just building a tea machine. First, we’re building a measurement instrument. |
There was a problem hiding this comment.
| > We’re not just building a tea machine. First, we’re building a measurement instrument. | |
| > We’re not just building a tea machine. First: we’re building a measurement instrument. |
I am unfamiliar with git. I hope I did everything correctly....
Regarding the picture: I copied it from Unsplash. Am i required to put in a reference somewhere?