I am a software developer interested in creating ways for artists to work more effectively. In the past, I’ve worked on AWS Thinkbox’s artist tools, developed cutting-edge sketch processing algorithms as part of my masters degree, and worked as an illustrator for The Ubyssey. I currently work in Adobe’s Photoshop division.
Software

virtuawin-bar
virtuawin-bar is a VirtuaWin module which lists all of the non-empty virtual desktops and highlights the currently active one. It is aesthetically similar to status bars designed to work with tiling window managers, like i3bar and Polybar. virtuawin-bar also optionally provides keybindings for switching focus to a window in a specified cardinal direction, similar to functionality found in tiling window managers.
ray-tracer
A reimplementation of Peter Shirley’s Ray Tracing in One Weekend in Haskell. Supports ray-tracing on multiple cores in parallel. This project was a collaboration with James Johnson.
Krakatoa
Krakatoa is AWS Thinkbox’s toolkit for rendering and manipulating particle clouds.
I was on this project for the summer of 2017, and worked mostly on the 3ds Max plug-in. Features I contributed included improvements in the core ray marching algorithms and integration with Phoenix FD simulations.

Sequoia
Sequoia is AWS Thinkbox’s stand-alone tool for processing point clouds.
I was on the team from Fall 2016 to Summer 2017, and I worked on a variety of features, including support for new file types, realtime viewport rendering, the user interface, and continuous integration and process improvements.
Articles

Detecting Viewer-Perceived Intended Vector Sketch Connectivity (2022)
Humans easily perceive the artist-intended connectivity of imprecise freehand line drawings, but manually specifying the correct connectivity for downstream sketch processing applications is tedious and time-consuming. We propose a fully automatic method that finds viewer-perceived junctions in imprecise drawings by leveraging observations about human perception.
Half-Edge Data Structures (2019)
An interactive explainer introducing half-edge data structures and how to operate on them. This article was a collaboration with Jeffrey Goh.