v0.2 - HTML, Throughput Measurements, API Changes

4 minute read Published:

I’m pleased to announce the release of v0.2, available today. Version 0.2 provides a number of new features including HTML reports and throughput measurements, fixes a handful of bugs, and adds a new, more powerful way to configure and construct your benchmarks. It also breaks backwards compatibility with the 0.1 versions in a number of small but important ways. Read on to learn more! What is is a statistics-driven benchmarking library for Rust.

Benchmarking In Stable Rust With

5 minute read Published:

When I initially announced the release of, I didn’t expect that there would be so much demand for benchmarking on stable Rust. Now, I’d like to announce the release of 0.1.2, which supports the stable compiler. This post is an introduction to benchmarking with and a discussion of reasons why you might or might not want to do so. What is is a benchmarking library for Rust that aims to bring solid statistical confidence to benchmarking Rust code, while maintaining good ease-of-use, even for programmers without a background in statistics.

Are Benchmarks From Cloud CI Services Reliable?

6 minute read Published:

After I released the first version of, (a statistics-driven benchmarking tool for Rust) I was asked about using it to detect performance regressions as part of a cloud-based continuous integration (CI) pipeline such as Travis-CI or Appveyor. That got me wondering - does it even make sense to do that? Cloud-CI pipelines have a lot of potential to introduce noise into the benchmarking process - unpredictable load on the physical hosts of the build VM’s, or even unpredictable migrations of VMs between physical hosts.

Penny's Sword - RWBY - Part 2

11 minute read Published:

Salutations! Welcome to the second part of my post on my replica of Penny’s Sword from Rooster Teeth’s animated web show RWBY. If you haven’t read part 1, go ahead and check it out. When we left off, most of the parts were shaped and primed but not yet assembled. This time we’ll get into the painting, and some of it might be hard to visualize so take a look at the tournarounds if you’re not sure what I mean.

Penny's Sword - RWBY - Part 1

12 minute read Published:

In this post, I’ll show you how I built a light-up replica of Penny Polendina’s unnamed swords from Rooster Teeth’s excellent animated web show RWBY. RWBY is what originally got me into propmaking - I’ve already made Yang’s Ember Celica shotgauntlets and Adam’s Wilt & Blush Sword/Shotgun Combo. This is the first time I’ve documented my process, so hopefully you find it useful. Blueprints & Design First, a quick overview of how I intended to do this build.

Experiments In NES JIT Compilation

22 minute read Published:

Inspired by the always-incredible work on Dolphin, I decided to write myself an NES emulator called Corrosion a couple years ago. I managed to get it working well enough to play basic games, and then put the project aside. This post is not about the emulator itself, but rather the JIT compiler I added to it last year and the upgrades to said JIT compiler I’ve made over the past few weeks.

Parsing NES ROM Headers with nom

8 minute read Published:

Long, long ago (December 2015) I wanted to learn how emulators worked, so I decided to write an NES emulator. Not only that, but I opted to write it in Rust, a language which I had never used before. A crazy idea, to be certain, but once I was done I had indeed learned a great deal about emulators, the NES, and Rust. Anyway, I’ve been working on that project again lately, doing some maintenance work and upgrades.

Calling Rust From Python

11 minute read Published:

Hello! This is a detailed example of exposing Rust code to other languages (in this case, Python). Most articles I’ve seen that cover this topic uses really trivial example functions, skipping over a lot of the complexity. Even the better ones out there typically don’t have a pre-existing, reasonably complex program to work with. I’m going to start with trivial functions and build my way up to being able to define a scene for my raytracer in Python using a series of calls to Rust, then render it and return the resulting image data back to Python.

Writing a Raytracer in Rust - Part 3 - Reflection and Refraction

12 minute read Published:

Hello again, and welcome to the final part of my series on writing a raytracer in Rust (Part 1, Part 2). Previously we implemented a basic raytracer which could handle diffuse shading of planes and spheres with multiple objects and multiple lights. This time, we’ll add texturing, reflection and transparent objects. First, I’ve refactored the common parts of Sphere and Plane out to a separate structure. Since this post is all about handling more complex surface properties, we’ll need a structure to represent them and avoid duplication.

Writing a Raytracer in Rust - Part 2 - Light and Shadow

9 minute read Published:

Welcome to Part 2 of my series on writing a raytracer in Rust. If you haven’t already, you may wish to read Part 1. Previously, we implemented a basic raytracer which can render only a single sphere with no lighting. This time, we’ll add multiple objects, planes, and basic lighting. Multiple Objects It’s pretty easy to change our scene definition to contain a Vec of spheres instead of just a single one.