I'm a Principal Software Engineer on the Bedrock team at ServiceNow, where we work on ServiceNow's JavaScript runtime and implementation. It's low-level, deeply technical work that sits at the intersection of language design, runtime performance, and the constraints of a large production platform.
Previously, I've worked on implementing Oauth2 and SAML authorization protocols and API Gateways at Concur (acquired by SAP) and MoEngage.
Even earlier, I've worked on building workflow engines, macro systems and schedulers at Calm.io (acquired by Nutanix).
I write about tech and other things here.
I contribute to the Rhino project which is a JavaScript runtime written on the JVM.
Previously, I've also made minor contributions to the swc project, which is a transpiler written in Rust to transpile JavaScript to legacy versions.
SIMPLE: A simple programming language (a bare-bones subset of JavaScript) that I use for experimenting with language implementations. Has two implementations currently:
CLUMSY: A statically-typed variant of Lisp (with a terrible name..) focusing on bare-metal compilation. Has a compiler with a custom code-generator for armv8/macos and x86_64/linux. Compiles to the following targets:
Signer: An NGINX module to sign and verify JSON web tokens.
Retrogames: Clones of classic games we've spent years playing as children. Mostly as an excuse to learn programming languages
SCAM: A lisp interpreter written in Clojure quite similar to how SICP implements it and also the base for the AST-walking interpreter for simple. I implemented it for a talk I gave about it.
SCRATCH: Implementations of a few useful algorithms and data structures and throw-away code.