profile picture

Blog

Contributing to Rust in 2017 and 2023

June 02, 2024 - 1418 words - 8 mins

This is a comparison of the contribution experience to the Rust standard library in 2017 and 2023. I have the possibly unique perspective of having contributed to the Rust standard library twice separated by many years.

read more

Beating QOI - Part 2

June 01, 2024 - 1221 words - 7 mins

This is the second part of a series on how the png crate was able to acheive performance on-par or better than QOI, while remaining fully compatible with the PNG standard.

This post will cover the optimizations used by the PNG encoder to achieve QOI-class performance. The PNG format is more complex than QOI, but it is still possible to achieve competitive performance by leveraging SIMD instructions and other optimizations.

read more

Beating QOI - Part 1

February 11, 2024 - 553 words - 3 mins

This is the first part of a series on how the png crate was able to acheive performance on-par or better than QOI, while remaining fully compatible with the PNG standard.

The purpose of lossless image compression is to reduce the size of an image while retaining the full pixel information. Modern formats generally use the same couple conceptual steps...

read more

Async Rust: "I can't let you do that"

February 10, 2024 - 1304 words - 7 mins

This is a story of trying out async Rust.

The Rust Project has spent upwards of five years working on async Rust. This was part of a deliberate strategy to attract corporate funding given that Mozilla wasn't going to support of the language forever. In that regard, it was a huge success. Use of Rust has continued to grow, and by all accounts the Rust Foundation is on sound financial footing.

As a long time Rust user, I've tried out async a couple times over the course of its development. The note that follows doesn't track any particular attempt, but tries to condense an overall feeling into a single story line. I hope it will be instructive to ecosystem leaders to see how the experience of trying out async Rust can go painfully wrong.

read more