On the Technical
Compilers, Emacs, and Higher-Order Languages
“There are two ways to write error-free programs; only the third one works.”
Presently, I enjoy programming in Scheme/Racket and Higher-Order Languages, working on Compilers, and hacking in Emacs. All three of these I picked up while at Northeastern.
While at West Point, I conducted research on (among other things) High Performance Computing (HPC)/parallel processing in C/CUDA, working on Edge Computers, and hacking in Neovim. While I still love all three, I found my interests evolve while at in grad school. Northeastern’s Khoury College well known for its Programming Language Research Group, and specifically Racket a general-purpose, multi-paradigm programming language. It is a descendant of Scheme. I like to say that I was “stockholm-syndromed” into liking Racket because I originally hated it, but came to love it as I was required to use it in my graduate Programming Languages and Functional Compilers Courses. Emacs has a rich ecosystem for Lisp programming langugaes, so I decided to make the switch from Neovim. I might switch back in the future, but for now I’m enjoying Emacs.
In parallel to this, I developed an interest in Compilers. On a whim, I decided to take Dr. Olin Shivers’ Introduction to Compilers Course, where we worked out of the Tiger Compiler Book by Andrew Appel. I found the topic of Compilers to be simulatneously incredibly difficult and incredibly rewarding. So much so that I enrolled in Olin’s graduate level Compilers Course - Compiling Functional Languages. While I am by no means an expert in Compilers I love working with them.
I was fortunate enough to find a project that combines my interests of HPC/parallel processing and compilers. I’m working with Olin’s team on REMORA, a higher-order rank-polymorphic array-processing programming language. The repo can be found here.