Jonathan M. Pryor


jonpryor@vt.eduhttp://purl.org/net/JonPryor/Home/

Objective

Full-time software engineer position.

Education

M.S., Computer Science May 2003 Virginia Tech, Blacksburg, VA GPA: 3.85/4.0
B.S., Computer Engineering May 2001 Virginia Tech, Blacksburg, VA GPA: 3.11/4.0

Activities and Awards

  • Maintain Cadenza, a collection of utility types and extension methods for .NET.
  • Technical Reviewer for Cross-Platform .NET.
  • Designed and implemented many System.Diagnostics and Mono.Unix types for Mono.
  • Added Generics support to mdoc.
  • Wrote and maintained the Interop with Native Libraries document.
  • Designed and implemented Mono.Fuse, a FUSE wrapper which allows implementing Linux filesystems from any .NET language.
  • Upsilon Pi Epsilon Computer Science Honor Society, 2002-2003.
  • Association for Computing Machinery, 1996-2003; Vice president, 1999-2000.
  • Eagle Scout Award, Boy Scouts of America, 1996.

Experience

Microsoft Corporation 3/2016 - Present
Software Engineering Manager
  • Developed .NET for Android, which allows running apps written in C# on Android, with full interaction between Java and C# via JNI.
  • Managed remote team spanning 9+ timezones developing .NET for Android, part of .NET MAUI.
  • Contributed to success of .NET MAUI with Android platform support, performance improvements to the developer debugging experience, speeding up app build and deploy times.
  • Wrote several metaphorical books-worth of commits detailing how all pieces fit together.
  • Worked with PM team to prioritize feature design and development.
  • Led the migration from the Mono runtime to the .NET runtime via MonoVM.
  • Migrated .NET for Android native code from C to C++.
  • Wrote Irony to parse Javadoc, transform into C# XML documentation comments, to provide documentation for C# bindings of thousands of Java types and members.
  • Wrote JNI backends that worked under .NET Core, so that many .NET for Android unit tests could run on desktop macOS and Windows machines.
  • 700+ commits to dotnet/java-interop, 900+ to dotnet/android, 1000+ to mono/mono.
Xamarin Inc. 6/2011 - 3/2016
Hacker
  • Developed Xamarin.Android, working on the runtime, C# callable Android binding, documentation importation.
  • Provided Q&A for Xamarin.Android and other projects on stackoverflow.com, mailing lists, bugzilla, and IRC.
  • Maintained mdoc, Mono's suite of documentation tools.
Novell, Inc. / Mono 3/2009 - 5/2011
Software Engineer II
Novell, Inc. / OpenOffice.org 8/2007 - 3/2009
Software Engineer II
Cadmus KnowledgeWorks, Richmond, VA 8/2003 - 7/2007
Software Engineer
  • Maintain Cadmus RapidInspector™, a Java Web Start validation & submission program for Classic Mac, Mac OS X, and Windows platforms, which used JNI for file validation.
  • Maintain several JSP sites for both internal and public use.
  • Designed and implemented Perl modules to interact with a REST web service utilizing RDF.
  • Designed and maintain several internal Perl modules which interact with a Java J2EE application using SOAP.
  • Designed a Perl module deployment architecture to permit atomic installations and version downgrades.
  • Wrote guidelines for CVS usage.
Virginia Tech, Blacksburg, VA 8/2002 - 6/2003
Graduate Research Assistant - CITIDEL Digital Library
Eastman Kodak Company, Rochester, NY 5/2002 - 8/2002
Intern/Advanced Development
  • Wrote a Managed Extensions for C++ .NET wrapper for Picture Metadata Toolkit (PMT).
  • Enhanced thread-safety, researched lifetime management, fixed defects in PMT.
  • Prototyped future PMT designs.
Virginia Tech, Blacksburg, VA 8/2001 - 5/2002
Graduate Research Assistant - CITIDEL Digital Library
  • Explored use of XML, XML Schema, to store history links for an online digital library.
  • Wrote XML stylesheet transforms to translte between XML Schema types, facilitating the transfer of digital library metadata.
  • Prototyped user interface for Viaduct, a web application to alow professors to create and publish lesson plans online.

Managed a remote team spanning 9+ timezones maintaining .NET for Android (https://learn.microsoft.com/dotnet/android).

  • .NET for Android allows running apps written in C# on Android, with full interaction between Java and C# via Java Native Interface (JNI).
  • Worked with PM team to determine priorities of feature design and development.
  • Communicate project status and updates to stakeholders, open-source community.
  • Contributed to the success of .NET MAUI by strengthening Android platform support and implementing key performance enhancements that improved developer debugging workflows. Optimized build and deploy processes, significantly improving productivity for cross-platform developers.
  • Improved compatibility between .NET and .NET for Android by leading the migration from the Mono runtime to the .NET runtime via MonoVM backend.
  • Improved type safety and performance by migrating native code from C to C++.
  • Provided documentation for C# bindings on thousands of Java types and members by writing an Irony (https://github.com/IronyProject/Irony) parser to extract Javadoc and transform into C# XML documentation comments.
  • Allowed some unit tests to easily run on CI by writing JNI backends that worked under .NET Core, allowing them to run on desktop macOS and Windows.
  • Wrote several metaphorical books-worth of commits detailing how all pieces fit together.
  • Led the migration from the Mono runtime to the .NET runtime via MonoVM.
  • Migrated .NET for Android native code from C to C++.
  • Wrote JNI backends that worked under .NET Core, so that many .NET for Android unit tests could run on desktop macOS and Windows machines.
  • Contributed over 2,500 code commits across major .NET and Mono repositories, including dotnet/java-interop, dotnet/android, and mono/mono, driving improvements in cross-platform compatibility, Android support, and runtime performance.
Microsoft Corporation, Redmond, WA 5/2000 - 8/2000
Software Design Engineer
  • Wrote ADepends, a .NET 1.0 SDK sample which displays a graph of Assembly dependencies.
  • Wrote AdProfiler, a .NET 1.0 SDK sample which displays all of the AppDomains and Assemblies currently loaded within a process.
Eastman Kodak Company, Rochester, NY 12/1999 - 1/2000
Co-op/Advanced Development
  • Ported image manipulation libraries to Linux.
  • Compared executable size and speed between Linux and Win32 exectuables.
  • Wrote a well-received report detailing changes required for Linux port, summary of performance results.
IBM, RTP, NC 1/1999 - 8/1999
Co-op/Pervasive Computing Group
  • Wrote HTML transforms (e.g. replacing tables with lists).
  • Helped co-workers with C++ and Windows API issues.
  • Participated in designing the IBM TransProxy TextEngine, which applies device-dependent transformations to HTML and XML input, generating HTML or XML.
  • Wrote component-level-design documentation for the TextEngine.
  • Implemented TextEngine modules in Java.
  • Explored design alternatives for use in the TextEngine.
IBM, RTP, NC 1/1998 - 8/1998
Co-op/Mobile Equalizer Build Team
  • Designed and implemented software "agents" for a persistent storage mechanism.
  • Compiled and tested IBM Mobile Equalizer.
  • Wrote build scripts to facilitate NLS builds of Mobile Equalizer.
  • Created/updated build process documentation.
  • Trained replacement in Mobile Equalizer build process.
  • Setup and repaired developers machines.
Eastman Kodak Company, Rochester, NY 9/1995 - 8/1996
Software/Consumer Products Tester
  • Tested effect of hue, saturation, and contrast adjustments on color print image quality.
  • Programmed utilities for the Sun Solaris Operating System.

Computer Skills

Operating Systems • Linux • Microsoft Windows • Apple macOS
Languages • C, C++, C#, Java • HTML, CSS, XML, XSLT • Perl
Software • Microsoft Office • Microsoft Visual Studio .NET
Component Systems • OOP • Component Object Model • Microsoft .NET