Beta Reduction (Part 1)

:: lambda, calculus, beta, reduction, semantics, by Milo Davis

The λ-calculus is often introduced by showing how to build a real programming language from it’s simple syntactic forms. In this series of post, I attempt to introduce it as a tool for modeling semantics. So if you’re opening Barendregt for the first time, trying to understand a lecture from a programming languages or functional programming class, or just starting to become involved in PL research, I hope this post will help you understand evaluation by substitution (β-reduction).

History of Actors

:: history, by Tony Garnock-Jones

Christos Dimoulas is currently teaching a “History of Programming Languages” class at Harvard. The class is, as Christos writes, “definitely not about this”; instead, each meeting is a deep examination of a single, mature research topic, in terms of three to five key papers from the literature.

On Monday, I presented “the History of Actors” for the class. I’ve made the written-out talk notes and an annotated bibliography available here.

Emacs daemon for fast editor startup

:: System Administration, Emacs, by Gabriel Scherer

In the early days of the famous Emacs/Vim debates, Emacs was often ridiculed for its bulkiness (Eight Megabytes-of-RAM And Constantly Swapping, etc.). The computational power of our computer has grown much faster than Emacs’ bloat: it takes exactly one second to load on my machine. However, our workflows have also changed, and my workflow implies frequently starting new text editors — on each git commit for example, or when I use a Firefox extension to edit a textarea content in a proper editor.

In this blog post, I describe how to use emacsclient to reuse an existing Emacs process when creating a new editor window, which reduces editor startup times from 1s to 0.150s on my machine.

Tutorial: Racket FFI, part 3

:: Racket, FFI, tutorial, by Asumu Takikawa

This is part 3 of my tutorial for using the Racket FFI. You can find part 1 here and part 2 here.

In this post, we will experiment with some low-level operations with pointers, union types, and custom C types. The main takeaway will be the custom C types, which let you define abstractions that hide the details of the C representation when manipulating data in Racket.

Tutorial: Racket FFI, Part 2

:: Racket, FFI, tutorial, by Asumu Takikawa

This is part 2 of my tutorial on using the Racket FFI. If you haven’t read part 1 yet, you can find it here. Update: part 3 is also now available here.

Part 2 will continue with more Cairo examples. In this installment, I plan to go over some more advanced FFI hacking such as handling computed argument values, custom return arguments, and using C structs.