Work History

Cloudflare - Systems Engineer (2021 to Present)

Microsoft - Software Development Engineer (2017 to 2021)

At Microsoft, I worked on the wireless networking and Miracast team. I was primarily focused on the Miracast and Wi-Fi Direct implementations in the Windows operating system. My primary responsibilities included designing and implementing new features, as well as ensuring that Windows maintained compatibility with the broader Miracast ecosystem, both as a casting device and as a receiving device. I also helped maintain Microsoft’s extension to Miracast, “Miracast over Infrastructure”, also colloquially called InfraCast.

One of my major projects was to design and implement a backwards compatible method of selecting which side of the Miracast connection should listen for the RTSP connection to manage the stream. By default, the Miracast protocol specifies that the projecting (source) device should listen for the incoming connection attempt from the target display (sink). This requires the projecting device to configure its firewall to allow the inbound connection. This became an issue for many corporate laptops that had their firewalls configured to block all incoming connections with no exceptions. By allowing the projecting device to request the target display to listen instead, no configuration changes were needed for these systems to be able to use Miracast.

Another project included implementing an extension to InfraCast to allow for a PIN to be required when setting up the connection. This feature helped to ensure that a user is connecting to the intended receiver, such as in an office building with multiple conference rooms.

I also worked on a couple smaller projects for the (now defunct) Windows 10X operating system. One was to ensure that it could be certified by the Wi-Fi Alliance (WFA) for proper Wi-Fi operation by updating the Microsoft toolkit used during the certification process. Another was to enable support for NFC hardware by bringing up the service for the driver to interface with.

Cboe Global Markets - Software Engineer (2015 to 2017)

At Cboe, I was a software engineer on the core trading systems that operated across three asset classes: U.S. Equities, Options and Futures. I was the primary maintainer for the order entry gateway, as well as working on the order routing system that handled sending orders to other exchanges. This was all done in a heavily regulated environment with performance as a critical component.

This role gave me experience with high-performance, low-latency code on Linux systems, as all measurements were done at the microsecond level. I also became familiar with several order entry protocols used in the financial exchange industry. I worked primarily with standard FIX (Financial Information eXchange) and BOE (Binary Order Entry), Cboe’s proprietary order entry protocol. I was the maintainer of both protocols while at Cboe. I also worked with protocols such as NASDAQ’s OUCH.

One of the major projects I was involved in was the migration of the Cboe Futures Exchange (CFE) to a new technology platform. In 2017, Cboe acquired Bats Global Markets and began migrating to the Bats technology platform. My role in the project was to design and implement the required extensions and changes to the order entry protocols to support CFE on the Bats platform. This included adding support for 24/7 operation and the new order types.

Another major project I worked on was the addition of Complex Options orders to the existing BZX and EDGX Options exchanges. I worked to design and implement the extensions to the order entry protocols, as well as assisting with the process to get trading members certified to send complex options orders.

I also implemented order routing beteween the Cboe exchanges using the faster BOE protocol instead of the standard FIX protocol. This reduced latencies for millions of the daily routed orders by nearly 35% compared to FIX and was immediately noticeable change in the recorded metrics.

During all of these projects, I ensured correctness through the use of unit tests and integration tests. This also included performance tests to validate that systems were continuing to operate at expected latencies, as well as load testing to understand how the entire platform behaved under high stress.