Huon Wilson — 2021| huonw.github.io
Developer tools in browsers offer a "copy as cURL" function for network requests, giving an executable and editable 'replay' of the request. This is very convenient for sharing and debugging API requests.| huonw.github.io
When I file a bug, I can get more reliable minimal working examples using a shell script, leading to better bugs and faster help.| huonw.github.io
For an EV, Newtons (N) is a seemingly sensible version of L/100km or mpg, for measuring the efficiency of the car. Summing drag and rolling resistance forces aligns closely to real world observations.| huonw.github.io
Match + labelled blocks & breaks = fallthrough. It works, but it's not very pretty!| huonw.github.io
GitHub Actions suggests using code like echo ... >> $GITHUB_ENV, but echo ... | tee -a $GITHUB_ENV is often better.| huonw.github.io
Memory-mapping a file is convenient, but it's a hazard when used with async/await concurrent code: it means a "simple" memory index does blocking IO.| huonw.github.io
Hit y to create a permalink to a GitHub directory, file or line. They're easy to make, stable, and even render a preview in some places.| huonw.github.io
QR codes reverse the usual order: decimal works better than base64 for encoding binary data, despite it requiring many more digits.| huonw.github.io
QR codes are now critical infrastructure here in NSW, Australia. Let's learn how to make them better.| huonw.github.io
A QR code can use one of four error correction levels. Higher error correction forces denser codes, but allows scanning in more situations. A trade-off!| huonw.github.io
I've been writing a bunch of code designed to enhance the life of just me and my wife. It's great fun.| huonw.github.io
Git worktrees and pyenv are effective tools to minimise the cost of a mental context switch when working on a Python library.| huonw.github.io
Integer overflow detection/handling in Rust is sometimes misunderstood.| huonw.github.io
Memory unsafety and memory leaks are distinct concepts, despite their names. Languages that are merely memory safe (both Rust and GC-reliant managed ones) have no guarantee of preventing memory leaks.| huonw.github.io
rr is the debugger for Rust (et al.) that is is almost too good to be true.| huonw.github.io
Two examples of using `simple_parallel`, which was recently updated to work on stable Rust.| huonw.github.io
An overview of my work on improving SIMD in Rust.| huonw.github.io
What is SIMD?| huonw.github.io
travis-cargo can now record coverage without requiring sudo.| huonw.github.io
I recently released primal 0.2: a crate for high-performance computation of properties related to prime numbers.| huonw.github.io
Rust can model properties of aggregate types with certain trait tricks, which makes closures and concurrent APIs interact well.| huonw.github.io
Rust 1.0 was made with...| huonw.github.io
Rust's `where Self: Sized` now offers new flexibility for writing object-safe traits.| huonw.github.io
My script for better Travis CI and Cargo integration has had some improvements, including support for recording test coverage via coveralls.io.| huonw.github.io
Manually configuring Travis CI to handle the Rust release trains and upload documentation is annoying. Getting a script to do it is far less annoying.| huonw.github.io
On focused libraries in Rust.| huonw.github.io
Homu and highfive were created for rust-lang, but you can easily benefit too.| huonw.github.io
The `Send` and `Sync` traits in Rust are cool, here are two edge-ish cases.| huonw.github.io
Rust stuff happened in Sydney, yay!| huonw.github.io
A short summary of the Sized trait and dynamically sized types in Rust.| huonw.github.io
An introduction to the low-level details of trait objects in the Rust programming language.| huonw.github.io
Rendering the crates on crates.io as a dependency graph.| huonw.github.io
Exploring Rust's escape hatch for writing low-level code that the powerful type system of Rust cannot guarantee to be safe.| huonw.github.io
Exploring idiomatic methods of handling runtime errors in Rust.| huonw.github.io
Implementing a k-nearest neighbour algorithm in Rust, using the powerful concurrency tools for simple and safe parallelisation.| huonw.github.io
An overview of so-called "object safety" in Rust, and why it is necessary for trait objects.| huonw.github.io
Closures in Rust are powerful and flexible, building on traits, generics and ownership.| huonw.github.io