Skip to main content

Dithered Tree
Newest Post: To the Students

Hi, I’m Jack, a graduate student in computer science interested in artificial societies, cultural evolution, machine learning, and decentralization.

Featured Projects:

  • Jevo.jl
    • A modular, high-performance framework for distributed deep neuroevolution
  • emergent trade
    • emergent trading between embodied agents using reinforcement learning
  • kittyplot
    • a repl-based terminal plotting program
  • dtree
    • a vim-inspired mind-mapping program written in C
  • fe-alts
    • A single docker-compose of alternative front-ends to big tech services

Favorite Posts:

Contact me via:


Zen in the Art of Beat Saber

Contents: Introduction, Step away, come back later, Focus, but not too much, Generalization comes after specialization, Don’t bother if you don’t need to, Let Go

Introduction

I recently read Zen in the Art of Archery, which isn’t a book about archery as much as it is a book about zen. The book describes author’s journey learning archery from a zen master. I highly recommend it, the book is a short read–I finished it in a day.

Emergent Trade and Tolerated Theft Using Multi-Agent Reinforcement Learning

I’ve been an author on a few papers before, but I recently published the first research project where I was responsible for most of the work and direction. It’s in the first 2024 issue of the journal Artificial Life, which you can find here. You can find a non-paywalled version here Below, I tell the chronology of the project and summarize our findings.

Emergent Trade

We explore the conditions under which trade can emerge between four deep reinforcement learning agents that pick up and put down resources in a 2D foraging environment. Agents are rewarded for having both resources once, but the resources are distributed far apart from each other. To maximize reward, agents need to split up the work - agent 1 goes to resource A, agent 2 goes to resource B, etc, and then they meet to exchange resources, since meeting halfway can get them the most of each resource in the shortest amount of time.

Take the Road Most Documented

How great would it be if the solution to most errors you face were in the first place you looked? That’s what the Arch Wiki has been for me: a massive wealth of information and troubleshooting resources to help me navigate the various configuration and installation issues I’ve encountered. Some people claim Arch Linux is too difficult for new users, but for me it’s been the only distribution I’ve been able to get consistently working, and it’s all thanks to the detailed documentation and known workarounds.

Numerical Stability in Flash Attention

Flash attention, a recent implementation of attention which makes less calls to high-bandwidth memory, uses a version of the softmax function which is numerically stable. In this post, I’ll briefly showcase how this is done and an example of an unstable softmax.

The softmax function is used in machine learning to convert a vector of real numbers to a vector of probabilities which sum to 1, and is defined as:

Introducing Kittyplot

Kittyplot is a program designed to plot experiment data in the kitty terminal using the kitty graphics protocol, primarily for use on HPC clusters.

Kittyplot example GIF

Plots are rendered using matplotlib, and users can zoom into different regions of the plots by setting x and y limits using their editor. I use prompt_toolkit to accept regexp input and I override the tab-completion to instead display a list of all metrics that are matched by the current regexp.

Owen, Make Your Website Already

Make a fucking website already, Owen. You’ve been playing around with the idea of making a blog for like two years, but you’ve been dragging your feet. Maybe you can’t decide what framework to use, or where to host it, or blah blah blah. If you want excuses not to make a site, I’m sure you’ll find them.

But it literally just takes a few hours, less if you don’t set up a domain name or theme to start. You can do all that later. The important thing is getting it online, the rest is easy (and satisfying!) once you have the core site made.

Unexpected Benefits of Testing Code

Matthew Carlson’s blog post “Fighting Distraction With Unit Tests” inspired me to share some extra benefits of writing test code I’ve discovered during my PhD program.

I’m working on a weird project that’s constantly changing as I try new things, and naturally, debugging and ensuring correctness was a nightmare. So I started writing tests, cursing myself for needing to write so much code I’ll likely throw away soon. But as it turns out, testing can be pretty helpful in a few other ways:

I Dont Know Anyone Who Blogs

I don’t know anybody in real life who blogs regularly, and I think that kills my motivation to write blog posts myself.

I actually started writing this post before realizing that a friend of mine has a blog, but in my defense he’s only posted twice in the past 2 years. I suppose that makes my title a lie, but I like the title, and the point still stands.

I want to build a writing habit, but it feels hard to get the motivation to do it from within myself. I’m a programmer, and while I’ve learned a lot from people online, the people who’ve made the biggest impact on me are people I’ve met in the physical world. Plus, I’m surrounded by other programmers; maybe that makes me feel less crazy spending all my time coding.

How to write LaTeX without writing LaTeX

I love the look of LaTeX but hate the experience of writing in LaTeX, at least compared to Markdown. Luckily, Pandoc can convert Markdown files to PDFs using a LaTeX engine as the renderer, and includes a custom Markdown specification that can fill almost all my LaTeX needs.

First, let’s talk about where Pandoc Markdown falls short:

  • No custom LaTeX style guides (although citation style files are supported)
  • No Section Numbering There is, thanks to naruhodo on Hacker News for the correction
  • Referencing labels doesn’t work well (Supposedly the pandoc-crossref filter fixes this but I couldn’t get it to work)
  • Don’t even bother with complex page layouts or precise figure placements

This might be a deal breaker for some, but for others who are writing lots of documents (such as students), this may not be. Now for the benefits: