Homepage
I am a sixth year PhD candidate in The Ohio State University’s Computer Science and Engineering department. I like to call my research interests gradual formal methods: Observe real software in situ to construct a principled model to drive decision-making. I’ve applied this technique to autonomous vehicle firmware, and more recently to deep learning frameworks. My advisors are Drs. Feng Qin and Christopher Stewart.
Recent Blog Posts
Rust: Generics Considered Colorful
Published:
This post shows that Rust’s generics are colorful. I’ll demonstrate an example to show what I mean, and what the problems are.
A Concept and Template Meta-programming Approach to Session Types in C++
Published:
Introduction
Programs communicate – whether with other programs or humans. Software developers write programs with a protocol in mind. Sometimes there’s documentation for the protocol. But there’s no mechanism that keeps implementation and documentation in sync. Bugs occur when protocols diverge.
Using F* to Formally Verify Programs
Published:
Formal methods are currently not widely embraced due to their perceived difficulty. However, the landscape is changing with the emergence of new technologies that make formal methods more accessible than ever before. F*, developed by Microsoft Research, is a groundbreaking functional language that combines dependent types and proof-oriented features. By bridging the gap between programming and proving, F* facilitates a gradual adoption of formal methods by software engineers. In this post, I will provide an introduction to the basics of F* and demonstrate how we can leverage its capabilities to verify a solution to a LeetCode problem. I can’t cover all the background material needed to understand F* in this post. I assume that you have some experience in a language like Haskell or OCaml.
A LISP REPL Inside ChatGPT
Published:
TL;DR: ChatGPT is a LISP REPL.
Programming Puzzle: Optimal Pothole Repair
Published:
This post discusses how to efficiently schedule optimal pothole repair!