mgreenblog

posts by category about this blog
  1. new blog, who dis?
    A new domain name and a new static site. Does independent social media live?
  2. I'm looking for students!
    Recruiting PhD students in 2023.
  3. I explain a very cool programming paradigm, by way of a POPL paper with Harvard colleagues.
  4. What's hard about grad school?
    Advice on how to succeed as a nascent academic.
  5. Program synthesis is a hot topic. But when is it worth the effort?
  6. I explain our (award-winning!) PLDI 2022 paper. Also, we meet a very good dog.
  7. Summarizing performance numbers
    An exercise in honest reporting of some very nice results.
  8. I did a twoopsla.
  9. I'm looking for PhD students!
    Recruiting PhD students, in 2021.
  10. Heaven, Hell, or Hoboken!
    I moved to Stevens.
  11. Pomona College is hiring!
    My former employer continues to hire---and continues to be a great place to work.
  12. I wrote some software to help you work with formats like JSON and YAML in the shell.
  13. A proposal (never realized) for popular presentations of PL ideas.
  14. POPL Cocktail Hour
    I hosted a virtual cocktail hour at POPL 2021. Deep COVID was a strange time.
  15. Cast notation: a case study
    Follow-up discussion from a post on the SIGPLAN plan about notation.
  16. Racist Bullshit in Mathematics
    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.
  17. Modeling languages faithfully means thinking about more than core calculi.
  18. Formulog: ML + Datalog + SMT
    I explain how our OOPSLA 2020 paper can help you prototype static analyses.
  19. The Big Brzozowski
    How big do the derivatives of regular expressions get? (Spoiler: big.)
  20. Playing around with Brzozowski derivatives of regular expressions.
  21. Flapjax on PL Perspectives
    Our work is featured on the SIGPLAN blog.
  22. smoosh v0.1
    A reference semantics for the POSIX shell.
  23. OBT on hiatus
    The track is well beaten, so we'll take a break.
  24. A position paper, in SNAPL 2019.
  25. Someone implemented my POPL 2015/TFP 2016 work.
  26. What if what's weird about the shell is what makes it an effective tool?
  27. Reflecting on my work at Pomona College.
  28. A talk on how to protect your digital self.
  29. PHPEnkoder 1.14
    Features.
  30. Disjointness of subset types
    When should a runtime-checked refinement type system reject a program?
  31. Outdated instructions; I have had issues with OCaml and FFIs for nearly a decade.
  32. A refinement type by any other name
    A history of the term 'refinement type', with thorough discussion.
  33. Twitter bots and OAuth
    Outdated advice about setting up a bot on Twitter.
  34. PHPEnkoder 1.13
    Bugfixes.
  35. Cultural criticism and 'tech'
    Highlighting "Model, View, Culture"'s work.
  36. PLVNET
    I have two papers in a workshop on PL techniques applied to networking.
  37. My first sole-author paper, presented in Mumbai.
  38. Runtime checking---of types or more complex properties---can only be understood by breaking things down to the fundamental checks being done.
  39. A tool for planning the order of discussion at PC meetings to minimize comings-and-goings due to conflicts.
  40. My first sole-author submission.
  41. An ICFP 2014 submission, with Princeton colleagues.
  42. PL meets networking meets the very stench of Hades.
  43. An inane bugfix.
  44. PHPEnkoder 1.12: unicode support!
    Features.
  45. Bug in "Polymorphic Contracts"
    A show-stopping bug in my ESOP 2011 paper.
  46. PhD thesis: Manifest Contracts
    I am become doctor, lecturer of students.
  47. Axiomatizing manifest contracts
    Formal models of manifest contracts might ask questions about how two refinement types relate. Implementations use theorem provers. How should we understand these checks?
  48. Space-Efficient Manifest Contracts
    The last leg of my thesis: can you enforce contracts without blowing up your stack?
  49. NJPLS Fall 2012
    I presented at a regional workshop.
  50. LLVM 3.1, Haskell 7.4.1, and OS X
    Outdated instructions, useful in their time.
  51. Exceptionally Available Dynamic IFC
    A paper submission (not to be).
  52. QuickRedex
    Run your research in... the Glasgow Haskell Compiler.
  53. @mgrnbrg on twitter
    Songs of innocence.
  54. A cool idea, never brought to fruition: how do you move state between devices?
  55. PHPEnkoder 1.11
    A contributed bugfix.
  56. PHPEnkoder 1.10
    Contributed bugfixes.
  57. PHPEnkoder 1.9
    Bugfixes.
  58. PHPEnkoder 1.8
    Bugfixes.
  59. Lovelace and Babbage vs. The Organist
    A webcomic I enjoyed.
  60. ESOP 2011 Papers
    I did a double.
  61. Polymorphic Contracts
    A submission to ESOP 2011.
  62. The Resurgence of Parallelism
    Functional programming plays in an unlikely role in a CACM article.
  63. PHPEnkoder 1.7
    Features.
  64. Nested functions in GCC
    Exploring a language feature.
  65. Type theory comes of age
    My advisor was featured in a CACM article.
  66. POPL 2010
    I reflect on my first conference as an author.
  67. Contracts Made Manifest: final version
    The POPL 2010 camera ready.
  68. Locally installing LLVM with Ocaml bindings
    Outdated instructions, useful in their time.
  69. PHPEnkoder 1.6
    Bugfixes and features.
  70. Our work finally appears in a conference---OOPSLA 2009.
  71. Contracts Made Manifest
    Our POPL 2010 submission. (Before the days of double blind review!)
  72. Gravatar support
    I improved the old Wordpress website.
  73. PHPEnkoder 1.5
    Bugfixes, features.
  74. PHPEnkoder 1.4
    Bugfixes.
  75. A new venue!
  76. Flapjax TR
    A technical report on Flapjax.
  77. Debounce and other callback combinators
    Flapjax is a library.
  78. PHPEnkoder 1.3
    Bugfixes.
  79. The world's largest Scheme install-base is...
    ...adware.
  80. Practical OCaml
    I did some homework in OCaml and it was only twenty times slower than C (at first).
  81. My software makes the medium time.
  82. Boomerang v0.1 available
    Nate Foster's bidirectional programming library sees its first release.
  83. ADTs in JS1.8
    Algebraic datatypes, as a library in JavaScript.
  84. boolopt update: v1.1
    Bugfixes in old code for simplifying propositional logic formulae.
  85. Solution: "Correspondence, of a sort"
    The solution to my rather difficult crossword.
  86. Puzzle: "Correspondence, of a sort"
    I wrote a crossword that is probably not very fun to do.
  87. Writing in Computer Science
    How does one write well in computer science?
  88. JS2/ES4
    Arguing about the future of JavaScript; Dustin Diaz and Brendan Eich join in to comment.
  89. C# GC Leaks
    Wondering about how leaks from one developer's experience might play out for Flapjax.
  90. Lifting in Flapjax
    I explain Flapjax's core notions with a simple implementation.
  91. The University of Pennsylvania
    I went to grad school in Philadelphia.
  92. The price of `cloneNode`
    It turns out that copying everything is expensive.
  93. Attack of the `cloneNode`s
    Outdated advice on how to manage DOM nodes.
  94. Another nasty bug -- and an idea
    A bug with DOM nodes and an idea for structured practice at debugging.
  95. More on `this`
    JavaScript is full of surprises.
  96. Capture `this`!
    Trying to understand when JavaScript captures `this`.
  97. PHPEnkoder 1.2
    Bugfixes.
  98. XSugar
    Playing around with bidirectional programming.
  99. A New Term
    My last semester of college.
  100. Semantics for Exceptions and Interrupts
    Commentary on Hutton and Wright's "What is the meaning of these constant interruptions?" (JFP 2007).
  101. CLR Hegemony
    Grappling with functional programming in an imperative, callback-based world.
  102. Google E-Mail Masking
    Alternative approaches to email obfuscation.
  103. World-Wide Enkoder Domination
    Other people using client-side email obfuscation.
  104. Flapjax Templates
    Flapjax templates anticipate the use of, e.g., curly braces in JSX.
  105. Flapjax
    Shriram Krishnamurthi's language and library for functional reactive web programming.
  106. Multi-return Function Call
    I find elegance in a design paper.
  107. FP: Fairy-tale Programming?
    Functional programming, nominal types, and accountability.
  108. boolopt
    Code for minimizing propositional logic formulae.
  109. JavaScript "Protection"
    An argument about email obfuscation.
  110. The Joy of Specs
    I reflect on languages for formal specification.
  111. PHPEnkoder 1.1
    Features and bugfixes.
  112. Program synthesis talk
    I reflect on a rather poor in-class presentation.
  113. Weaselhat?
    first post