ab·strac·tion /æbˈstræk.ʃən/ n. the process of removing physical, spatial, or temporal details to focus attention on details of greater importance.
al·go·rithm /ˈæl.ɡə.rɪðm/ n. a process or set of rules to be followed in calculations; a step-by-step procedure for solving a problem.
ar·chi·tec·ture /ˈɑːr.kɪ.tek.tʃər/ n. the complex structure of something; in comp. sci., the conceptual model defining the structure and behavior of a system.
bi·na·ry /ˈbaɪ.nə.ri/ adj. relating to a system of numerical notation with two as its base; composed of two things.
buff·er /ˈbʌf.ər/ n. a temporary holding area for data; one who or that which buffers.
cache /kæʃ/ n. a collection of items stored in a hidden place; in comp. sci., a hardware or software component that stores data for faster future access.
com·pile /kəmˈpaɪl/ v. to produce by assembling information collected from various sources; to convert a program into machine code.
cur·so·ry /ˈkɜːr.sər.i/ adj. hasty and therefore not thorough or detailed; going rapidly over something.
da·ta /ˈdeɪ.tə/ n. facts and statistics collected together for reference or analysis; the quantities or symbols operated on by a computer.
de·bug /diːˈbʌɡ/ v. to identify and remove errors from computer hardware or software.
en·cap·su·late /ɪnˈkæp.sjʊ.leɪt/ v. to enclose in or as if in a capsule; to express the essential features of succinctly.
ep·i·graph /ˈep.ɪ.ɡrɑːf/ n. an inscription on a building, statue, or coin; a short quotation at the beginning of a book or chapter.
float /floʊt/ v. to rest on the surface of a liquid; n. in comp. sci., a data type representing a number with a fractional component.
func·tion /ˈfʌŋk.ʃən/ n. a relation between sets that associates every element of a first set to exactly one element of a second set.
gar·bage /ˈɡɑːr.bɪdʒ/ n. worthless matter; refuse. In comp. sci., data which is no longer accessible but occupies memory.
hash /hæʃ/ n. a dish of cooked meat cut into small pieces. In comp. sci., a fixed-size numerical result of applying a mathematical function to data of arbitrary size.
heap /hiːp/ n. an untidy collection of things piled up haphazardly; in comp. sci., a specialized tree-based data structure.
id·i·om /ˈɪd.i.əm/ n. a group of words established by usage having a meaning not deducible from those of the individual words.
in·dex /ˈɪn.deks/ n. an alphabetical list of names, subjects, etc. with references to the places where they occur.
jit·ter /ˈdʒɪt.ər/ v. to make continuous slight, rapid movements. In comp. sci., random variation in execution timing.
john /dʒɒn/ n. — see Klingelhofer, John.
join /dʒɔɪn/ v. to connect or combine; in databases, an operation that combines rows from two or more tables.
ab·strac·tion /æbˈstræk.ʃən/ n. the process of removing physical, spatial, or temporal details to focus attention on details of greater importance.
al·go·rithm /ˈæl.ɡə.rɪðm/ n. a process or set of rules to be followed in calculations; a step-by-step procedure for solving a problem.
ar·chi·tec·ture /ˈɑːr.kɪ.tek.tʃər/ n. the complex structure of something; in comp. sci., the conceptual model defining the structure and behavior of a system.
bi·na·ry /ˈbaɪ.nə.ri/ adj. relating to a system of numerical notation with two as its base; composed of two things.
buff·er /ˈbʌf.ər/ n. a temporary holding area for data; one who or that which buffers.
cache /kæʃ/ n. a collection of items stored in a hidden place; in comp. sci., a hardware or software component that stores data for faster future access.
com·pile /kəmˈpaɪl/ v. to produce by assembling information collected from various sources; to convert a program into machine code.
cur·so·ry /ˈkɜːr.sər.i/ adj. hasty and therefore not thorough or detailed; going rapidly over something.
da·ta /ˈdeɪ.tə/ n. facts and statistics collected together for reference or analysis; the quantities or symbols operated on by a computer.
de·bug /diːˈbʌɡ/ v. to identify and remove errors from computer hardware or software.
en·cap·su·late /ɪnˈkæp.sjʊ.leɪt/ v. to enclose in or as if in a capsule; to express the essential features of succinctly.
ep·i·graph /ˈep.ɪ.ɡrɑːf/ n. an inscription on a building, statue, or coin; a short quotation at the beginning of a book or chapter.
float /floʊt/ v. to rest on the surface of a liquid; n. in comp. sci., a data type representing a number with a fractional component.
func·tion /ˈfʌŋk.ʃən/ n. a relation between sets that associates every element of a first set to exactly one element of a second set.
gar·bage /ˈɡɑːr.bɪdʒ/ n. worthless matter; refuse. In comp. sci., data which is no longer accessible but occupies memory.
hash /hæʃ/ n. a dish of cooked meat cut into small pieces. In comp. sci., a fixed-size numerical result of applying a mathematical function to data of arbitrary size.
heap /hiːp/ n. an untidy collection of things piled up haphazardly; in comp. sci., a specialized tree-based data structure.
id·i·om /ˈɪd.i.əm/ n. a group of words established by usage having a meaning not deducible from those of the individual words.
in·dex /ˈɪn.deks/ n. an alphabetical list of names, subjects, etc. with references to the places where they occur.
jit·ter /ˈdʒɪt.ər/ v. to make continuous slight, rapid movements. In comp. sci., random variation in execution timing.
john /dʒɒn/ n. — see Klingelhofer, John.
join /dʒɔɪn/ v. to connect or combine; in databases, an operation that combines rows from two or more tables.
ab·strac·tion /æbˈstræk.ʃən/ n. the process of removing physical, spatial, or temporal details to focus attention on details of greater importance.
al·go·rithm /ˈæl.ɡə.rɪðm/ n. a process or set of rules to be followed in calculations; a step-by-step procedure for solving a problem.
ar·chi·tec·ture /ˈɑːr.kɪ.tek.tʃər/ n. the complex structure of something; in comp. sci., the conceptual model defining the structure and behavior of a system.
bi·na·ry /ˈbaɪ.nə.ri/ adj. relating to a system of numerical notation with two as its base; composed of two things.
buff·er /ˈbʌf.ər/ n. a temporary holding area for data; one who or that which buffers.
cache /kæʃ/ n. a collection of items stored in a hidden place; in comp. sci., a hardware or software component that stores data for faster future access.
com·pile /kəmˈpaɪl/ v. to produce by assembling information collected from various sources; to convert a program into machine code.
cur·so·ry /ˈkɜːr.sər.i/ adj. hasty and therefore not thorough or detailed; going rapidly over something.
da·ta /ˈdeɪ.tə/ n. facts and statistics collected together for reference or analysis; the quantities or symbols operated on by a computer.
de·bug /diːˈbʌɡ/ v. to identify and remove errors from computer hardware or software.
en·cap·su·late /ɪnˈkæp.sjʊ.leɪt/ v. to enclose in or as if in a capsule; to express the essential features of succinctly.
ep·i·graph /ˈep.ɪ.ɡrɑːf/ n. an inscription on a building, statue, or coin; a short quotation at the beginning of a book or chapter.
float /floʊt/ v. to rest on the surface of a liquid; n. in comp. sci., a data type representing a number with a fractional component.
func·tion /ˈfʌŋk.ʃən/ n. a relation between sets that associates every element of a first set to exactly one element of a second set.
gar·bage /ˈɡɑːr.bɪdʒ/ n. worthless matter; refuse. In comp. sci., data which is no longer accessible but occupies memory.
hash /hæʃ/ n. a dish of cooked meat cut into small pieces. In comp. sci., a fixed-size numerical result of applying a mathematical function to data of arbitrary size.
heap /hiːp/ n. an untidy collection of things piled up haphazardly; in comp. sci., a specialized tree-based data structure.
id·i·om /ˈɪd.i.əm/ n. a group of words established by usage having a meaning not deducible from those of the individual words.
in·dex /ˈɪn.deks/ n. an alphabetical list of names, subjects, etc. with references to the places where they occur.
jit·ter /ˈdʒɪt.ər/ v. to make continuous slight, rapid movements. In comp. sci., random variation in execution timing.
john /dʒɒn/ n. — see Klingelhofer, John.
join /dʒɔɪn/ v. to connect or combine; in databases, an operation that combines rows from two or more tables.
ab·strac·tion /æbˈstræk.ʃən/ n. the process of removing physical, spatial, or temporal details to focus attention on details of greater importance.
al·go·rithm /ˈæl.ɡə.rɪðm/ n. a process or set of rules to be followed in calculations; a step-by-step procedure for solving a problem.
ar·chi·tec·ture /ˈɑːr.kɪ.tek.tʃər/ n. the complex structure of something; in comp. sci., the conceptual model defining the structure and behavior of a system.
bi·na·ry /ˈbaɪ.nə.ri/ adj. relating to a system of numerical notation with two as its base; composed of two things.
buff·er /ˈbʌf.ər/ n. a temporary holding area for data; one who or that which buffers.
cache /kæʃ/ n. a collection of items stored in a hidden place; in comp. sci., a hardware or software component that stores data for faster future access.
com·pile /kəmˈpaɪl/ v. to produce by assembling information collected from various sources; to convert a program into machine code.
cur·so·ry /ˈkɜːr.sər.i/ adj. hasty and therefore not thorough or detailed; going rapidly over something.
da·ta /ˈdeɪ.tə/ n. facts and statistics collected together for reference or analysis; the quantities or symbols operated on by a computer.
de·bug /diːˈbʌɡ/ v. to identify and remove errors from computer hardware or software.
en·cap·su·late /ɪnˈkæp.sjʊ.leɪt/ v. to enclose in or as if in a capsule; to express the essential features of succinctly.
ep·i·graph /ˈep.ɪ.ɡrɑːf/ n. an inscription on a building, statue, or coin; a short quotation at the beginning of a book or chapter.
float /floʊt/ v. to rest on the surface of a liquid; n. in comp. sci., a data type representing a number with a fractional component.
func·tion /ˈfʌŋk.ʃən/ n. a relation between sets that associates every element of a first set to exactly one element of a second set.
ker·nel /ˈkɜːr.nəl/ n. the softer part of a nut; the central or most important part. In comp. sci., the core of an operating system.
kling /klɪŋ/ v. archaic. to ring or chime, esp. of small bells; to produce a clear metallic sound.
kludge /kluːdʒ/ n. an ill-assorted collection of parts assembled to fulfill a particular purpose. Informal: a clumsy but effective solution.
la·ten·cy /ˈleɪ.tən.si/ n. the state of existing but not yet being developed or manifest; a delay before a transfer of data begins.
lex·i·con /ˈlek.sɪ.kɒn/ n. the vocabulary of a person, language, or branch of knowledge; a dictionary.
mu·tex /ˈmjuː.teks/ n. a mutual exclusion object that allows multiple program threads to share the same resource, but not simultaneously.
node /noʊd/ n. a point in a network at which lines intersect or branch; a basic unit of a data structure.
oc·tet /ɒkˈtet/ n. a group of eight; in comp. sci., a unit of digital information consisting of eight bits.
par·a·digm /ˈpær.ə.daɪm/ n. a typical example or pattern of something; a worldview underlying the theories of a particular subject.
parse /pɑːrz/ v. to resolve into its component parts and describe their syntactic roles; to analyze a string or text.
queue /kjuː/ n. a line of people or vehicles awaiting their turn; in comp. sci., a FIFO data structure.
rec·ur·sion /rɪˈkɜːr.ʒən/ n. the repeated application of a procedure to itself. See: recursion.
schema /ˈskiː.mə/ n. a representation of a plan or theory in the form of an outline or model; in databases, the organization of data.
stack /stæk/ n. a pile of objects; in comp. sci., a LIFO abstract data type serving as a collection of elements.
thread /θred/ n. a long thin strand; the smallest sequence of programmed instructions managed independently by a scheduler.
to·ken /ˈtoʊ.kən/ n. a thing serving as a visible representation of a fact or quality; in comp. sci., a categorized block of text.
u·ni·code /ˈjuː.nɪ.koʊd/ n. an international encoding standard for use with different languages and scripts, assigning a unique number to every character.
vec·tor /ˈvek.tər/ n. a quantity having direction as well as magnitude; a dynamically resizable array.
ker·nel /ˈkɜːr.nəl/ n. the softer part of a nut; the central or most important part. In comp. sci., the core of an operating system.
kling /klɪŋ/ v. archaic. to ring or chime, esp. of small bells; to produce a clear metallic sound.
kludge /kluːdʒ/ n. an ill-assorted collection of parts assembled to fulfill a particular purpose. Informal: a clumsy but effective solution.
la·ten·cy /ˈleɪ.tən.si/ n. the state of existing but not yet being developed or manifest; a delay before a transfer of data begins.
lex·i·con /ˈlek.sɪ.kɒn/ n. the vocabulary of a person, language, or branch of knowledge; a dictionary.
mu·tex /ˈmjuː.teks/ n. a mutual exclusion object that allows multiple program threads to share the same resource, but not simultaneously.
node /noʊd/ n. a point in a network at which lines intersect or branch; a basic unit of a data structure.
oc·tet /ɒkˈtet/ n. a group of eight; in comp. sci., a unit of digital information consisting of eight bits.
par·a·digm /ˈpær.ə.daɪm/ n. a typical example or pattern of something; a worldview underlying the theories of a particular subject.
parse /pɑːrz/ v. to resolve into its component parts and describe their syntactic roles; to analyze a string or text.
queue /kjuː/ n. a line of people or vehicles awaiting their turn; in comp. sci., a FIFO data structure.
rec·ur·sion /rɪˈkɜːr.ʒən/ n. the repeated application of a procedure to itself. See: recursion.
schema /ˈskiː.mə/ n. a representation of a plan or theory in the form of an outline or model; in databases, the organization of data.
stack /stæk/ n. a pile of objects; in comp. sci., a LIFO abstract data type serving as a collection of elements.
thread /θred/ n. a long thin strand; the smallest sequence of programmed instructions managed independently by a scheduler.
to·ken /ˈtoʊ.kən/ n. a thing serving as a visible representation of a fact or quality; in comp. sci., a categorized block of text.
u·ni·code /ˈjuː.nɪ.koʊd/ n. an international encoding standard for use with different languages and scripts, assigning a unique number to every character.
vec·tor /ˈvek.tər/ n. a quantity having direction as well as magnitude; a dynamically resizable array.
ker·nel /ˈkɜːr.nəl/ n. the softer part of a nut; the central or most important part. In comp. sci., the core of an operating system.
kling /klɪŋ/ v. archaic. to ring or chime, esp. of small bells; to produce a clear metallic sound.
kludge /kluːdʒ/ n. an ill-assorted collection of parts assembled to fulfill a particular purpose. Informal: a clumsy but effective solution.
la·ten·cy /ˈleɪ.tən.si/ n. the state of existing but not yet being developed or manifest; a delay before a transfer of data begins.
lex·i·con /ˈlek.sɪ.kɒn/ n. the vocabulary of a person, language, or branch of knowledge; a dictionary.
mu·tex /ˈmjuː.teks/ n. a mutual exclusion object that allows multiple program threads to share the same resource, but not simultaneously.
node /noʊd/ n. a point in a network at which lines intersect or branch; a basic unit of a data structure.
oc·tet /ɒkˈtet/ n. a group of eight; in comp. sci., a unit of digital information consisting of eight bits.
par·a·digm /ˈpær.ə.daɪm/ n. a typical example or pattern of something; a worldview underlying the theories of a particular subject.
parse /pɑːrz/ v. to resolve into its component parts and describe their syntactic roles; to analyze a string or text.
queue /kjuː/ n. a line of people or vehicles awaiting their turn; in comp. sci., a FIFO data structure.
rec·ur·sion /rɪˈkɜːr.ʒən/ n. the repeated application of a procedure to itself. See: recursion.
schema /ˈskiː.mə/ n. a representation of a plan or theory in the form of an outline or model; in databases, the organization of data.
stack /stæk/ n. a pile of objects; in comp. sci., a LIFO abstract data type serving as a collection of elements.
thread /θred/ n. a long thin strand; the smallest sequence of programmed instructions managed independently by a scheduler.
to·ken /ˈtoʊ.kən/ n. a thing serving as a visible representation of a fact or quality; in comp. sci., a categorized block of text.
u·ni·code /ˈjuː.nɪ.koʊd/ n. an international encoding standard for use with different languages and scripts, assigning a unique number to every character.
vec·tor /ˈvek.tər/ n. a quantity having direction as well as magnitude; a dynamically resizable array.
ker·nel /ˈkɜːr.nəl/ n. the softer part of a nut; the central or most important part. In comp. sci., the core of an operating system.
kling /klɪŋ/ v. archaic. to ring or chime, esp. of small bells; to produce a clear metallic sound.
kludge /kluːdʒ/ n. an ill-assorted collection of parts assembled to fulfill a particular purpose. Informal: a clumsy but effective solution.
la·ten·cy /ˈleɪ.tən.si/ n. the state of existing but not yet being developed or manifest; a delay before a transfer of data begins.
lex·i·con /ˈlek.sɪ.kɒn/ n. the vocabulary of a person, language, or branch of knowledge; a dictionary.
mu·tex /ˈmjuː.teks/ n. a mutual exclusion object that allows multiple program threads to share the same resource, but not simultaneously.
node /noʊd/ n. a point in a network at which lines intersect or branch; a basic unit of a data structure.
oc·tet /ɒkˈtet/ n. a group of eight; in comp. sci., a unit of digital information consisting of eight bits.
par·a·digm /ˈpær.ə.daɪm/ n. a typical example or pattern of something; a worldview underlying the theories of a particular subject.
parse /pɑːrz/ v. to resolve into its component parts and describe their syntactic roles; to analyze a string or text.
queue /kjuː/ n. a line of people or vehicles awaiting their turn; in comp. sci., a FIFO data structure.
rec·ur·sion /rɪˈkɜːr.ʒən/ n. the repeated application of a procedure to itself. See: recursion.
schema /ˈskiː.mə/ n. a representation of a plan or theory in the form of an outline or model; in databases, the organization of data.
stack /stæk/ n. a pile of objects; in comp. sci., a LIFO abstract data type serving as a collection of elements.
thread /θred/ n. a long thin strand; the smallest sequence of programmed instructions managed independently by a scheduler.
to·ken /ˈtoʊ.kən/ n. a thing serving as a visible representation of a fact or quality; in comp. sci., a categorized block of text.
u·ni·code /ˈjuː.nɪ.koʊd/ n. an international encoding standard for use with different languages and scripts, assigning a unique number to every character.
vec·tor /ˈvek.tər/ n. a quantity having direction as well as magnitude; a dynamically resizable array.
ker·nel /ˈkɜːr.nəl/ n. the softer part of a nut; the central or most important part. In comp. sci., the core of an operating system.
kling /klɪŋ/ v. archaic. to ring or chime, esp. of small bells; to produce a clear metallic sound.
kludge /kluːdʒ/ n. an ill-assorted collection of parts assembled to fulfill a particular purpose. Informal: a clumsy but effective solution.
la·ten·cy /ˈleɪ.tən.si/ n. the state of existing but not yet being developed or manifest; a delay before a transfer of data begins.
lex·i·con /ˈlek.sɪ.kɒn/ n. the vocabulary of a person, language, or branch of knowledge; a dictionary.
mu·tex /ˈmjuː.teks/ n. a mutual exclusion object that allows multiple program threads to share the same resource, but not simultaneously.
node /noʊd/ n. a point in a network at which lines intersect or branch; a basic unit of a data structure.
oc·tet /ɒkˈtet/ n. a group of eight; in comp. sci., a unit of digital information consisting of eight bits.
Vol. XII · Kl — Ku
john427
Kling·el·ho·fer/ˈklɪŋ.əl.hoʊ.fɚ/n.

1.(21st cent.) A software engineer with eight years of experience, focused on AI-driven systems and fullstack development in healthcare and medicine. Someone who takes projects from first principles to production, owning architecture, backend, UI, and infrastructure along the way.
“That John Klingelhofer has an impressive resume, and I like the theme of his website!”
2.(14th cent.) From Middle High German klingel (“small bell”) + Hof (“farmstead, manor”); lit. “the bell-ringer’s farm.” An occupational surname given to one who called the hours or summoned the parish - a keeper of the bell.
“Hmmm, trying to think of good programmers! Oh, that Klingelhofer guy rings a bell.”
Halftone portrait of John Klingelhofer
fig. 1 - A Klingelhofer
See also
experience /ɪkˈspɪə.ri.əns/ n. practical wisdom gained from doing. p. 428.

education /ˌed.jʊˈkeɪ.ʃən/ n. cultivation of mind and character. p. 431.

projects /ˈprɒdʒ.ekts/ n. planned works, completed and ongoing. p. 432.

contact /ˈkɒn.tækt/ n. the state of communication; a means of getting in touch. p. 433.
Pronunciation Key: æ bat|fate|ɪ bit|be|ɒ pot|ʌ but|ə about|ʃ ship|ŋ ring

Experience

Formation BioNew York, NY
Senior Software Engineer08/2023 – Present
PythonA.I.LLMComp. vis.Data eng.ReactSQLFullstack
  • Senior IC leading high-impact AI/ML systems for drug development, spanning NLP, computer vision, predictive modeling, data infrastructure, and production platforms. Much of this work is internal and proprietary; Muse and Delphi, two production agentic systems, are public examples of the broader scope.
  • Led backend architecture and implementation for Muse, an early production agentic AI system for generating regulation-compliant clinical trial recruitment materials, built with Sanofi and OpenAI (featured below).
  • Led production engineering for Delphi, Formation Bio's multi-agent clinical trial prediction system, turning exploratory data science into an automated, auditable forecasting platform (featured below).
  • Across other initiatives, built specialized extraction pipelines for medical literature where general LLMs struggle, Dagster-based ingestion/transformation pipelines for drug and indication datasets, and predictive models for drug outcome forecasting and indication expansion.
Featured projects
Muse
Built in 2024 - among the first production agentic AI systems in pharma

Led backend architecture and implementation for Muse, an LLM-driven suite of tools that generates human-level, regulation-compliant recruitment materials for clinical trials - the result of a partnership with Sanofi and OpenAI. Built before agentic AI frameworks were widely available, Muse was a novel multi-agent system that brought AI-generated, regulation-compliant recruitment materials into production in the highly regulated pharmaceutical industry. No-code interfaces were developed to allow non-tech domain experts to experiment and tune system output. The project was a major company success and is now used in the real-world by Sanofi.

We believe AI can accelerate drug development, bringing new treatments to patients more quickly... we can't wait to see the impact Muse will have.
Brad Lightcap, OpenAI COO
The development of Muse represents another proof point in Sanofi's journey to becoming the first pharma company powered by AI at scale.
Emmanuel Frenehard, Sanofi CDO
Software Engineer II10/2021 – 07/2023
PythonReactFullstack
  • Fullstack contributions to multiple applications supporting form-building and deployment/management for nurse/patient use in clinical trial operations. (NestJS, Python, React)
Memorial Sloan Kettering Cancer CenterNew York, NY
Software Engineer01/2021 – 10/2021
PythonJavaSQLData eng.
  • Automated, optimized, and expanded upon system for transforming vast amounts of hospital data from disparate sources into the OMOP Common Data Model in order to facilitate research within MSK and possible future data sharing. (Python, SQL, Airflow)
AnnalectNew York, NY
Software Engineer11/2020 – 01/2021
PythonSQLA.I.Fullstack
  • Full stack developer (Python, AngularJS, Redshift) on multiple core applications within Omni, the Marketing Science and Data software suite used across advertising agencies within Annalect's parent company Omnicom Media Group in planning campaigns for Omnicom's Fortune 100 clients.
  • Contributed to disparate components of these applications across the tech stack, from UI overhauls, to creating a pipeline for ingesting client's first-party data into our application, and implementing machine-learning-driven features on the back end of our audience modeling application including lookalike modeling to expand advertised audiences.
Junior Developer01/2019 – 10/2020
PythonA.I.Fullstack
  • Full stack developer on multiple core Omni applications, contributing across the entire tech stack from frontend UI overhauls to backend ML feature implementation.
  • Built data ingestion pipelines for client first-party data and implemented lookalike modeling for audience expansion.
R&D Intern09/2018 – 12/2018
PythonKerasA.I.
  • Worked on a variety of small and experimental projects within the Annalect R&D ("Labs") team, quickly prototyping applications independently working across the whole tech stack.
  • Developed a recommendation engine system with Keras which could quickly derive strongly correlated websites from clickstream data and find differences in browsing behavior between consumers of different brands.

Selected Projects

Side projects have never been my primary outlet: when gainfully employed in a role with room to experiment on meaningful problems using cutting edge technology, which I've been fortunate to have the last 5 years in particular, I believe my company is entitled to my programming energy and creative ideas.

What follows is a mix. The older projects predate the LLM era; despite their age, they provide useful signal. In a landscape where AI tooling makes it trivially easy to ship polished hobby-grade software, pre-LLM work demonstrates the ability to produce interesting, novel things without modern shortcuts. The newer items are small curiosities outside my usual work domains that I've picked at in the odd free moment.

Game-playing AI
Squabble - Stylish Terminal-Driven Scrabble EnginePython · 2026
Squabble - Stylish Terminal-Driven Scrabble Engine demo

I love playing scrabble, but hate the dragging-and-dropping or clicking and typing out of all the web-basedscrabble games! This fun little side-project is a terminal Scrabble engine built as an exploration of game-playing AI and move-space search. The candidate move space in Scrabble is enormous: with two blank tiles in play, the number of possible placements (including illegal ones) reaches into the tens of millions, making optimal move selection a fun algorithmic challenge. The AI opponent navigates this space efficiently enough to simulate multiple complete headless games per second and provides a fun way to both explore the game in AI matchups and learn new useful words (though at ego-deflating God-Tier performance).

Try it out:pip3 install squabble-game && squabble

Education

Rensselaer Polytechnic Institute

BS Computer Science, Cum Laude
Concentration in AI and Data
Class of 2018 · Troy, NY

Clark University

Liberal Arts, two years before transferring to RPI
2012–2014 · Worcester, MA

Contact

Open to senior IC and tech lead roles in healthcare, medicine, education, or any area solving real problems. Remote-first, and always glad to connect about what's next.

(Not interested in roles in finance, gambling, surveillance, military/"defense", or gig-economy-driven platforms)

john@klingelhofer.me