Technical Writing


Master’s Thesis

I am completing my Master’s Thesis from UOttawa in Aug 2023. My thesis has focused on how NLP techniques can be used for formalizing NL contracts into a specification language, which can be used to create automated smart contracts.

Link to thesis coming soon…

Link to RE Next paper coming soon…


Rules as Code

Starting in the Fall 2020, I worked as a Software Developer fellow with Code for Canada, a non-profit that ais to build digital capacity in the public sector. Working alongside a project manager and a designer, our team was integrated with Employment and Social Development Canada, where we worked closely with the ministry on innovative projects to improve services for Canadians. Our main focus was exploring how laws and regulations could be represented as computer code, in order to facilitate the development of various applications that deliver services to Canadians.

What is Rules-as-Code?

As an example, suppose there is a government benefit that provides benefits to a certain group of people (e.g. maternity benefits, employment insurance, etc.). In many cases, it can be difficult for someone to know if they are eligible and if so, then how much they are eligible to receive. By encoding the regulation in software, and exposing the functionality (perhaps through an API or library), then applications can be built around this API to help members of the public find the answers to these questions. As another example use case, suppose policy analysts are interested in changing some piece of legislation, and they want to understand how this change will affect the population and various sub-populations. If the rules are encoded in software, then we can run simulations against that code using sample populations.

Challenges

While the benefits to implementing Rules-as-Code are exciting, there are many challenges that come along with it. It is important that the encoded rules are accurate and truly reflect the intentions of the written legislation. Therefore close collaboration with policy experts is required. Furthermore, it is important that any data being used in these applications are fully anonymized, which can be a challenge to obtain. This is just a sample of the many challenges we faced in working in the Rules-as-Code space. Throughout this work, we also explored a variety of related work done in adjacent fields, to see if similar techniques could be applied to our own problem. Some related domains we explored included NLP and requirements engineering.

Rules-as-Code Sprint

Over the course of this 10-month fellowship, we also explored a variety of related work done in adjacent fields (e.g. NLP, requirements engineering), collaborated with groups from around the world that had similar goals, and worked on various proof-of-concept applications. We were major participants in a Rules-as-Code sprint, where we got together (virtually) with a variety of stakeholders (lawmakers, policy experts, other developers, etc.) to create a demo application that showed how Rules-as-Code could be applied to an existing Canadian regulation. The sprint was very productive, we produced a variety of useful artifacts, and we presented our work for the Canadian School of Public Services. A very interesting side effect of this sprint was a clarification on the existing regulation itself. We found that there are certain scenarios where the written regulations are actually ambiguous, and the process of subjecting these regulations to formal scrutiny can bring these ambiguities to light. This highlights another advantage of Rules-as-Code in that it can help clarify existing Natural Language rules.

We were strongly encouraged to work in the open over the course of this fellowship, and I wrote many articles on the applications and challenges of Rules-as-Code. Many of these articles can be found in this repository.


Foundations of Cryptography

I wrote a series of articles that describes the mathematical foundations of modern cryptography in a creative and accessible way. It can be found here.