diff --git a/handouts/src/28-story.md b/handouts/src/28-story.md
index 50ae3db3855d390ff0689ea22b8945be12ce2d88..e9a2c6d463cc2cea706521c013107b149722400d 100644
--- a/handouts/src/28-story.md
+++ b/handouts/src/28-story.md
@@ -8,4 +8,17 @@ care of, at least at our default settings of 34 simulation steps per saved
 image.
 
 Therefore, even though this is not the main topic of this course, I will cover a
-few things you can try to improve the simulation's storage I/O performance.
+few things you can try to improve the simulation's storage I/O performance. This
+chapter comes with the following caveats:
+
+- I/O timings are a lot more variable than compute timings, which means that a
+  stable benchmarking setup can only obtained with a longer-running job.
+  Microbenchmarking I/O requires a lot of care, and most of the time you should
+  just time the full simulation job.
+- The results of I/O optimizations will heavily depend on the storage medium
+  that you are using. Most of the conclusions that I reach in the following
+  chapters are explicitly marked as likely specific to my laptop's NVMe storage,
+  and it is expected that users of slower storage like hard drives or networked
+  filesystems will reach very different conclusions.
+- In real world simulation workloads, you should always keep in mind that doing
+  less I/O is another option that should be on the team's meeting agenda.