I explain a very cool programming paradigm, by way of a POPL paper with Harvard colleagues.
I did a twoopsla.
Follow-up discussion from a post on the SIGPLAN plan about notation.
Modeling languages faithfully means thinking about more than core calculi.
I explain how our OOPSLA 2020 paper can help you prototype static analyses.
Playing around with Brzozowski derivatives of regular expressions.
Our work is featured on the SIGPLAN blog.
A reference semantics for the POSIX shell.
A position paper, in SNAPL 2019.
Someone implemented my POPL 2015/TFP 2016 work.
When should a runtime-checked refinement type system reject a program?
A history of the term 'refinement type', with thorough discussion.
PLVNET
Tuesday, December 2, 2014
I have two papers in a workshop on PL techniques applied to networking.
My first sole-author paper, presented in Mumbai.
Runtime checking---of types or more complex properties---can only be understood by breaking things down to the fundamental checks being done.
My first sole-author submission.
An ICFP 2014 submission, with Princeton colleagues.
PL meets networking meets the very stench of Hades.
A show-stopping bug in my ESOP 2011 paper.
I am become doctor, lecturer of students.
Formal models of manifest contracts might ask questions about how two refinement types relate. Implementations use theorem provers. How should we understand these checks?
The last leg of my thesis: can you enforce contracts without blowing up your stack?
I presented at a regional workshop.
A paper submission (not to be).
Run your research in... the Glasgow Haskell Compiler.
A cool idea, never brought to fruition: how do you move state between devices?
I did a double.
A submission to ESOP 2011.
Functional programming plays in an unlikely role in a CACM article.
Exploring a language feature.
I reflect on my first conference as an author.
The POPL 2010 camera ready.
Outdated instructions, useful in their time.
Our work finally appears in a conference---OOPSLA 2009.
Our POPL 2010 submission. (Before the days of double blind review!)
A technical report on Flapjax.
Flapjax is a library.
I did some homework in OCaml and it was only twenty times slower than C (at first).
Nate Foster's bidirectional programming library sees its first release.
Algebraic datatypes, as a library in JavaScript.
Wondering about how leaks from one developer's experience might play out for Flapjax.
I explain Flapjax's core notions with a simple implementation.
A bug with DOM nodes and an idea for structured practice at debugging.
JavaScript is full of surprises.
Trying to understand when JavaScript captures `this`.
Commentary on Hutton and Wright's "What is the meaning of these constant interruptions?" (JFP 2007).
Grappling with functional programming in an imperative, callback-based world.
Flapjax templates anticipate the use of, e.g., curly braces in JSX.
Shriram Krishnamurthi's language and library for functional reactive web programming.
I find elegance in a design paper.
Functional programming, nominal types, and accountability.
An argument about email obfuscation.
I reflect on languages for formal specification.