Emily Hudson

Building the future of streaming @ Rainway.

10 years of programming experience: Rust, C#, Go, Python, V; full stack; winapi specialist. Reverse engineered Steam, Epic Games Store, Unreal engine, Source engine, CSGO, TF2, Hammer, Windows, and many more. Vlang contributer.

View some of 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).

typeracewith.me

My second year university group project, our aim is to create an aesthetically pleasing, simple to use, typing oriented website. When completed it will provide both multiplayer and solo type racing in a consistent modern style; complete with stat tracking, leaderboards and profile pages.

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 G3n for rendering.

api.f1ssi0n.com

Simple, concise REST api for common functions that I require. It is written in Go in ~200 lines the main feature is 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 imlepemented 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.

Vlang

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

protov

protov 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. It is used in Vapor to interact with the Steam backend.

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 thoroughly enjoy.

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.

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. Unfortunately a recent CSGO update has prevented the collection of this data. Watch the space for a new stats related project.