Last updated June 2nd, 2022


Hey, welcome! These are some things that I’ve done and would like to share.

Personal

Mesh VPN that works behind a NAT

https://github.com/malcolmseyd/natpunch-go

My most starred GitHub repo!

A prototype for a mesh VPN control plane that uses Wireguard to establish tunnels between machines. NAT hole punching made it possible to connect practically any two machines P2P, even behind a firewall, for high throughput data transfer.

I tried remaking this as a team project at Vikelabs, but unfortunately it didn’t work out. Here were some of our meeting notes:

BC Liquor Store browser

https://bcliquor.pages.dev
https://github.com/malcolmseyd/bcliquor-browser

A powerful browser for the BC Liquor store. It supports sorting, filtering, and searching. Only the initial page load uses the network, so it’s cacheable for offline use, and changing filters causes no additional network traffic.

Data is fetched and mapped using the API that BC Liquor store’s frontend uses. A script is run that downloads and saves the data to a JSON file with the source code, so the data is included with the source when it’s being bundled.

For my Javascript runtime I used Bun since it was all the rage when I made this project. I used Github actions to periodically fetch new data and bundle the source, which is deployed to a new branch. The bundled output is served on Cloudflare Pages. This project only uses SaaS free tiers, so it’s free “forever” with zero maintainance required.

Lisp Interpeter

https://github.com/malcolmseyd/lisp

I wrote my own Lisp interpreter from scratch in Go. It was a lot of fun and surprisingly simple! Check out the README for an explaination on how it works.

Web scraper to export my UVic schedule to .ical

https://github.com/malcolmseyd/uvic-schedule-exporter

Sorting algorithm visualizer in plain Javascript

https://github.com/malcolmseyd/sorting-visualizer

–> Live demo here <–

Since I used plain Javascript, you can read the source just using your browser’s dev tools!

Interactive RCON client for use with Minecraft servers

https://github.com/malcolmseyd/mc-rcon

My second ever program using TCP sockets.

Query a Minecraft server’s status (using just TCP):

My first ever program using TCP sockets.

Code golfing in C

Sometime’s it’s fun to write the shortest code possible, pushing the limits of the language (and definitely of readability).

–> blog post here <–

Work (open source only)

I wish I could put more here, but most of my code that I wrote at work is closed source and under NDA. Sorry!

Haunted hooks testing library in Typescript

https://github.com/saasquatch/universal-hooks/tree/342692b9b4213e5c48b4d408ad88bcda3bb19f5f/packages/haunted-hooks-testing-library

Vikelabs (team projects)

(buzzword alert) Serverless GraphQL API in Golang for audio transcription and tagged playback

https://github.com/VikeLabs/lecshare-api/tree/dev

Note the dev branch has most of our work. The contributor graph shows master. You might have to scroll a bit to see my work since we committed every time we wanted to test a Lambda function due to our CI setup.

This was my first team project, and probably my most formative programming experience! Vikelabs is an awesome software development club at UVic and it’s almost singlehandedly responsible for making me more confident with just building something and putting it out.