...

Projects

Current projects

I currently tend towards projects that are significantly technical while also providing unique and interesting visuals to easily communicate what I am doing to a general audience.

Recent projects

My most recent, concluded projects include computational science projects, such as

All Projects

Fable: A New Animation Engine

Fable Banner

I have been increasingly interested in the meshless generation of physical fields. By this, I mean that I want to simulate something like turbulent flow with a domain expressed analytically. Take, for example, the Iterated Function System. With this, we can express an image (such as the Sierpinski triangle or Barnsely Fern); however, it is generally possible to express any image with the right set of equations. It is also possible to combine iterated function systems together into a larger function system known as a fractal flame. In principle, if we want to express any field, we can use a form of machine learning or optimal control to select an appropriate function system that approximates our field and then use the field directly for our simulation.

With this in mind, my current research goal is to create an animation engine that can express objects entirely on a function system instead of with meshes. This is almost certainly slower than raytracing, but comes with advantages in animation and smear frames for 3D rendering as all objects can now move via affine transformations. It also allows me to test the waters a bit and learn what the challenges will be in using fractals for real physics simulations.

There are 2 central challenges to this work:

  1. The generation of the fractal code (the set of equations to represent a domain). The problem here is that there are not strong constraints on what the questions can be, so optimal control techniques will take a long time. When a similar project was attempted with fractal compression, the compression step took orders of magnitude longer than JPEG.
  2. The generation of the field from the fractal code. This is challenging to do in parallel as most resources require using a chaos game to solve the iterated function system. Chaos games are (surprise) iterative methods that do not scale well on the GPU.

The docs are currently available here. The code currently uses KernelAbstractions.jl to provide parallelization on both the CPU and GPU. As it is an ongoing project, please keep in mind that the code will be a bit rough around the edges. For this project, I need strong symbolic computation along with parallel methods.

The Summer of Math Exposition

SoME1 Banner

The Summer of Math Exposition was an online competition in collaboration with the popular youtube channel 3Blue1Brown to inspire more people to create math content online. We asked every entrant to make something to be judged by us. In total, there were over 1,000 valid entries, so the judging happened in 2 stages:

  1. A peer review stage where all entries judged all other entries using a system known as Gavel.
  2. A manual judging phase of the top 100 entries by myself, Grant, and a few other chosen individuals.

We asked for direct feedback at the end of the summer and the response was overwhelmingly positive.

The Arcane Algorithm Archive

The Arcane Algorithm Archive is an online textbook I am writing along with my community. The goal is to discuss arcane algorithms that are important but not thoroughly discussed elsewhere. I focus on the initial chapters and algorithm implementations in Julia while the community helps curate all other languages.

Youtube

My youtube channel currently has over 85,000 subscribers and focuses on explaining complicated topics in a simple way.

Twitch

I stream my research on twitch as I feel it is important to open up the process to as many people as possible.

Scribbleios

This is a more creative project where I write a short story and post it on scribbleios. It’s just a way to get my creative juices flowing.

The Climate Machine

The Climate Machine is an attempt to make a new climate simulation engine to provide more accurate simulation results. I worked on the project in 2020 and primarily focused on teaching fundamentals of GPGPU and providing support for heterogeneous computing via the KernelAbstractions.jl package.

GPUE

GPUE logo

GPUE is the GPU-based Gross-Pitaevskii Equation (GPE) solver. It was the primary project I worked on during my PhD and was primarily used to create 3D superfluid vortex structures via artificial magnetic fields. My primary contribution to the project was the GPGPU knowledge to make the code performant on different hardware. Though the code was written primarily in C++, a Julia version also exists.