diff --git a/content/posts/newsletter-016/index.md b/content/posts/newsletter-016/index.md
index a8e2a0fc0..e0b20bb6f 100644
--- a/content/posts/newsletter-016/index.md
+++ b/content/posts/newsletter-016/index.md
@@ -107,6 +107,32 @@ You can learn more [on the Learn Wgpu news page][learn-wgpu-news].
 
 ## Library & Tooling Updates
 
+### [profiling]
+
+This month, [profiling] was released on crates.io. This crate provides a very
+thin abstraction over instrumented profiling crates like `puffin`, `optick`,
+`tracy`, and `superluminal-perf`.
+
+Mark up your code like this:
+
+```rust
+#[profiling::function]
+fn some_function() {
+    burn_time(5);
+
+    for i in 0..5 {
+        profiling::scope!("Looped Operation");
+        burn_time(1);
+    }
+}
+```
+
+And get visualizations like this (`optick` and `puffin` shown):
+
+[![Screenshot of Optick Profiler](optick-small.png)](optick.jpeg)
+
+[profiling]: https://crates.io/crates/profiling
+
 ### [rkyv]
 
 [rkyv] is a zero-copy deserialization framework for Rust. It's similar to
diff --git a/content/posts/newsletter-016/optick-small.png b/content/posts/newsletter-016/optick-small.png
new file mode 100644
index 000000000..f159febf1
Binary files /dev/null and b/content/posts/newsletter-016/optick-small.png differ
diff --git a/content/posts/newsletter-016/optick.jpeg b/content/posts/newsletter-016/optick.jpeg
new file mode 100644
index 000000000..92b8d623f
Binary files /dev/null and b/content/posts/newsletter-016/optick.jpeg differ