Projects

Vulkan rendering

Vulkan
Shader-Slang
Kotlin

I'm currently learning Vulkan by building my own graphics engine! Below is an example scene rendering a spiral galaxy structure modelled with the density wave theory.

A spiral galaxy with two arms and distortion effects near the edge of the screen
A spiral galaxy with two arms and distortion effects near the edge of the screen

NodeNMR

Denoising
NMR
BLAS
Kotlin

Denoising software for nuclear magnetic resonance (NMR) spectroscopy, with an interface for combining steps into a pipeline. It provides various denoising methods, including a fast implementation of Cadzow filtering, a method based on singular value decomposition from linear algebra.

A pipeline showing different combinations of denoising steps.
A pipeline showing different combinations of denoising steps.

Particle Hive

GPU
Compute-Shaders
Kotlin

A molecular dynamics simulation written using GPU compute shaders. These can run efficiently on most consumer hardware, including in browser using WebGPU. Users can interact with particles live, changing parameters like time step, heat, or even the forces between particles. Some pairwise atomic potentials are provided by default, with an API for users to add more (read the docs.)

A 3D scene with two particle types, plotting the size distribution of clusters in the sidebar.
A 3D scene with two particle types, plotting the size distribution of clusters in the sidebar.

Geary

ECS
GameDev
Kotlin

An entity component system I wrote from the ground up in Kotlin. It lets users write fast code in a modular way by making systems that quickly iterate over entities with desired data. It uses archetypes for its architecture, and the design would allow for data to be packed tightly in memory once value objects are added to Java. It also has entity relations built into the engine, inspired by flecs.

You can see a demo in my blog post Making an efficient Minecraft particle system using ECS

Sysadmin work at Mine in Abyss

Docker
Ansible
Grafana
Linux

A community-driven recreation of Made in Abyss in Minecraft. I did game development and server infrastructure work across several projects that help us deploy and maintain servers as a small team, here's a quick summary of my work there:

The golden bridge in Orth overlooks the Abyss.
The golden bridge in Orth overlooks the Abyss.

Weekly task planner

Android
Compose
Sqldelight
Kotlin

A cross-platform task and week planning app written on Jetpack Compose, with a sync server. It uses sqlite for storage, with near-instant startup times on Android, alongside a quick-add feature.

The application home screen on Desktop
The application home screen on Desktop

Clicky

HTMX
TailwindCSS
Ktor
Kotlin

A simple tool to poll large groups of people (eg. a classroom) and display results live. A presenter can create a room, define a list of options, and have an audience join via a QR code on screen. The app is built with Ktor and HTMX, which combined made handling live updates surprisingly simple.

Live poll and vote selection after creating a room
Live poll and vote selection after creating a room

Game jams

Unity
C#

I've worked in Unity and Godot with C# to create games for game jams. My latest entry was Rock Bottom in Ludum Dare 46. I worked in a team of three to create a physics puzzle game using an event driven architecture.

Pet rocks in the pet rock shop return home
Pet rocks in the pet rock shop return home

Website development

TailwindCSS
HTML

I've designed a few websites using a custom static site generator called Shocky. It's built in Kotlin but generates plain HTML and CSS without any client-side JavaScript. These include: