Emily Hudson

Undergraduate student and software developer with extensive experience in many areas and languages including C++, C#, Go, Python, JS, Rust and V. I have worked on reverse engineering Steam, Epic Games Store, Team Fortress 2, CSGO and many others; writing codegen backends and squashing bugs for V; and collecting, collating and congealing statistics from CSGO game servers.

View my projects


An attempt to rewrite steamclient.dll - The binary that communicates to the steam servers. This project is built on top of my original work on this that started with Argon. Argonx is written in C++ supporting all major platforms. it mimics the steamclient server/client model along with exposing the interfaces with minimal code repetition (look at rpcdetail.hh for some template magic).


A service that tracks CSGO matchmaking and server statistics. It can be used to show overall trends, the effect of updates on the playerbase and (most importantly...) which maps are most played and have the lowest queue times.


Originally intended to be a compileable, modifiable and extendable version of the 2007 Hammer editor utilising the original source code. After many days trawling through DLL hell trying to get the seperate components of the Source SDK to work nicely together, Forgery is being rewritten from the ground up in Go - utilizing imgui for UI and OpenGL for rendering.


Simple, concise REST api for common functions that I require. It is written in Go in ~200 lines and right now only provides a simple file upload service with authentication for multiple "admins" and "users". These files are then served with nginx via i.f1ssi0n.com.


Nadim.club is a solution to a problem. People didn't to login to chat services on uni computers. Nadim.club provides a simple communication method for people that want to talk during practicles. It is imlpemented with a Go backend in ~450 lines with communcation between clients and the server performed over a websocket finished with a bootstrap single page interface. It supports a single group chat which everyone can talk in along with direct messages.


Circuitz is designed to be an actually decent replacement for logic.ly - a tool that I am required to use for a module on my course. I find logic.ly generally fiddly and cumbersome to use so I attempted to create a solution that I felt would allow me to be productive. It is written in C++ utilising ImGui, GLFW and GL for rendering but is webpacked with emscripten and rendered in browser on a HTML5 canvas - meaning it can be used from anywhere. More features are added as I feel they are needed.


V is a new(ish) programming language attempting to blend together the best of several other popular programming languages. I have been intrested in it for a while due to its simplistic compiler and rich feature set. I am a member of the vlang organisation on github and have contributed several important pieces of code including MSVC backend support, Windows hotcode reloading and a fix for generic function dispatch allowing it to work on all platforms (and make the V 0.1.22 release) along with trying to report (and sometimes squash) bugs as I find them.


Doghook was supposed to be a competitor to the popular program cathook and would theoretically offer a plethora of features not to dissimilar whilst also being cross-platform. It never really took off but was a good exercise in redesigning how people approached writing these programs. Also allowed me to continue my reverse-engineering efforts which I was enjoying at the time and extend them to new mechanics like backtracking.