It started with games. Then I wanted to go deeper.
The beginning
C# and game development
Unity and Windows Forms were my introduction to programming. After about a year and a half, the ideas began to click—and I started looking beyond one language.
Branching out
The web, then Rust
I explored HTML, CSS, and JavaScript, including building a website for my dad's company. Rust led me toward custom languages and virtual computers.
Learning by building
C, languages, and the machine
Scone and galo became experiments in language design. WebAsmCompiler takes that curiosity further: opcodes, the stack, assemblers, and the path toward a compiler.
Beyond personal projects
Academics & industry exposure
At George Mason University's computer science camp, I explored Unreal Engine and game development, earning a college credit that transferred as electrical engineering credit. During a summer internship at Techneaux Technology Services, I shadowed the software team and was introduced to Razor, ASP.NET, and C#.
02 / The projects
Experiments with something to teach.
Finished tools, unfinished ideas, and the lessons in between. Ten projects from my portfolio, with the favorites first.
00 61 73 6d 01 00 00 00
opcodes↓assembler↓compiler
01 / PROJECT
WebAssembly · JavaScript
WebAsmCompiler
WebAssembly, from the ground up.
A journey from raw opcodes to an assembler, with a C-like compiler as the longer-term goal. The repository doubles as a development journal: binary sections, stack operations, bootstrapping, and the decisions along the way.
A Minecraft-inspired multiplayer experiment. One browser tab hosts the world and its updates; other tabs connect as clients. Firebase handles signaling, while WebRTC connects the peers.
fun add(left int, right int) int
return (left + right)
end
let x int = add(1, 2)
03 / PROJECT
C · Lexer · Parser · CLI
galo
Building a language in C.
A compiler and interpreter experiment with a command-line interface, lexer, and parser. The portfolio describes an unfinished language that can interpret simple programs—and the lessons that came with managing memory.
A working calculator language inspired by the TI-84: concise functions, constants, variables, and conditional expressions. An exploration of making syntax feel natural for mathematical work.
An early dive into low-level systems: a virtual computer that reads bytes and executes instructions, alongside an experimental assembler and compiler. A learning project rather than a production tool.
An unfinished language designed around expressive, object-oriented programming. Work on syntax and validation became a way to explore how a language can feel familiar while supporting powerful abstractions.
A proof of concept for a graphics system that builds as a Windows executable with Raylib or a Nintendo Wii executable for the Dolphin emulator. The Makefile selects the target.
A compact programming language written in C#, created as an example for a development blog. Part of an ongoing interest in turning language concepts into working code.
My favorite language. Years of working with it have made me comfortable with its insistence on correctness.
C
My choice for working close to the machine and understanding the bare bones of a system.
C#
My first language, with experience in Unity, Windows Forms, and developer tools.
JavaScript, HTML & CSS
Tools for the web, from company websites to browser-based experiments.
Python
A practical language for quick proofs of concept, using the fundamentals of functions and classes.
Concepts & ways of thinking
Designing with objects
Classes and data structures, constructors and object lifecycles, inheritance, interfaces, abstraction, and polymorphism.
These ideas help me organize behavior and reason about how different types can share a common contract.
Different programming paradigms
Experience with object-oriented programming and an interest in functional ideas, lambda expressions, and languages that support multiple approaches.
From source code to execution
Exploring lexers, parsers, compilers, interpreters, and just-in-time compilation—and how source code becomes something a runtime or machine can execute.