I’m a software engineer with 6+ years of experience, focusing in back-end development while doing some front-end work in a pinch. My experience includes enterprise software at a Fortune 100 company, video games at a startup, academic research, and an open-source project to which I've been contributing for the past 11 years.

Current experience

Conversational AI at Microsoft Semantic Machines

Since May 2022, I've been a Senior Software Engineer in Microsoft's Semantic Machines group, where I focus on back-end/infrastructure support for production services.

Previous experience

Application Performance Monitoring (APM) at AppDynamics

From August 2017 to April 2022, I was a Software Engineer at AppDynamics, a Cisco subsidiary in San Francisco that specializes in system performance monitoring. I was promoted from Software Engineer II to III in April 2020.

AppDynamics ensures that organizations with internal or customer-facing software--including companies outside of tech, such as banks and airlines--avoid the lost business (not to mention embarrassment) of having news stories of their website being slow or even down for hours (or longer!).

I worked on AppDynamics's flagship products for Application Performance Monitoring (APM), whose origins go back to the company's founding in 2008. Of the three components of APM—reporting metrics/errors (agents), aggregating/displaying reports (controller), and analyzing results (analytics)—I focused on the first and also on the second as needed to support the first.

From May 2019 to April 2022, I was on the .NET APM agent development team, which supports monitoring .NET applications running on anything from early .NET Framework versions to the latest .NET releases. I'd previously worked on core functionality for the Node.js agent and C/C++ SDK. One of my largest contributions was integrating End User Monitoring in Web browsers with applications/services running on .NET Core/.NET 5+, but I worked on many other components, such as error reporting and other diagnostic features.

Game Development at Trion Worlds

I was a software engineer on the RIFT game development team at Trion Worlds in Redwood Shores from April 2013 to January 2015. I was promoted from Associate Software Engineer in July 2014. I worked on everything from customer support tools to server infrastructure to client UI.

My largest contribution was consolidating smaller monolingual servers into larger international servers, thereby eliminating the overhead of having separate serverse for less common languages. I worked with another engineer to refactor the localization code so that players speaking different languages could all play on the same server while still receiving the game’s content in their language.

Other contributions included code support for underwater mounts and synchronized voiceover for the in-game tutorials, as well as gameplay customizations for the Chinese version of RIFT.

Internship at Cisco Systems

In Summer 2012, I was a software engineering intern at Cisco Systems in San Jose. I added support for using multiple touch input devices in their TelePresence immersive videoconferencing systems using C++ in a Linux command line environment. My work ultimately shipped with the product.

Open-source contributions

FreeSpace 2 Source Code Project

Since June 2011, I have been contributing in my spare time to The FreeSpace 2 Source Code Project (SCP), a set of open-source non-commercial software projects centered around FreeSpace 2, the classic space fighter combat game from 1999. The developer, Volition, released the source code in 2002, and the SCP has been working on it ever since.

The FreeSpace 2 Open game engine and related tools support the efforts of what PC Gamer magazine has called “one of PC gaming’s most impressive modding communities” to create FreeSpace 2 mods and total conversions.

wxLauncher 2nd-generation setup tool

From June 2011 to January 2014, I co-led the wxLauncher cross-platform configuration tool project (previously on Google Code), which became a necessity after the SCP ported the engine to run on macOS and Linux. The project had previously been dormant for over a year. I fixed broken components, completed missing or incomplete core subsystems, added macOS compatibility, revised the documentation, and polished the UI.

The community’s enthusiasm for the revamped wxLauncher was best expressed in the January 2013 newsletter (emphasis added):

And in more general FreeSpace tools news, wxLauncher, which is sure to be the launcher of the future, threw out a few major versions this year as well. Not to abuse this soapbox to endorse projects but… this truly did change my life… forever. Be sure to try it so it changes yours too!

Diaspora free BSG-themed space fighter game

My work on wxLauncher enabled the cross-platform release in September 2012 of Diaspora: Shattered Armistice, a free fan-made space fighter game set in the reimagined Battlestar Galactica universe. I also managed Diaspora's Linux release. The game has been downloaded over 250,000 times and was well received in the gaming press, including being ranked #25 in PC Gamer‘s “the 50 best free PC games” in May 2016. You can download it with our Knossos installer tool (more below).

Enhanced in-game sound

In mid-2015, I upgraded the engine’s sound code to increase the number of audio channels from 32 to 128, as well as adding a flexible new system to give content creators fine-grained control over how the engine prioritizes in-game sounds, resulting in richer soundscapes and intensified player immersion.

Knossos 3rd-generation setup/installer combo tool

From April 2017 to February 2019, I made various improvements to the usability and responsiveness of wxLauncher's successor, Knossos, a Steam-like content distribution platform client for the community’s mods/assets, written in Python with a Vue.js front-end. My contributions have included implementing the mod list sorting options and network settings, revising the first-time welcome wizard and other prompts, and nearly eliminating the lag that used to occur when switching tabs.

Containers for mission designers

Since February 2021, I've picked up another SCP coder's work on supporting data structures for game (mission) designers. Although designers have always been able to use variables, data containers allow for storing/retrieving data in much more sophisticated ways. They'll allow for creating game missions that would otherwise be infeasibl or even impossible.

Academic experience

Data privacy research at UMass Amherst

As a graduate research assistant at UMass Amherst's Center for Intelligent Information Retrieval (CIIR), I co-developed a Java RMI-based software prototype for privacy-preserving distributed search log mining, which led to an accepted paper at the prestigious ACM SIGIR conference in 2011 (see below).

Linux command line guide e-book

Back in college, I wrote a guide to the Linux command line interface and published it on the Web using DocBook. Several course and computing resource websites included a link to it. An editor at O’Reilly Media even expressed interest in it but decided that commercializing it would not be feasible for economic reasons.


Henry Allen Feild, James Allan, and Joshua Glatt. CrowdLogging: distributed, private, and anonymous search logging. In Proceedings of the ACM SIGIR International Conference on Research and Development in Information Retrieval (SIGIR), pages 375-384, 2011. [ACM Digital Library]


Programming languages

  • C/C++ (fluent)
  • Java and C# (proficient)
  • Python and JavaScript (prior experience)
  • Perl (10 minutes of experience, enough to update a script)

Foreign languages

I’m proficient in Spanish and familiar with French, Hebrew, German, and Arabic. I was proficient in them at various points, but it’s been a while.

I even took some classical Latin and Biblical Hebrew in college—ancient languages are amazing.


University of Massachusetts Amherst
M.S. in Computer Science
NSF Graduate Research Fellow

Washington University in St. Louis
B.S. in Computer Science, magna cum laude