Chuck Blake
cb "at"

Chuck Blake


Currently a quantitative analyst at a large, old and well known hedge fund in Manhattan. Formerly a researcher in computational quantitative finance for a an equity options trading firm in Chicago, and more formerly still a research scientist at the Laboratory for Computer Science at MIT working with Frans Kaashoek in the Parallel & Distributed Operating Systems (PDOS) group and really the whole motley crew of graduate students also in NMS, ANA, and PMG.

I did a B.S. in physics from Caltech and then an M.S. in physics from UCSD and did some abortive PhD work. I then worked for several years at BBN Systems & Technologies (now Verizon) in the distributed systems research group. See my Curriculum Vitae/Resume for more details.

Recent Work

Only some of this work has publication quality write-ups.


Sachin Katti, Dina Katabi, Charles Blake, Eddie Kohler, and Jacob Strauss MultiQ: Automated Detection of Multiple Bottlenecks Along a Path ACM Internet Measurement Conference, Sicily, October 2004.

Rodrigo Rodrigues, Charles Blake When Multi-Hop Peer-to-Peer Routing Matters International Peer-to-Peer Systems 2004, La Jolla, December 2004.

Charles Blake, Dina Katabi Cross Traffic: Noise or Data?, Bandwidth Estimation 2003, San Diego, December 2003.

Charles Blake, Rodrigo Rodrigues, High Availability, Scalable Storage, Dynamic Peer Networks: Pick Two, Proceedings of the 9th Workshop on Hot Topics in Operating Systems (HotOS '03), Lihue (Kauai), Hawaii, May 2003.

Dina Katabi, Charles Blake, Inferring Congestion Sharing and Path Characteristics for Packet Interarrival times, MIT TR-828, December 2001.

Jinyang Li, Charles Blake, Douglas S. J. De Couto, Hu Imm Lee, and Robert Morris, Capacity of Ad Hoc Wireless Networks, Proceedings of the 7th ACM International Conference on Mobile Computing and Networking (MobiCom '01), Rome, Italy, July 2001, pages 61-69. Abstract, PostScript, PDF.

Charles Blake and Steven Bauer, Simple and General Profiling with PCT, Proceedings of the USENIX 2002 Annual Technical Conference, June 2002, pages ??-??. Abstract,, PostScript, PDF, HTML, Home Page.

Past Work

I used work a bit on SFS -- the MIT secure/self-certifying file system. I used to caretake the exokernel project. I participate at some level in most of the various research going on at PDOS, and several other 5th floor LCS activities.

In addition to systems and networks, I'm also interested in performance analysis, support tools, reflection in programming languages, search structure library design issues, and dynamic data representation runtimes. Non-CS academic interests include applied statistics (errors-in-variables methods, semiparametric estimation, learning theory, density estimation, small sample methods), quantum computation and algorithms, the philosophy of science, various areas of physics, biology, economics, and finance.


This ls in Python has a lot of functionality I've wanted in an 'ls' for a long time -- flexible file category definition, multi-level sorting, colorization, customizable formats, etc. It can also be convenient for just formatting lists of strings as a nice table. It's nice, but a little slow when sort specifications are complex. Usually, you want to give this program a fancy environment. Um...Ok. That was really slow. I re-wrote it in C and it's 50X faster which actually makes a usability difference. As part of the re-write I have added many features such as 256 color xterm support, a real configuration file, "styles" and so on. There are also Gentoo, Debian, and RPM, packages for it.

Another useful thing is a little filesystem-based aliasing system I wrote called, naturally enough, alias. This was inspired by the way the Plan 9 rc shell works and years of annoyance for using a non-standard shell and having both regular "su" and "su -m" not really cutting it. With alias you can get aliases that are nicely as inheritable as the environment. This is also useful as a replacement for the shell wrapper pattern -- it's a simple way to tweak the behavior of compilers and linkers in the diverse, confusing, and complex build environments common on systems today. Alias supports both adding and suppressing arguments. E.g. one can enforce an architecture-specific flag and suppress stripping via an environment variable "ALIAS_GCC=gcc -mcpu=pentium4 !-s".

An ongoing project is this portable, generalized statistical profiling package, PCT.

This patch adds an explicit macro stack to the GNU C preprocessor. It adds #pushdef and #popdef preprocessor directives so that explicit scope control is at least possible.

A few obsolete patches to the ancient 2.2 kernel NFS v3 for Linux working tree. Originally done for SFS (the self-certifying file system. First a patch that prevents Linux from losing mount points on network filesystems when the remote server renames the directory. Second, a patch that makes Linux actually use the NFS v3 access call to determine access rights.


I like lots of random things, notably mountain fun (cycling, hiking, ...), shooting pool, cooking, etc. An amusing little misadventure is here. I've been a big fan of the Simpsons, though they've clearly jumped the shark at this point.

Tue Sep 25 14:19:27 EDT 2012