I'm a PhD candidate in Computer Science at Cornell University. I'm interested in programming languages as a medium for human thought, expression and interaction with computer systems.
My work applies tools and techniques from programming languages to software-defined networks, optical networks and most recently, legal reasoning.
Domain-Specific Language Design and Implementation (DSLDI) 2017 (presentation)
ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS 2017)
IEEE/ACM Transactions on Networking, 2017 (journal version, accepted with minor revisions)
2017 Optical Fiber Communication Conference (OFC); SDN/NFV Demonstration Zone
10th International Conference on emerging Networking EXperiments and Technologies (CoNEXT '14).
Proceedings of the Twelfth ACM Workshop on Hot Topics in Networks (HotNets-XII)
Proceedings of the 26th IEEE International Conference on Software Maintenance (ICSM 2010).
Proceedings of the National Conference on Undergraduate Research, 2009.
February 2017 – Now
Anglo-American property law governs what things can be owned, what rights owners enjoy, and how these rights can be transferred and divided over time. Some portions of property law, such as nuisance law (governing relations among neighors) are based on open-ended standards and interpretation via common sense balancing tests. But other portions are notorious for their rigidity, relying on intricate bright-line rules that leave little room for interpretation. We treat conveyances as programs in a DSL that can encode a variety of standard legal concepts. Such a program denotes a deterministic tree of property interests. By applying a series of events to an interest tree, we can determine the who possesses the rights to a piece of property at any given point in time.
January 2016 – January 2017
Software-Defined Networking has promised to herald a new era of programmable, commoditized networking infrastructure. However, there are still large legacy networks in operation with predefined topologies and policies and limited or non-existent SDN support. Thus, to make the most of their networks, administrators today must figure out how best to combine the flexibility of SDN-enabled edge switches and a rigid, existing forwarding fabric. SpecNetKAT allows users to write policies for a network assuming pervasive SDN capabilities. A compiler then rewrites such policies to work on an immutable fabric and an SDN-enabled edge, while preserving certain user-specified properties.
March 2013 – September 2014
Modern networks are composed of many devices and must satisfy the needs of many users. Merlin is a project to develop high-level abstractions for programming such networks. The core of Merlin is a program that multiple administrators to control networks composed of heterogenous devices like switches, middleboxes and end-hosts.
February 2012 – March 2013
A novel architecture for datacenter network management using end hosts to perform the majority of the packet processing work. A component of the Frenetic project.
January – May 2011
Threaded, concurrent Actors in Ruby using a prototype-based programming style. Makes extensive use of Ruby's metaprogramming abilities