Hello, World!

My name is Evan. I write Rust and JavaScript.

Some stuff I've done

  1. stun.evan-brass.net: I run a free TURN server. I've boiled the TURN protocol down to just being a stateless packet relay: 1 packet in, 1 packet out. No memory required unless you're connecting via TCP, and horizontally scalable without needing the alternate server mechanism. It does not follow the spec, but it works in all browsers (for now).
  2. weekend-raytracing: I followed a C++ tutorial using Rust and compiled it to WebAssembly so that it could run in the browser. It runs in a worker thread and then is copied and blit into an HTML canvas.
  3. sqlite.js: This is my take on a wrapper for SQLite. It compiles SQLite to WebAssembly, but than passes that module through Binaryen's Asyncify pass. This means we can use SQLite in a concurrent way without needing SharedArrayBuffer or Workers. A shell is available here. Someday I want to power my blog with this SQLite library someday.
  4. Morse Code Transmitter: I used a finite state machine to drive the interface in this web app. Every event is converted into a promise to be handled by a singleton async function. I love this design pattern and have used it in every project I've done since with only slight improvements. Driving interfaces using state machines is better than anything else I've tried including pure functional patterns like virtual DOM.
  5. WebRTC Sidechannel: I found and exploited a sidechannel in the WebRTC stats API to build reusable WebRTC addresses. This functionality has since been removed from the spec and from Chrome. Having reusable addresses is a core requirement for P2P applications like torrent, tor, etc.