Sometimes-Send Values in Rust

I came across an interesting question on Stack Overflow recently, and I found the process through which I developed my answer to be interesting on its own, so I’m going to document it here. If you are unfamiliar with Rust’s Send trait, I would suggest reading Send and Sync in the Rustonomicon. The bird’s-eye view…

async/await and hidden races

JavaScript has become one of my favorite languages. This is no secret to those who know me in a professional capacity. It used to be one of my most hated languages until I spent some time with it, over a dozen years ago. When I have to use other languages, I almost always find myself…

Simple node.js service configuration

There’s a myriad of npm modules for providing configuration to a node.js application or service, but I’ve always found them simultaneously over-engineered and lacking basic validation of the configuration document. I’ve settled on a pattern that works very well for my needs. It leverages the excellent Joi library for validation, and simple node built-ins for…

Hot-swapping virtio disks on QEMU

Many of the articles that cover hot-swapping disks on QEMU or QEMU-KVM either assume you’re using virt-manager/virtsh, cover USB disks and not virtio, or are for an old version of QEMU. The QEMU monitor has changed quite a bit over the years, apparently! This article will explain how to hot-remove and hot-add virtio-blk drives using…

My thoughts on the ALS challenge

Before you read this entry, please be aware that it might rub you the wrong way. (That’s okay with me if it’s okay with you. I don’t expect that everyone will share my perspective.) There’s always the one guy who has to be the party pooper, and I guess it’s my turn. Ever since hearing…

SGDQ 2013

Summer Games Done Quick 2013, a video game speedrunning marathon for charity, is underway. 100% of donations go to Doctors Without Borders. Please consider donating! My brother will be speed-running The Addams Family: Pugsley’s Scavenger Hunt (SNES) on Sunday, 2013-07-28, at approximately 10:05 AM EDT (GMT-4). The official estimated completion time for his run is 35…

Lock-free clustering of large PostgreSQL data sets

Since 2012-09-27, I have been collecting overstock data from TF2WH every five minutes and storing a snapshot of this data in my database. This enables me to do some really cool things, such as chart past data as well as make projections about future stock levels. For this amount of time, data collection has been…

Object Copying in C#

When working on some sort of data-driven project, I frequently have the need to allow deep-copying of data objects. There are several patterns that accomplish this, but I’ve settled on one in particular. Most .NET developers are probably familiar with the ICloneable interface. While this is a good starting point, it is not what I…

CategoriesC#

httpd migration complete

I’ve finished the httpd migration process. chrishowie.com is now using nginx as its primary httpd, which reverse-proxies to Apache for only a few mod_python and mod_mono web applications. Over the next few weeks, I’ll be trying to eliminate Apache entirely.

httpd and URI-to-site-mapping migration

Over the next week or so I’ll be working on migrating this site from Apache to nginx, as well as altering the way that various URLs map to sites/applications. I will be trying very hard to avoid any service interruptions by fully testing my nginx configuration before replacing Apache, but who knows what might happen….