Projects
I studied Cognitive Science (B.S.) at Indiana University Bloomington, with a minor in Business. IU's program sits at the intersection of psychology, computer science, neuroscience, linguistics, and philosophy — the shared question being how minds, both biological and artificial, work. What follows is a mix of things I'm currently building, interests I'm actively pursuing, and older projects and coursework.
What I'm working on
-
A Python CLI for defining and running multiple AI agents — each with its own system prompt, model, and configuration. Agents are defined in YAML files, tasks queue in SQLite, and the executor runs them in parallel using the Anthropic SDK. Built as a lightweight, local-first alternative to heavier orchestration frameworks. Open source.
-
A personal site built with Astro and deployed on Netlify. No client-side JavaScript, no framework overhead — just compiled HTML and CSS served fast. I use it as a place to write, share projects, and think in public. The blog is where most of the activity happens.
-
HAL-1000
A headless Raspberry Pi 4 homelab running Docker. Currently hosting Pi-hole for network-wide DNS ad blocking and Portainer for container management. An ongoing project — the Pi lives on my home network and I add services to it when something's worth running myself. Named after HAL 9000.
-
Workday consulting
Professionally, I'm a Workday IT consultant working in client advisory. The interesting problems here are as much about people and process as they are about technology — helping organizations understand what they're getting from their implementation, where the gaps are, and how to close them. The underlying skill is the same one that runs through everything else I do: understanding systems and the humans who use them.
Interests
-
AI and language models
I've been building with Claude since the early access days — tools, workflows, and agents. Less interested in the hype and more in what these models actually enable when you give them well-defined tasks, good tools, and a clear scope. agent-manager came directly out of this. I write about it occasionally on the blog and think about it constantly.
-
Cognitive science
My degree, and still an active interest. The questions that drew me to the program — how does a physical system give rise to thought? what makes something an intelligent agent? — feel more alive now than ever, given where AI has landed. IU's program approaches them through computation, neuroscience, linguistics, and philosophy simultaneously, which is the right way to do it.
-
Self-hosting and owning your stack
A slow-moving but ongoing project. Pi-hole on the homelab was the start. The general principle: where something matters enough and the tooling is good enough, it's worth running yourself rather than delegating to a service. Privacy is part of it. So is just knowing what's actually running.
-
Writing
The blog is where I think out loud. I write about things I'm building, things I'm reading, and ideas I haven't fully worked out yet. No posting schedule — just when something is worth saying. See the archive.
Sites
-
A ballot and scoring site I rebuild each year for an Oscars party. Guests fill out predictions before the ceremony across every major category, and we score them live as the awards are announced. Rebuilt annually around the current year's nominees.
Tools
-
A Python tool for pulling reports and exporting datasets from Indiana University's Pie TCC platform, used by the student technology support center. A full rewrite of an earlier version originally built by Brian Funk — cleaner code, better error handling, and updated for the API changes that broke the original. Built during my time working at TCC UITS.
-
A Python script that opens the specific set of internal web tools needed at the start of every shift at TCC UITS. A small thing, but it eliminated a repetitive manual task that every new consultant had to learn and do by hand each time they sat down.
-
A Jupyter notebook for grading student code submissions in CSCI-C211 (Introduction to Computer Science) at Indiana University, where I worked as an associate instructor. Applies a consistent rubric programmatically so scores don't drift when working through a large batch of submissions.
-
A Python implementation of the optimal stopping problem — the mathematical framework for knowing when to commit to a choice after evaluating options in sequence. Also called the secretary problem or the marriage problem. The classic result is the 37% rule: evaluate the first 37% of options without choosing, then pick the next one that beats everything you've seen so far.
Coursework
Code and notebooks from IU's Cognitive Science program, kept public. The B.S. track in Cognitive Science requires substantial work in computation, statistics, and formal methods alongside the core cognitive science sequence — so much of this is more technical than the course titles suggest.
Core courses with repositories
-
COGS-Q 320 — Computation in Cognitive Science
One of the more distinctive courses in IU's program. Treats computation not just as a tool but as a framework for understanding cognition itself — the idea, going back to Turing and Newell & Simon, that thinking might be a form of information processing that can be modeled computationally. Assignments used Python and Jupyter to build simulations of cognitive processes: memory models, attention, decision-making. Also covered agent-based modeling and the basics of how researchers use computational models to generate testable predictions about behavior.
-
COGS-Q 351 — Introduction to Artificial Intelligence & Computer Simulation
Covers the classical foundations of AI — search algorithms (breadth-first, depth-first, A*), knowledge representation, logic-based reasoning, and planning — and connects them to cognitive science questions about how intelligent behavior can be modeled and simulated. Distinct from a standard CS AI course in that it keeps asking what these techniques tell us about natural intelligence, not just how to engineer artificial versions of it. Python throughout.
-
COGS-Q 355 — Neural Networks and the Brain
Bridges connectionism and deep learning — the two traditions that both try to understand intelligence through networks of simple units. Starts from the biological neuron and the perceptron, covers backpropagation and gradient descent, and builds up to modern deep learning architectures: convolutional networks for vision, recurrent networks for sequence data. A recurring theme is the tension between networks that perform well and networks that are actually plausible as models of how the brain works.
-
COGS-Q 370 — Experiments and Models in Cognition
The methodology course for the major. Covers how cognitive scientists design experiments, collect behavioral data, and build mathematical models to explain what they find. R is the primary tool — statistical modeling, data visualization, and model comparison. Also covers signal detection theory, Bayesian approaches to inference, and the replication crisis in psychology.
-
A tutorial built for COGS-Q 320 on PsychoPy, a Python library for running psychology experiments. Covers stimulus presentation, response timing, and data collection — the infrastructure that underlies most laboratory cognitive experiments.
Other coursework
-
Final project for Introduction to Software Systems at IU, built with Aidan Rosberg. C212 is the second course in IU's CS sequence — object-oriented programming in Java, data structures, and software design.