Contributing to climlab


My introduction to the climlab climate modelling tool was in EART 124: Modeling Earth's Climate . This tool is a python library aimed at teaching students about climate modelling and provides a flexible framework for building climate models. My interest in this tool (and this subject) was substantiative and when I was invited to TA the class in my final year I could not possibly say no. This started me down a path of fixing bugs and contributing new features, a path I still tread to this day. I've thus far added an instantaneous insolation process, fixed some bugs, and implemented zonal (heat) diffusion. I'm in the process of adding, amoung other things, a simplified cloud feedback process.

glEBM: A High Performance Climate Model


While finishing my thesis projects in my final quarter of undergrad, I began developing an ultra-high speed energy balance model (EBM). My goal is to streamline high-resolution climate experiments which make use of EBMs. This model is currently ~5 orders of magnitude faster than the reference model it is based off of, and it achieves this speed by making use of OpenGL's compute shaders. I'm currently in the process of adding new features, testing existing features, and making the tool easier to use. Once those tasks have been completed, I intend to release this model for use by other researchers.

pyflowtool: A Pythonic Tool for Modelling Physical Systems


When taking an environmental science class on modelling physical systems, I became enamoured with a tool called InsightMaker. This tool allows one to define complex networks where the nodes are variables (usually physical quantities) and the edges are equations; this method of diagamming physical systems struck me as particularly elegant and so, in the space of a day, I produced a my own prototype version. This tool is still a work in progress and I intend to port articles here about the process of improving it.

3D Multiplayer Game Framework


I have a lot of friends who study or work in game development and they inspired me to make my own game from scratch using just OpenGL, GLFW, and C++. I've been working on this project on and off in my free time and thus far have gotten 3D rendering, simple rigid-body physics, secure logins and encryption, and authoritative-server multiplayer. I'm still working on gameplay, synchronization issues, and model/asset loading updates.

Simple 2D RPG Game

As a general education requirement, I took a game design class. For the final project, I as assigned to make based off of techniques we had discussed inc class. Our group chose to base our game off of the Nintendo 64 Zelda game; I wrote my own engine/framework in C and my group partner sourced and produced assets. The assignment required "Ark" as a theme; we interpreted that as "Noah's Ark," hence the religeous imagery.

2D Lattice-Boltzmann Fluid Dynamics

As a final project for a class I took in numerical modelling, I wrote an implementation of the Lattice-Boltzmann algorithm so that I could model 2D fluids. This project was very rewarding and I've made the original write-up available below. My final grade on the project was 109%, an A.

Retro 8-bit Computer

For my Personal Project (a required component of the International Baccalaureate program) in high school, I designed, soldered, and programmed an 8-bit computer based off of the Zilog Z80 CPU. The device had 32K RAM and 32K ROM and some very simple peripherals. I wrote a test program for it using Zilog assembley, and then converted it to machine code using the datasheet, and programmed that into the EEPROM by hand using a programming circuit.