Creator of IntelliJ Elixir; Lumen/FireFly and LiveViewNative Core Team alum

Private information
Erlang LiveView OTP Phoenix PostgreSQL

I created the IntelliJ Elixir plugin in 2014 when Elixir was pre-1.0. Along the way I I’ve found bugs in the native Elixir implementation of the lexer and parser. To improve the experience for developers that didn’t install the source for the standard library I figured out how to read the . beam compiled format for the VM and decompile function signatures. I invented a text representation for the byte code found in the Code chunk of the file to show the BEAM ASM, which allowed me and any other developer if a change they were making to their Elixir source code had a material impact on the generated code after all compiler passes. I also added a decompiler that took this same BEAM ASM and reversed it further to actual Elixir code. I got the Doc chunk out of the file to show does for compiled code without source. I allowed breakpoints to be put in htmleex templates used by Phoenix web framework by reverse engineering the destination module and name for the template corresponding functions.

I wrote the runtime, built-in function (BIFs), tests, and WASM demonstration apps for Lumen/Firefly, which was an R&D project to have an ahead of time compiler for Elixir and Erlang whose executables would use embeddable runtime, so that Elixir could have single binary executables like Go, Rust, and C. It would also allow us to get Elixir in the browser with Rust’s WASM support. I joined the WebAssembly Working Group (WG) and participated in discussions to get better debugging, threading, and stack switching support and extensions into the standard so that we could have the BEAMs process model supportable directly in the browser instead of having to bundle it in each WASM file.

For LiveViewNative, I wrote phoenix-channels-client, an async Rust library that is callable over FFI by LiveViewNative client languages like Kotlin and Swift. It is a complete port of phoenix.js in idiomatic Rust using futures instead of callbacks.

Over the course of my career I’ve written TI-Basic, C, HTML, JavaScript, CSS, PHP, Scheme (a Lisp), Mathematica, Python, Java, Pyrex, M4, m68k ASM, Perl, Ruby, Elixir, Kotlin, and TypeScript. I’ve also followed the development of and can read Go (where I also understand how the garbage collection and go routine switching works), C#, Scala, Haskell, and F#. I’ve read a lot about F# because some features of Elixir like it’s pipe operator, ‘b, coming from F#. Over the course of my carry I’ve been the one called in to do something weird in language not many people at the companies know.

Actively looking

Maple Grove, Minnesota, United States

06:28 AM

Prefer remote

Interested in offers

Full time


Interested in roles


Principal / Staff