Welcome, dear traveller, to my virtual stronghold! Here you will find information on various projects I have worked on, from software to math to music.
Basics about my life and hobbies are below. Here are quick links to my CV (comprehensive), my résumé (a subset of items most relevant to the work I'm looking to do in the near future), and my research publications list. See the meta page for more information about contacting me and technical aspects of this site.
I encourage you to email me your feedback on anything on this site so I can prioritize improvements.
(You can also click "Email me about this page" at the top or bottom of any page
to pre-fill the subject with the page you were on.)
[#@] 2020-10-03: In 2016, a fellow intern at Microsoft Research told me that
some applications require a floating-point number system with
subnormal numbers
in order to work correctly
but do not want to use the subnormal numbers of
typical floating-point hardware, which can be very slow because the hardware
does not optimize this relatively rare case.
I'm unsure this need still exists, but I had a clever idea to solve it that I'm finally (briefly) writing up:
emulate a virtual floating-point number system with a reduced exponent range
in which subnormal numbers are represented by normal numbers of the physical system. Read more...
[#@] 2020-09-22: I've finally set up containers,
including temporary containers,
on my main Firefox profile.
This is a huge improvement over using the default and private browsing contexts
(with the former configured to clear site data automatically on exit)
to get a poor man's 2 temporary containers, one of which doesn't save history. Read more...
My CV lists a few additional projects
that currently do not have publicly available materials;
please email me if you are interested and
I will look into making the materials public if I have time.
My research publications list
includes a few more projects in which I played too small a role to list them here.
Caveat: Much of the material on this site is years old;
years below indicate when the bulk of the work was done,
though some projects have received minor maintenance later.
Anything you find here may be "stale",
i.e., no longer fully representative of my current work or opinions.
In addition, there are several projects I have no interest in continuing ("unmaintained") or where the artifacts are probably no longer useful in their current form but the artifacts or documentation may contain useful information ("obsolete").
I encourage you to make use of what you can
and to email me if you would like a status update on anything here.
Since 2020-08-31, I am attempting to accurately flag the status of every project; these flags take precedence over any conflicting statements left on individual pages.
"Dormant" means the material may still be useful and I don't plan to do any more but would consider doing more if people ask. "On hold" means I would like to do more if the right conditions arise.
Featured:Espalier(on hold; 2014-2018): A tool that truly integrates structured data into the spreadsheet paradigm to make it easier for non-experts to build a wide class of interactive applications.
Featured:Elastic sheet-defined functions(on hold; 2017-2020): An enhancement to conventional spreadsheet tools (designed and formalized, but with no public prototype implementation yet) that makes it easier for non-experts to reuse computations on input arrays of different sizes.
This was my internship project at Microsoft in 2017 and 2018. The ideal solution would be a tool that integrates the features of Espalier and the conventional spreadsheet model, but that would take years of additional work and success is uncertain; this project is much closer to benefiting at least tens of thousands of users.
Featured:Braid(active; 2016-present): A tool to mirror one Git repository into a subdirectory of another (merging with downstream changes) that is
more convenient than
Git submodules in many situations.
I got involved with Braid when I needed a tool like it for Espalier, and I'm continuing to develop and maintain Braid when I have time because I believe it addresses a fundamental problem in software development.
3C(TBD if worth continuing; 2020-2021): A tool that partially automates the conversion of C code to Checked C. 3C aims to provide the first feasible way for organizations with large legacy C codebases (that they don't want to drop everything to rewrite in a better language) to comprehensively verify their code's spatial memory safety. See also our paper. I contributed to 3C when I worked at Correct Computation.
Escape puzzle game(intermittently active; 2019-2020): Projects related to the puzzle game Escape: an enhanced version of the app, a Klotski embedding and a Coq formalization.
SVAuth(obsolete?; 2016): A technique for runtime verification of security properties applied to web-based single sign-on.
This was my internship project at Microsoft in 2016.
While the technique is really interesting, I am unconvinced (and we were unable to convince peer reviewers) that it is the best solution for verifying single sign-on protocols.
MigratingTable(obsolete?; 2015): A wrapper library for replicated servers using Azure Table storage that allows data to be migrated from one underlying table to another transparently to the server.
This was my internship project at Microsoft in 2015.
While the technique is again interesting, technology may have progressed so that this library is no longer needed before anyone got around to adopting it.
My 4-player StepMania version(dormant, better options may exist; 2017): My fork of a fork of StepMania that supports 4 players, previously used for events at MIT.
Dance pad(dormant; 2015): Information about the high-quality dance pad I use to enjoy the thrill of Dance Dance Revolution and clones.
Competitive-ratio approximation schemes(dormant; 2014): Materials from a research / survey project on competitive ratio approximation schemes (theoretical computer science).
Cryptographic identity management(on hold; 2011): Remarks on authentication of services and individuals, and an obsolete DANE implementation.
Streaming-model clustering(dormant; 2007-2008): Computer science research on the k-center clustering problem in the streaming model.
Currently just a paper is posted.
My email solution(partly obsolete; 2007-2008): How I rigged Evolution to act as a Gmail replacement
that can send real mail from my other email accounts.
Measurements for LibreOffice(minimally maintained; 2007-2009): An add-in that tracks units of measure and significant figures in OpenOffice / LibreOffice Calc.
mgear, a make-based build tool(abandoned; 2007-2009): A build tool on top of GNU Make that provides several
additional features, most of them meant to improve the robustness of the
build process.
Least-unpopularity matching criteria(dormant; 2006-2008): Information and documents from my computer science research on better optimality criteria
and algorithms for the assignment of people to positions based on one-sided preferences.
SuperbChemistry for LibreOffice(maintained; 2007-2008, 2020): An extension for OpenOffice and LibreOffice that applies superscript and subscript formatting to chemical formulas in bulk in Writer documents.
Utilities(intermittently active, parts obsolete; 2005-present): Assorted Linux-centric utilities for basic file management, RPM software management, web log analysis, and more.
My "computing platform"(on hold, stale; 2005-2008): Ideas for an elegant "platform" that would help users
and developers get things done faster.
Music(dormant, parts stale; 2005-2007): Some piano music I have composed or played.
Logic Designer(unmaintained; 2005-2007): A program for AMS calculators (TI-89, etc.) that runs circuits of logic gates.
My custom Linux kernel(obsolete; 2006-2007): A customized kernel in which sticky directories behave extra-specially.
Javari(unmaintained, not tested recently; 2006): My contributions to the Javari project that provides checking and inference for a
"read only" type qualifier in Java.
Inversion animation(dormant; 2004): A MATLAB program that animates geometric inversion of the plane.
Rsync materials(mostly obsolete; 2005-2010): My source repository, packages, information, etc. for rsync, the fast, versatile remote file-copying tool.
Mathematical documents(dormant, stale; 2003-2007): Various mathematical documents, including "Connected Sets".
The suidperl story(dormant, stale; 2005): A musing about security issues with user-mounted Linux filesystems.
Mirror(dormant, better options likely exist; 2004-2005): A Java applet that presents Java programs through reflection.
FishSimulator(minimally maintained; 2003): A Java applet that simulates fish swimming in a lake.
C++ Big Integer Library(unmaintained; 2002-2010): An easy-to-use C++ library for calculations on big integers.
See my CV for a comprehensive list of activities, or my résumé for the qualifications most relevant to the work I'm looking to do in the near future.
General facts
As is probably clear, I'm a geek in several areas, the main one being computing.
I want to make computing as easy as it conceptually can be,
in support of all the other things people need and want in life.
Here are the basics of my personal computing setup and information security.
I hope to grow personally and work toward fulfilling my broader responsibilities to society
through my participation in Unitarian Universalist and other groups.
Unfortunately, as I've faced personal challenges over the past few years,
I've prioritized my immediate well-being, career, and hobbies over my responsibilities to society.
I'm working toward promoting my values through my finances as well;
I have a lot still to figure out, but it's clear that
GiveWell will be a major component of my approach.
Major stages
Since January 2022, I'm working as an applied scientist at Amazon.
In September 2020 - December 2021, I worked as a software engineer at Correct Computation,
where I had the pleasure of working with my former mentor from the University of Maryland, Michael Hicks.
In September 2014 - November 2018, I lived in Cambridge, MA and was a graduate student in computer science
at MIT.
My main project there was Espalier.
My email addresses at MIT were rmccutch(at)mit.edu and
rmccutch(at)csail.mit.edu [both may stop working at any time and should no longer be used].
In 2007-2011, I completed my B.S. in computer science and math at the University of Maryland, College Park.
Email there: rmccutch(at)umd.edu [may stop working at any time and should no longer be used]
and in the computer science department, rmccutch(at)cs.umd.edu [no longer works].