Below are a few technical projects that may be of interest.
- 2D video game and engine
- Go Behave - an extensible behavior tree library in Go
- Wloggr.com - a web app for logging workouts
- Self-Balancing Robot
- Extremum-Seeking Control
- Reduction of Static Noise in Real Time
October 2018-present. I am developing a video game in Go using a homemade engine (the only 3rd party library being a wrapper for low-level functionality such as key events and other OpenGL calls).
The engine allows for, among other features:
- Artificial intelligence via behavior trees that can be defined in a custom-built simple declarative language, allowing for e.g. game designers without programming experience to design agents with intelligent behavior.
- Efficient collision detection and resolution due to spatial partitioning.
- Loading and rendering of tilemaps and tilesets built using the Tiled Map Editor.
- Easy development of features thanks to a highly modular implementation of an Entity-Component-System architecture.
The code is private, but if you are curious I am happy to discuss it with you.
December 2018. Go Behave is a behavior tree library I wrote mainly for use in the video game mentioned above. Please refer to the project repository for more information.
August-October 2018 (on hold). Wloggr ("workout logger") is a web application that lets users register and maintain a log of workouts. The frontend is built with React.js and communicates via a RESTful API with a Go backend. Code is available on the project repository.
November–December 2017. In a control systems project course, three other students and I built a self-balancing two-wheeled robot using LEGO Mindstorms components. We implemented and compared two different control strategies: PID control and linear-quadratic control. We compared two different filtering methods—Kalman filtering and complementary filtering—for the measurements taken by a gyroscope and an accelerometer. The control algorithms were implemented first in Simulink and then in leJOS on a LEGO Mindstorms EV3 microprocessor. The project report can be found below.
April–June 2017. As the final project in an advanced course in control theory I chose to investigate an area of control engineering known as extremum-seeking control. While the aim of conventional control is to drive the output of a system to a predetermined reference value, the purpose of extremum-seeking control is to create a controller that finds an optimal reference value for a system to operate at. This type of control is often used within the process industry to optimize system performance and subsequently minimize resource usage. The project report can be found below.
February 2017. In a digital signal processing project course, a fellow student and I investigated and implemented an algorithm for reducing static audial noise in real time. The solution was implemented on a SHARC DSP. The project report below further explains what we did.
This website is built with Flask, a Python web framework, and a set of useful templating engines. These tools reduce code duplication and increase maintainability. However, as there is no need for dynamic interaction with the user, I also use Frozen-Flask which creates a set of static files from a Flask application. This lets me host the website with GitHub pages which is both fast and free. The GitHub repository for the webpage can be found here.