Tinkering
Come for the Foo, stay for the Bar
-
Nix journey part 0: Learning and reference materials
In this series I'll be documenting my journey learning Nix and this first installment is more of a prequel. A common complaint when learning Nix is that the documentation "is not good", and I think what people mean by that is that the documentation is spread across several sources which may or may not be easy to find, or that there is no explanation at all in official documentation. This post is a collection of both official and unofficial resources.
-
Bitmask tables
I found myself looking for a specific type of bitmask and couldn't find what I was looking for. These were easy to make, so I've put them on the internet for your benefit.
-
Optimization story - quantum mechanics simulation speedup
As part of my PhD I do computational modeling of quantum-biological systems. One of my simulations was misbehaving and in certain cases could take 8 hours to complete. That's really bad when you're trying to iterate quickly. This post describes how I made a series of optimizations to reduce the runtime by 250x via profiler driven algorithmic improvements, rewriting the core in Rust, and making use of parallelism.
-
Using notifiers to give yourself the day off
When you're running experiments that take ~8 hours wouldn't it be nice if the experiment told you when it was done rather than needing babysitting? In this post I'll show you how I used Twilio to do just that.
-
Interacting with Assembly in Rust
When you're investigating performance problems you may find yourself reading or writing assembly. Rust has a nice set of tools for interacting with assembly in a variety of ways such as viewing the assembly generated by a particular function.
-
Property-based testing in Rust with Proptest
Software testing is industry standard practice at this point, but there's a variety of ways to test your software ranging from the most basic of unit tests all the way up to mutation testing. Property-based testing is a testing technique in which you declare abstract properties of your system, feed it randomly generated inputs, then check whether your properties are upheld. In this post I'll discuss the benefits of property-based testing and how to do it in Rust.
-
How to build a dice roller service in Rust
Let's build a simply web service in Rust using Rocket.