Hi!
I'm a software developer with about fifteen years of experience designing and building software systems.
Currently, I'm working on implementing JavaScript on the JVM at ServiceNow.
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).
This page is mostly about my projects.
Writings:
I occasionally write something here.
- My motorcycle trip to Ladakh.
Open Source:
I contribute to the Rhino project which is a JavaScript runtime written on the JVM.
Projects:
Nadaswara: A simple app to help practise singing Swaras of Ragas in Carnatic music. Allows you to define the base sa note so you can follow along with exercises at your own pitch. Available on the iOS app store.
SIMPLE: A simple programming language (a bare-bones subset of JavaScript) that I use for experimenting with language implementations. Has two implementations currently:
- AST-walking interpreter in Java
- Bytecode compiler for Java (WIP)
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:
- arm64 assembly on macos
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
- Arkanoid: OutBreak (in C++)
- Tetris (in Rust)
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.