I have worked with everything from assembly and C to F# and Elixir. I have a strong interest in programming language and runtime platform design; I invariably end up reading the formal specifications of the languages I use, and I have designed languages of my own. I am comfortable stating that I have an above-average understanding of the programming languages I use.
I have many years of experience working on cross-platform projects targeting Windows, Linux, and macOS at various levels of abstraction. I am, for better or worse, intimately familiar with many of the nasty quirks and pitfalls of each operating system. I have also worked with most of the major processor architectures in use today - x86, ARM, RISC-V, MIPS, and others.
When necessary, I have reverse engineered both native and managed applications and libraries for the sake of interoperability, bug fixing, security research, or just plain old curiosity.
I have created several open source programs and projects, some of them more complete than others:
- Alkahest: An extensible TERA proxy server
- Atomique: Sane atomic operations for .NET based on the C++11 memory model
- Augmentrex: A reverse engineering tool for the Steam version of Hellgate: London
- DAREPL: An interactive REPL for CPU architecture emulation
- ExMake: A modern, scriptable, dependency-based build tool similar to Make
- ExParsec: A parser combinator library inspired by Parsec
- Flare: A dynamic programming language suitable for embedding
- SDB: Command line interface to the Mono soft debugger
- Satori: Libraries and tools for the Epiphany processor architecture
- System.Terminal: A terminal-centric replacement for System.Console
I have contributed to many others:
- DMD: The reference compiler for the D programming language
- dnlib: .NET module/assembly reader/writer library
- DRuntime: The runtime library for the D programming language
- Elixir: The Elixir programming language for the Erlang VM
- Homebrew: The missing package manager for macOS
- LDC: The LLVM-based compiler for the D programming language
- Meson: The Meson build system
- Mono: Open source implementation of C#, CLI, and .NET
- MonoDevelop: Open source C#/.NET IDE
- Orleans: A cross-platform framework for building distributed .NET applications
- Pegged: PEG-based parser generator for the D programming language
- Phobos: The standard library for the D programming language
- VapourSynth: A modern video processing framework
- Waf: The meta build system
- Xamarin.Android: C# bindings and tooling for Android
- Xamarin.Mac/iOS: C# bindings and tooling for macOS, iOS, tvOS, and watchOS
I have worked for the following companies and organizations:
- Microsoft (2016-2019): Runtime engineer working on the Mono virtual machine and related tooling
- Xamarin (2013-2016): Runtime engineer working on the Mono virtual machine and the Xamarin.Android, Xamarin.iOS, and Xamarin.Mac products
- Mono Project (2012-2012): Google Summer of Code mentor overseeing a student's continued work on the CIL assembler and disassembler tools
- Xamarin (2011-2012): Intern working on the internal build system for Xamarin.Android and Xamarin.iOS documentation
- Mono Project (2011-2011): Google Summer of Code student working on C# implementations of the CIL assembler and disassembler tools