The homepage of

LOGICAL • AI

artificial intelligence ⋅ mathematics ⋅ programming ⋅ quantitative design ⋅ civil liberties ⋅ humanism


The homepage of Dylan Holmes

LogicalAI

artificial intelligence ⋅ mathematics ⋅ programming ⋅ quantitative design ⋅ civil liberties ⋅ humanism

Saying when

A question-answering program capable of holding a conversation about what happened when. (Class project based on Longuet-Higgins's book Mental Processes.)

The hybrid numbers of microwave ovens

Microwave ovens measure time in strange and wonderful ways: you can type in three minutes as 3:00— but also as 2:60! In this article, I explore the properties of this number system and its relationship to another numbering system, binary coded decimal (BCD).

How to cross the street

By optimizing my walk home, I've discovered some beautiful graphs and an unexpected conclusion.

Paint, moondust, and electrons

A visualization of how material and lighting can affect brightness. (A four-variable oriented nomogram with transparency.)

In Plain English

This script explains medical terms by breaking apart their etymological roots. It translates Latin-based jargon into familiar words that anyone can understand.

Three of a kind

I use a variety of conceptual, programming, and mathematical tools to investigate a card game puzzle.

Parsing Latin poetry using constraint satisfaction

In Latin poetry, the length of each syllable is determined using rules regarding nearby letters and accent marks on the vowels. This program allows you to input Latin poetry without accent marks; it then intelligently guesses the accent marks by assuming that the poetry follows a specific metrical form known as dactylic hexameter. latin, programming

The Bright Fables

Parables about life and identity. Updates some Fridays.

Short essays on life and death

A collection of short essays outlining some moral issues concerning life and death and what we can do about them today.

Songs for life

A cultivated collection of songs that are variously life-affirming, immortality-positive, futurist, and/or socially conscious.

A roadside refueling relay

We nearly ran out of gas while driving between states! This usually means walking to the nearest gas station and back. In this article, I devise the optimal cooperative solution.

A six-variable nomogram for mixing solutions

This compound nomogram enables you to compute the concentration of a mixture of two solutions at different concentrations.

chemistry, nomography, programming


A Hasse diagram for complexity classes

A picture of the relations between complexity classes. As shown in the key, containment goes in the upward direction. Solid lines indicate equality; the axes are time/space, difficulty, and complementation; and the hardest problems for each class are written in blue.
(See also: Hasse diagrams on Wikipedia.)

Algebraic dietary laws and blood compatibility

The Jewish law prohibiting mixtures of meat and milk has the same algebraic structure as the rules for which blood types are compatible donors.

The Autosearch Engine

A search engine which searches itself. Reminiscent of Minsky's Ultimate Machine.

Quantum operators as coordinate systems

Quantum measurement becomes easier to explain when you think of each measureable quantity as a coordinate system — which, in a precise way, is what an eigenbasis is.

Kinsey Arithmetic

Converting genders and orientations into numbers allows you to estimate relationship compatibility using arithmetic.

Pronunciation dictionary

When you type an English word, the system explains how to pronounce it using simple English words — rather than using more precise but arcane phonetic systems such as IPA. (Pronunciation data comes from CMU's pronouncing dictionary for American English.) programming

Guess that Pokémon

In this game, you think of a Pokémon and the program asks you questions to determine which Pokémon it is; it wins in at most nine questions (Generation I) or ten questions (Generation I & II). Beyond the game itself, this project is interesting because I extract Pokémon trait data directly from the Yellow/Gold ROMs respectively, ensuring that my data is correct. With this trait data, I use a greedy algorithm to construct a short decision tree of questions to ask. Because I restrict the set of questions to common knowledge (about types, evolutions, and so on), the guesser generally requires one more question than it would if it were playing optimally — but as a consequence the game is, presumably, more fun to play. pokémon, ai

Determine electron dot structures using logic programming

This short Clojure program solves a class of introductory chemistry problem using logic programming instead of the usual tedious method taught in classrooms— namely, manual trial and error. The use of a programming language — and constraint terminology in particular — makes the description of the task unambiguous. Programs like these demonstrate why computational thinking belongs in all classrooms. clojure, chemistry, education, programming

A matrix formulation for Lewis structures

I show how molecules can be represented as a kind of adjacency matrix. In particular, the properties of lewis structures (polar character of bonds, formal charges, etc.) can be read off as properties of the corresponding matrix.

The null space's insight into balancing chemical equations.

You can balance chemical equations automatically by calculating a basis for the null space of a “chemical composition” matrix. The method is useful because the calculations are automatic, because the method is always applicable, and because the null space reveals a wealth of useful detail about the space of possible answers.

A functional tree-drawing algorithm

I re-implemented the code from Andrew Kennedy's paper Drawing Trees, in which the author adduces four aesthetic criteria and designs an elegant, recursive tree-drawing algorithm to meet them. clojure, quantitative design, functional programming

Symbolic integration & Geometric analogies

Two groundbreaking AI programs— Jim Slagle's integration program and Tom Evans's geometric analogy program — showed that computers could perform tasks that many believed only smart humans could do. In particular, they exemplified the possibility and the power of programs that make educated guesses. In order to make these programs (and the ideas surrounding them) available to a wider audience, I've implemented both of these programs in modern programming languages. (good old-fashioned) artificial intelligence

6.034: Introduction to Artificial Intelligence

Since 2012, I have been a teaching assistant for MIT's introductory AI course (6.034). During that time, I've produced some runnable demonstrations of the different concepts we study; these demos, along with other miscellaneous school-related doings, are available at my MIT page: http://web.mit.edu/dxh/www. artificial intelligence, MIT

The Mythos of Death

In this essay, I affirm the following view: All people are entitled to live a healthy, flourishing life, to determine in what ways they will grow old, and to decide how and when they will die. A just society should exert tremendous effort in promoting this entitlement to life, defending its citizens from aging or dying against their will, and respecting the choices that they make in this matter as sacrosanct. No society currently meets this standard. We will require new tools to bring about this human right, and undoubtably it will be costly — but the injustice of the alternative is clear and compelling, and emerging technology makes success an genuine possibility if we strive for it.

In my observation, our societal taboos contribute to muddled beliefs about death (e.g. beliefs about selfishness, “the natural order”, and preordained lifespans), and those muddled beliefs, in turn, present the biggest obstacle to securing a society which promotes this entitlement to life— or even one which notices the problem. an essay, mortality

Nomography: the lost art of diagrams that calculate

Nomograms are too interesting to summarize in such a small space. Briefly put, nomograms are diagrams that help you compute the solution of an equation of three variables— even very complicated ones — by converting the analytic problem of solving for one of the variables given the other two into the 2D geometric problem of finding where a line between two curves intersects a third curve. The result is a two-dimensional representation of the equation where you can read off solutions using only a straightedge; all the complicated relations are implicitly encoded in the particular shape of the curves. mathematics

Setting a poem to music

I wrote a tune to accompany one of my favorite poems, E.E. Cummings's anyone lived in a pretty how town. a song

The sound of blue skies

The sun emits light of various frequencies which scatters in Earth's atmosphere, producing a lovely characteristic blue color. I took a table of blue sky spectral data and resized the visible frequencies (400-700 THz) into audible frequencies (around 400-700 Hz). This is the result — a chorus of blue.

Note: The blue color of the sky results when the radiation of the sun (effectively a 5600K blackbody) becomes scattered by small particles in the air (Rayleigh scattering). rayleigh scattering

Notes of the hours

This clock maps the twelve divisions on a clock to the notes of a twelve-tone scale, allowing you to hear the current time as musical intervals. music, clocks

Life, in short.

I depict a generic human lifespan as a 12×90 grid of provocatively tiny squares, each representing a month. It enables you to project your own life onto the smallish grid, noting the spatial location of different milestones, measuring the amount of life you've accumulated so far, guessing where in the grid future events may happen, and ultimately to contemplate how short life is, even when it's as long as our best modern technology allows. After all, it's a rare person indeed who won't fit in this grid. a sort-of art project, mortality

Pólya's Toggling-Locks Puzzle

This simple Javascript program lets you interact with a puzzle described by Pólya in one of his books. I find that an increased ability to play with the problem can help you to spot the solution. a puzzle

An alternate program for displaying your Calibre library…

I use the indispensable Calibre software to manage my ebook collection. I've written a script which extends Calibre by interacting with its database; it uses PHP, Javascript, and CSS3 to render the cover images in your library as aesthetically pleasing 3D books. (If you like the way this looks, you could for example extend it to enable searching your library, editing your library, etc. You could even read your books online; see next entry.) ebooks, server culture

… and a purely-Javascript EPUB reader

Load EPUB-format ebooks from your local computer or from any URL. I use this in conjunction with the previous program to access and read my books from any computer that has an Internet connection and a web browser. ebooks, server culture

Arithmetic with finite fields

This one-off Javascript script is for interacting with the arithmetic of finite fields; it helped me to understand more deeply some of the requirements and properties of (so-called) elliptic curves. mathematics, elliptic curves

Exterior algebras in pictures

Mathematicians are often rightfully accused of showing their results in elegant final form without showing the methods and dead ends by which they arrived at them. In this tutorial, I attempt to explain what an exterior algebra is in terms of our intuitive real-world understanding of geometry and space. I've attempted to motivate each definition this way, using pictures and eschewing jargon and formalism wherever possible. a tutorial, mathematics, algebra

Drawing simple-alternating-transit mazes

A fun program for drawing simple-alternating-transit mazes, which are nonbranching mazes of a particularly simple kind that exhibit particularly inscrutable patterns. recreational mathematics, mazes

Marvin Minsky's Society of Mind

This was a project I started after being a teaching assistant for Marvin Minsky's AI course Society of Mind. It's a simple online version of the book Society of Mind which I converted from a multimedia CD edition of the book. The online version, like the multimedia CD, contains great video interviews of Marvin alongside the original text, which is itself a rich source of thought-provoking ideas. mit, ai

Aaron Sloman's interview transcript

I wrote the first draft of a transcript for this interview by Aaron Sloman, a mathematician-turned-philosopher whose work in artificial intelligence attacks questions of impressively broad scope— he asks questions about how virtual machines evolved and in turn influenced the environment in which other virtual machines evolved, how the nature of chemical computations and other exotic architectures might help to explain how brains compute (and why von Neumann machines are a flawed paradigm), and how primal spatial reasoning skills and an eye for affordances eventually led to works like Euclid's Elements, the first explicit codification of that spatio-geometric knowledge. ai

A category-theoretic view of inductive reasoning

In this short piece, I present a poset category in which the commutation law is just Bayes's Law. Enriched versions of the category provide a glimpse of the fundamental properties that plausibility values must satisfy (in particular, you can quantify plausibilities with values drawn from rather simple spaces — you don't need to use the entire idiosyncratic aparatus of the real numbers or even a σ-algebra.) mathematics, category theory, probability

Remembering Marvin Minsky

A few web resources collected to commemorate the brilliant, kind, redoubtable Marvin Minsky.


Designing cryptographic protocols

I sketch an idea I had for a program that builds and debugs bespoke cryptographic protocols by drawing upon a library of techniques and common bugs. (This idea is heavily inspired by Sussman's HACKER thesis.) As a benchmark test, it would re-derive familiar protocols such as asymmetric-key cryptography, oblivious transfer, and so on, merely from the specification of the problems. programming, ai, cryptography