Dave Nachman

I'm a software engineer working on an AI research assistant at Elicit. Previously I was a principal engineer and researcher at Elemental Cognition building a hybrid LLM / symbolic reasoning system, and before that was an engineering manager at Bridgewater Associates.

My interests include figuring out how to build systems and products that incorporate LLMs, as well as databases, interactive programming environments, compilers, and logic programming. At work, things I've built include an LLM-based dialogue system, a visual programming language, type inference for a natural language-based programming language, and an interactive debugger for a constraint optimization language.

Experiments & little projects

Shapeshifter February, 2025 databases ai typescript

Shapeshifter is an experiment at using an LLM inside a database. If a query or new document doesn’t match a collection’s existing schema, Shapeshifter will use an LLM to create a mapping between schemas, update the inferred schema, or migrate existing documents to an updated schema.

Autoplan January, 2025 ai python

Autoplan is an open-source Python framework that provides a powerful pattern for implementing agentic AI applications, leveraging dynamic plan generation to select and use external tools based on the task’s context.

Awesome AI Engineering December, 2024 ai

A curated list of awesome resources for AI engineers.

Agent Steps September, 2024 ai python

Agent Steps is a work-in-progress, experimental library for building LLM agent workflows and chains. It isn’t ready for production use.

It lets you write LLM agent workflows using normal Python code, without needing to use an explicit DSL (e.g. creating graphs or explicit chains), while still being able to leverage a runtime layer that can provide controllability, persistence, introspection, and other tooling.

Streaming Structured Outputs September, 2024 ai python

This library allows you to stream responses that follow the Structured Outputs format from OpenAI LLMs, providing an async iterator of (potentially partial) instances of your Pydantic model.

This was written as a proof-of-concept/learning experience for my personal use; for a production-ready implementation of the same idea, see the streaming partial responses feature of Instructor.

APL step-by-step January, 2020 programming languages clojure interactive programming environments

APL step-by-step is a work-in-progress interactive environment for exploring the APL programming language, with its own implementation of an incomplete subset of APL.

This was built during a mini-retreat at the Recurse Center.

APL is known for its terse but powerful syntax for manipulating multi-dimensional arrays. A powerful notation however can pose a challenge to learning and understanding.

This project tries to create a learnable environment for making it easier to understand APL.

Artkit January, 2020 interactive programming environments python typescript

Artkit is a toolkit for creating generative visual art, primarily focused on 2d graphics — implemented in Python as an embedded DSL, along with an interactive web environment.

It provides a declarative API for drawing shapes with capabilities for introducing controlled randonness.

Artkit was built during a mini-retreat at the Recurse Center.

Bigraphics December, 2019 interactive programming environments typescript

Bigraphics is an experiment in a bidirectional graphics DSL — a user can change graphics output by writing code, or the user can directly manipulate the graphics, updating the code (in a formatting-preserving manner).

Objecto December, 2019 programming languages clojure

Objecto is a tiny, WIP interpreted implementation of Smalltalk written in Clojurescript.

My goal for this project was to learn more about Smalltalk through implementing it, as well as practice writing an intepreter in Clojure(script).

Along with the interpreter is a hosted web REPL, to allow people to easily try out the language.

Datalog November, 2019 logic programming python

WIP implementation of datalog in Python, in the form of an embedded DSL. The DSL is designed to provide as a syntax similar to traditional Datalog, while operating within the constraints of Python’s language features.

Bytelang October, 2019 programming languages rust

Bytelang is a WIP implementation of a dynamically typed programming language in Rust that is compiled to bytecode and run on a stack-based virtual machine.

I wrote this as an exercise in writing a bytecode-based interpreter, and also as an opportunity to write something in Rust.

db.ts September, 2019 databases typescript

Prototype of an object database that utilizes Typescript’s type system. Unlike a relational database, which is table-oriented, an object database represents data in an object-oriented manner.

db.ts supports Typescript interfaces, types, and classes, including subtype relationships. db.ts leverages io-ts, a run-time type system library for Typescript, for run-time representations of Typescript types.

db.ts has a pluggable key/value storage abstraction and provides a default persistent storage implementation via RocksDB.

Catstack August, 2019 programming languages typescript

Catstack is a concatenative- and stack-oriented programming language, inspired by earlier languages such as Forth and PostScript.

Catstack is an early, work-in-progress experiment.

It is written in Typescript and has an interactive, web environment.

Some books & videos I enjoyed