I have experience with a fairly wide variety of programming languages and platforms. I speak most everything from assembly and C to F# and Elixir. I have a strong interest in programming language design, so I invariably end up reading through the entire specifications of the languages I use. As such, I am comfortable stating that I have an above average understanding of them. I have many years of experience developing software for Windows, Linux, and macOS, on various architectures (e.g. x86, ARM, MIPS, RISC-V).
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
Through my previous day jobs, I've worked on the following commercial products: