cmccabe-bin is a collection of scripts I wrote over time. Maybe they'll be useful to someone else. The other reason I put them online is to make it easier for me to keep all the different machines I own that use these scripts in sync.


cmccabe-etc is a collection of UNIX configuration and preference files that I keep in my home directory. I offer these in hopes that they're useful to someone.


Salvo is an artillery-style game for the Android platform. I had a lot of fun making it and learning about the platform. It's available for purchase for $1 on the Android Market


Timetracker is a very small program I wrote while I was self-employed to track how much time I was spending on different things. It's basically a set of stopwatches that you can turn on and off. It uses the curses library.

Project Hail

From the Project Hail : "The goal of Project Hail is to provide language-neutral, OS-neutral, highly available distributed computing services that others may use to build cloud computing applications." One of the components of Hail is CLD, the coarse locking daemon. CLD does distributed locking. I modified CLD's networking layer to use XDR (External Data Representation) for its messages.

The Ceph Distributed Filesystem

Ceph is a distributed filesystem designed for reliability, scalability, and performance. Similar to Lustre and GlusterFS, Ceph provides a single filesystem spanning a cluster of dedicated servers. Unlike filesystems such as pNFS (parallel NFS), Ceph distributes metadata to a cluster of "MDS nodes."

I work on the Ceph filesystem, and also on RADOS, which is the object store that Ceph uses as its backend. I worked on the configuration management code, the object store code, and the Python bindings for librados.. I also wrote a tool called obsync which is similar to s3sync, but which can sync directly to RADOS.


I really like the ideas behind Google Go (also called Golang). I wanted to give the language a try. So, I wrote a tool named Poker-odds in Go to calculate the odds of getting a particular type of poker hand in a Texas Hold Em' poker game. It takes as inputs your hand, and gives you the probability of getting a pair, straight, flush, etc.

[cmccabe@highcastle poker-odds]$ ./poker-odds -a 'KS QS' -b '4S 7H 8S'
22.22% chance of nothing
37.68% chance of a pair
8.60% chance of two pair
1.55% chance of three of a kind
1.55% chance of a straight
28.41% chance of a flush


handle_core is a little crash dump handler which can send you an email when a core file is generated. It also limits the number of core files in the crash dump directory to a value of your choosing. It doesn't require much setup.