Recent posts

Inventing ELIZA (Review)

This year is the 60th anniversary of Joseph Weizenbaum’s article “ELIZA—A Computer Program For the Study of Natural Language Communication Between Man and Machine”. ELIZA was a natural language “engine” for running scripts of various conversational personas. The DOCTOR script became the paradigmatic example of a chatbot and ELIZA was re-implemented many times. A team of eight multidisciplinary scholars (“Team ELIZA”) have written an expansive historical study of the creation of ELIZA, how it was designed and implemented, its impact, and latter development of chatbots to the present day.

Read more

Enigma Traitors: The Struggle to Lose the Cipher War (Review)

Within the history of cryptography, the tale of how Bletchley Park broke Germany’s Enigma cipher has been told many times, in both print and on screen. With so much emphasis on the “plucky Brits overcoming the odds” angle, I often wondered how secure the Allied codes were and if there was a parallel story on the Axis side. Dermot Turing (nephew of Alan Turing and writer of several histories) has now written on this subject, describing the initial development of the Enigma and efforts to protect it, how the Axis communication security and cryptoanalytical services were setup and performed, how the Allies developed code books and their own codes and, as the war progressed, how both sides often failed to protect their secrets.

Read more

TimesSquare Programming Puzzle - Part 1?

TimesSquare is a programming puzzle created by Dennis Shasha and published in the April 2026 issue of Communications of the ACM. The puzzle requires deriving missing digit values within a square matrix, given, at least, the main diagonal, the sum of all digits within the matrix, and a value called the RowCol which is a function of all the digits. The challenge is to find a sub-exponential time algorithm. In this article, we describe the puzzle, present a dataset of example problems we developed for benchmark and testing purposes, and provide TypeScript code for a backtracking algorithm that finds solutions but fails to meet the performance goals.

Read more

Plain Text Accounting & Financial Reporting

Over the past year, I’ve been acting as the treasurer for a small publishing company. I converted our books from a collection of spreadsheets to a plain text accounting ledger and wrote programs to automate balance, income, and sales reporting using a tool called Beancount. These recipes may be useful to others running businesses, particularly if they have some programming talent.

Read more