ezyang’s blog

the arc of software bends towards understanding

November, 2012

Why can’t I just be a little lazy?

You can. Imagine a version of Haskell where every constructor was strict, e.g. every field had a ! prefix. The semantics of this language are well defined; and in fact, the fine folks at CMU have known about this for some time: Up to this point we have frequently encountered arbitrary choices in the dynamics […]

  • November 26, 2012

Functional Encryption

Joe Zimmerman recently shared with me a cool new way of thinking about various encryption schemes called functional encryption. It’s expounded upon in more depth in a very accessible recent paper by Dan Boneh et al.. I’ve reproduced the first paragraph of the abstract below: We initiate the formal study of functional encryption by giving […]

  • November 25, 2012

Extremist Programming

Functions are awesome. What if we made a PL that only had functions? Objects are awesome. What if we made a PL where everything was an object? Lazy evaluation is awesome. What if we made a PL where every data type was lazy? Extremist programming (no relation to extreme programming) is the act of taking […]

  • November 20, 2012

Plan 9 mounts and dependency injection

“Everything is a file.” [1] This was the design philosophy taken to its logical extreme in Plan 9. Any interface you could imagine was represented as a file. Network port, pixel buffers, kernel interfaces—all were unified under a common API: the file operations (open, read, write...) Plan 9 used this to eliminate most of its […]

  • November 8, 2012

hp/D3.js: an interactive heap profile viewer

I'm taking a Data Visualization course this fall, and one of our assignments was to create an interactive visualization. So I thought about the problem for a little bit, and realized, “Hey, wouldn’t it be nice if we had a version of hp2ps that was both interactive and accessible from your browser?” (hp2any fulfills this […]

  • November 2, 2012