I work at CCRi, a research company specializing in machine learning and analytics (especially geospatial analytics) in Charlottesville. My work email address is bducharme@ their domain name.

I have a BA in religion from Columbia University and received my masters in computer science from New York University's Courant Institute in the spring of 1996.

Three papers I wrote in pursuit of my masters (note that they have an outdated e-mail address under their titles in the Acrobat versions):

I wrote "Object-Oriented Development of SGML Applications" (48K Acrobat file) as part of an independent study project in the spring of 1993 to analyze the benefits that current OO literature could offer to SGML developers. Although the general ideas about OO-SGML correspondence in the paper have been superceded by the tremendous work done on groves and property sets and the Document Object Model since then, I'm still proud of the Smalltalk program that I wrote to demonstrate the paper's ideas. It reads a DTD, declares classes for each element type, and then reads the output of James Clark's nsgmls, instantiating each element to the appropriate class. It also reads formatting scripts to convert instantiated objects of simple HTML and TEI documents to RTF and TeX.

The paper was aimed at people (for example, project adviser Professor Ed Schonberg) who knew more about OO technology than about SGML. I presented a shorter, revised version of the paper for people who knew more about SGML than OO technology at SGML '95 in Boston, and the QUE Book "Using SGML" included a much dumbed-down version of the SGML '95 paper as its last chapter. Talk about repurposing your content.

In the fall semester of 1993, I wrote the paper "Increasing Concurrency in Object-Oriented Databases Using Semantic Information: A Survey" (64K Acrobat file) for Dennis Shasha's "Advanced Databases" course. This paper analyzed three others that explored ways to use the semantic information stored in an OO database to minimize the situations where one process must be held up until another is finished. (An RDBMS example would be blocking the update of a particular record until another update of that record had completed.) As per the assignment, the paper includes four discussion questions and answers at the end.

In the spring of 1996, I submitted the paper "solfish: Generating Text from an Existing Grammar" (17K Acrobat file) for Ralph Grishman's "Natural Language Processing" course. It used an extensive natural language parsing system written at NYU in Allegro Common Lisp with a domain of course registration so that users could enter English assertions and queries about students and course registration. I wrote a LISP program to randomly generate sentences from this grammar with the stated purpose of calling attention to weaknesses in the encoded grammar by generating sentences considered correct by that grammar but incorrect by a human proofreader. The other purpose was just for fun--to see what kinds of sentences it would generate, especially after the system's vocabulary was augmented with some more poetic vocabulary entries. (Sample output: "Her hazy ghosts only eat with fish. Ghosts fish often with moons. Fish mean to think. Zombie eggs generally sleep.")

See The Postmodernism Generator (start with the notes at the bottom before you try to read the actual essay you see) for a more recent, much more sophisticated application of the same principle.