I'm enthusiastic about programming language and runtime platform design. As such, most of my work has revolved around compilers and virtual machines. In my day-to-day work, I prefer to use C#, C, or Zig depending on the task, but I also have a high level of expertise with C++, D, Elixir, F#, Python, TypeScript, and assembly. Beyond these, I've briefly used an array of programming, scripting, orchestration, query, and markup languages that is too long to list here.
I have many years of experience working on cross-platform projects targeting Windows, Linux, and macOS. I've also worked with Android and iOS at the native level. I'm familiar with many of the quirks and pitfalls of these operating systems. I've also worked with all of the major architectures in use today – x86, ARM, RISC-V, Power ISA, and MIPS. Native-code compilation, disassembly, binary analysis, and simulation are subjects I have great interest in.
When necessary, I've reverse engineered software for the sake of interoperability, bug fixing, security research, or just plain old curiosity. Reverse engineering network protocols is something I find particularly interesting and have done many times.
Occasional Web development has afforded me experience with some frameworks and tools - ASP.NET Core, Node.js, webpack, etc. My interest here is mainly in the backend. I've also done server-side development unrelated to Web technologies. In these endeavors, I've gained experience with relational databases – MySQL, PostgreSQL, and SQLite in particular – as well as some document-oriented ones.
Build systems and continuous integration are areas I have a pragmatic interest in. These processes should be effortless and reliable; they should not get in the way of development. I make an effort to automate as many tasks as possible in my projects, and go to great lengths to squash build system bugs that harm productivity.
As you can probably tell, I've done a bit of everything. It turns out that I'm a pretty fast learner who enjoys learning new technologies and solving problems for other people.
I've worked for the following companies and organizations:
Vezel (2022 - now): Founder and maintainer working on the organization's various open source projects.
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.
Google Summer of Code (2012 - 2012): Mentor overseeing a student's continued work on Mono's CIL assembler and disassembler tools.
Xamarin (2011 - 2012): Intern working on the internal build system for Xamarin.Android and Xamarin.iOS documentation.
Google Summer of Code (2011 - 2011): Contributor working on C# implementations of Mono's CIL assembler and disassembler tools.