Hi there, I'm

Henry Wang

I am a software engineering student in my penultimate year at the University of Auckland, with a passion to explore everything that can be offered by software technologies.

Photo portrait of Henry Wang

About me

My programming journey began in the latter half of 2021 when I was introduced to the basics of Matlab and C through an engineering course. Prior to that, I had a surface-level understanding of Python from self-learning. During that time, I thoroughly enjoyed the learning process and the systematic approach that came with writing code and using its surrounding technologies. I immediately jumped into the deep end by learning Vim as my text editor. It was after that course that I decided to pursue Software Engineering.

My first major pursuit was completing Advent of Code 2021, which involved solving a difficult set of programmatic problems using the only languages I knew at the time: Python, C, and Matlab. As I progressed in my software engineering studies the following year, I learned Java (with a focus on mainly OOP and design) through the courses I was taking and also self-learned Rust, Lua (for configuring Neovim and Hammerspoon), HTML, CSS, and JavaScript. Strengthening my knowledge in algorithms and code design, I successfully completed Advent of Code 2022 solely in Rust.

In my spare time, I enjoy playing video games—especially 2D platformers like Celeste—and I also love exercising through activities such as running, yoga, badminton, and going to the gym. My passion for learning is evident in my various programming ventures. Additionally, my drive to learn has led me to become proficient in a few esoteric skills, such as achieving grade 8 proficiency in both Piano and Flute. I've also mastered using the Dvorak keyboard layout and experimented with writing in Teeline shorthand.

Projects

Portfolio Website

Rust, Sycamore, Perseus, Figma, CSS

This website! It is my exploration into the front-end capabilities of Rust’s. I first created the design for the site in Figma, and then built it using Sycamore—a framework that compiles written Rust code into HTML and WebAssembly. Perseus is used to generate a static site at build time and vanilla CSS allows for fine-grained control over the design. It is currently hosted on GitHub pages with the build and deployment process automated using a GitHub action.

Check out the source code on GitHub
Hero section of the portfolio website for Henry Wang

Quick, Draw!

Java, JavaFX, Maven

Quick, Draw! is a Java-based desktop game for young adults, where players practice speed drawing. It uses JavaFX for the GUI and a neural network to guess the drawings. The game offers various difficulty levels, three game modes (Classic, Hidden Word, and Zen), and allows users to create custom profiles with profile pictures, player statistics, and badges. Created in a group of three, I was responsible for the various game modes, profile pictures, and providing feedback on pull requests.

A round of Quick Draw gameplay

Simple PDF Merger

Rust, egui, lopdf

This is a simple utility I created to assist in merging the numerous lecture slides provided in my university courses. It utilizes the Rust library lopdf to programmatically merge PDFs. Apart from merging, it offers additional features like generating a table of contents for each PDF and removing highly similar pages compared to their preceding ones. The UI is built using the Rust UI framework egui, enabling users to easily drag and drop PDFs or add them through a file browser.

Check out the source code on GitHub
Main screen for PDF merging application with a list of PDF to merge

Virtual File System

C, GNU make

I designed and implemented a basic linked allocation file system that writes its contents to a virtual device created using the C mmap call. The virtual device is then stored on disk using a backing file. The file system enables the creation of directories and files in a tree structure, as well as read, write, and append operations on existing files. Additionally, it supports the listing of all files and directories (along with their sizes) stored within a subdirectory

Contact Me 👋

Fill in the form to send me an email.