A new domain name and a new static site. Does independent social media live?
Recruiting PhD students in 2023.
I explain a very cool programming paradigm, by way of a POPL paper with Harvard colleagues.
Advice on how to succeed as a nascent academic.
Program synthesis is a hot topic. But when is it worth the effort?
I explain our (award-winning!) PLDI 2022 paper. Also, we meet a very good dog.
An exercise in honest reporting of some very nice results.
I did a twoopsla.
Recruiting PhD students, in 2021.
I moved to Stevens.
My former employer continues to hire---and continues to be a great place to work.
I wrote some software to help you work with formats like JSON and YAML in the shell.
A proposal (never realized) for popular presentations of PL ideas.
I hosted a virtual cocktail hour at POPL 2021. Deep COVID was a strange time.
Follow-up discussion from a post on the SIGPLAN plan about notation.
A reviewer told me to cite a paper by Gandy---and it included a surprisingly racist quote from Alan Turing. Bertrand Russell acquits himself rather poorly.
Modeling languages faithfully means thinking about more than core calculi.
I explain how our OOPSLA 2020 paper can help you prototype static analyses.
How big do the derivatives of regular expressions get? (Spoiler: big.)
Playing around with Brzozowski derivatives of regular expressions.
Our work is featured on the SIGPLAN blog.
A reference semantics for the POSIX shell.
The track is well beaten, so we'll take a break.
A position paper, in SNAPL 2019.
Someone implemented my POPL 2015/TFP 2016 work.
What if what's weird about the shell is what makes it an effective tool?
Reflecting on my work at Pomona College.
A talk on how to protect your digital self.
Features.
When should a runtime-checked refinement type system reject a program?
Outdated instructions; I have had issues with OCaml and FFIs for nearly a decade.
A history of the term 'refinement type', with thorough discussion.
Outdated advice about setting up a bot on Twitter.
Bugfixes.
Highlighting "Model, View, Culture"'s work.
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.
A tool for planning the order of discussion at PC meetings to minimize comings-and-goings due to conflicts.
My first sole-author submission.
An ICFP 2014 submission, with Princeton colleagues.
PL meets networking meets the very stench of Hades.
An inane bugfix.
Features.
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.
Outdated instructions, useful in their time.
A paper submission (not to be).
Run your research in... the Glasgow Haskell Compiler.
Songs of innocence.
A cool idea, never brought to fruition: how do you move state between devices?
A contributed bugfix.
Contributed bugfixes.
Bugfixes.
Bugfixes.
A webcomic I enjoyed.
I did a double.
A submission to ESOP 2011.
Functional programming plays in an unlikely role in a CACM article.
Features.
Exploring a language feature.
My advisor was featured in a CACM article.
I reflect on my first conference as an author.
The POPL 2010 camera ready.
Outdated instructions, useful in their time.
Bugfixes and features.
Our work finally appears in a conference---OOPSLA 2009.
Our POPL 2010 submission. (Before the days of double blind review!)
I improved the old Wordpress website.
Bugfixes, features.
Bugfixes.
A new venue!
A technical report on Flapjax.
Flapjax is a library.
Bugfixes.
...adware.
I did some homework in OCaml and it was only twenty times slower than C (at first).
My software makes the medium time.
Nate Foster's bidirectional programming library sees its first release.
Algebraic datatypes, as a library in JavaScript.
Bugfixes in old code for simplifying propositional logic formulae.
The solution to my rather difficult crossword.
I wrote a crossword that is probably not very fun to do.
How does one write well in computer science?
Arguing about the future of JavaScript; Dustin Diaz and Brendan Eich join in to comment.
Wondering about how leaks from one developer's experience might play out for Flapjax.
I explain Flapjax's core notions with a simple implementation.
I went to grad school in Philadelphia.
It turns out that copying everything is expensive.
Outdated advice on how to manage DOM nodes.
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`.
Bugfixes.
XSugar
Wednesday, February 7, 2007
Playing around with bidirectional programming.
My last semester of college.
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.
Alternative approaches to email obfuscation.
Other people using client-side email obfuscation.
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.
Code for minimizing propositional logic formulae.
An argument about email obfuscation.
I reflect on languages for formal specification.
Features and bugfixes.
I reflect on a rather poor in-class presentation.
first post