(Almost) Lockless Stream Buffering

Sharing (and saving) bytestreams effectively.

Recently, I’ve been working on retooling the audio processing code for serenity, a Discord bot library. Adding features like looping, seeking, and shared resources between calls is made difficult when all input data arrives over pipes from ffmpeg and similar decoders. Due to this, I’ve designed a thread-safe shared stream buffer intended to lock only on accessing and storing new data.

Thoughts on Vana'diel

Thoughts on a world I've long left.

It’s strange, I think, how a sense of nostalgia for a virtual world (or point in time) arises from where we least expect it. A visual aesthetic, the feel of a specific piece of music, an outlook on the world and one’s place in its community. More and more, my thoughts have been drawn by these flashes towards the time I spent in Vana’diel—not a world I thrived in, but one that has nevertheless shaped me.

Custom Open vSwitch Actions

A short tutorial on extending Open vSwitch.

For a project I’ve been working on (reimplementing some past work), being able to easily enable pushback at various points in the network is fairly important. For this, I wanted to try something I’d both learn from and be able to use as a springboard for later development and testing – mininet (and by extension, Open vSwitch) seemed like a good fit. Part of this requires a new feature to be hacked on top of OpenFlow: probabilistic packet dropping. I’ve written this short walkthrough/tutorial on the process for the benefit of anyone looking to make their own modifications. A full repository is included here.

[EDIT 2019-03-27]: Updated for OVS revision 8e73833.