I study and practice computer programming and philosophy.
I am concerned for the well-being of the disadvantaged and for humanity's future.
I am working to apply what I learn from my studies to benefit those for whom I
My current work focuses on applying principles of functional programming and
type driven design to improve development, build, and release infrastructure.
Our watchwords are determinism, reliability, reproducibility, and receptivity.
My active side-projects involve writing programs in OCaml and doing research at
the intersection of programming language theory, type theory, critical
philosophy, semiotics, and cybernetics.
My studies of programming have been focused on the declarative paradigms of
and constraint programming.
My philosophical studies have recently been focused on the philosophy of logic
(especially structuralist logic), the philosophy of mathematics (especially
early 20th c., constructivism, and category-theoretic foundations), Kant's
critical system (especially in relation to the modern axiomatic method and type
theory), semiotics (especially the work of C.S. Peirce and Goguen's work in
algebraic semiotics), and the foundations of analytic philosophy. I have also
studied German idealism, critical theory, phenomenology, literary theory,
philosophy of language, and early modern philosophy.
We believe that programming can be, and should be, an intellectually rewarding
activity; that a good programming language is a powerful conceptual tool
— a tool for organizing, expressing, experimenting with, and even
communicating one's thoughts ... we think that programming can be, and should
be, part of the problem solving process itself; that thoughts should be
organized as programs, so that consequences of a complex set of assumptions
can be investigated by "running" the assumptions; that a conceptual solution
to a problem should be developed hand-in-hand with a working program that
demonstrates it and exposes its different aspects.
— Sterling & Shapiro, The Art of Prolog
Open Source Projects I've Contributed To
Dune is "a composable build system for OCaml".
I've contributed to the design and implementation of the CLI tooling.
ATD "stands for Adaptable Type Definitions. It
is a syntax for defining cross-language data types" written in OCaml. I extended
a small language feature.
Eliom is an OCaml framework for
client/server web apps. I've helped correct and improve some documentation.
Vyconf is a software appliance configuration
framework written in OCaml and under development in connection with the network
operating system VyOS. I contributed to the
code that parses the VyOS configuration language.
A few of these projects are completed. Several are dormant (but not dead).
Several are still under active development.
My Synechepedia is a
scrapbook/log/personal-wiki/homepage collecting notes, ideas, plans, excerpts
and records of my activities.
Consolate is an ongoing (but paused)
experiment in the modular design of modal console applications, written in OCaml.
Coding Made Easy at IS 62 K (Ditmas)
Coding Made Easy at IS 62 K
was a New York Cares project partnered with the
after-school program at Ditmas Junior High. Over the course of 14 weeks, we
provided students with tutoring and guidance on basic programming concepts,
techniques, and technologies in a relaxed and fun environment. I helped launch
this project in my capacity as a New York Cares Volunteer Team Leader. I
coordinated the volunteers, tailored the curriculum to the needs of each
individual student, and provided hands-on instruction and support on a weekly
tokenize.pl is a simple Prolog
tokenization utility. It provides a straightforward, and very limited, tool for
the tokenization of text.
tokenize.pl is available as a package
from the standard SWI-Prolog package repository.
protelog.pl is an experimental
library of Prolog syntax extensions, It is under irregular but ongoing
sml-utils is an ongoing project. It
is comprised of Standard ML modules (compatible with
SML/NJ) facilitating functionality that I have found
useful or interesting during the course of my experiments with, and studies of,
The tilde.town web ring
I was an active participant in the early days of
tilde.town and wrote most of the code for the
tilde.town web ring.
I am a moderator of, and frequent contributor to,
/r/prolog. The subreddit is dedicated to logic
programming generally, but it is dominated by slow motion discussions of Prolog.
At the moment, the bulk of our activity focuses on helping beginners get acquainted
with the language and figure out their homework problems.
I founded /r/futurebeats, establishing
the basic ethos, recruiting the initial moderators, and working out the core
norms with the earliest community members. Since then, a group of active and
talented moderators and contributers have built up a small online ecosystem,
with this subreddit at its center. I continue to moderate and contribute to the
community. Over the years, the subreddit has grown to over 60,000 subscribers
and something like a musical genre has formed in relation to it.