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

Argonx

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).

stats.f1ssi0n.com

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.

Forgery

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.

api.f1ssi0n.com

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

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

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 simple, fast, safe, compiled language for developing maintainable software'. I have been interested in it since its initial inception. What really stood out to me at the beginning was the simple compiler (now ast based) and rich (but not overbearing) feature set. I have been contributing to V since version 0.1.16 where I added MSVC compiler support and Windows hot code reloading support. I have fixed memory bugs, C code generation bugs, better multiple-return handling and variable sized options.

protoc-v

protoc-v is a V compiler / runtime for Google's protocol buffers (protobufs). It has its own V based parser and code generation. Right now it supports most (if not all) of the proto2 specification.

Doghook

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.

Oxide

Oxide is a library for rendering a transparent overlay. Originally used as a component of Doghook, it can be considered to be a fully complete and standalone library coming in either a shared dll or static library.