Tenerife Skunkworks

Trading and technology

Who Am I?


I’m a full-stack iOS developer. I develop backends in Erlang and Go. I also write Mac device drivers and firmware for various microcontrollers.

I wrote OpenPoker, a scalable Erlang poker server, and sold it to Electronic Arts for use in EA World Series of Poker (WSOP).

I thrive on solving difficult problems.

Feel free to browse my open source code, email me or see my LinkedIn profile and recommendations.

Biggest achievements

  • CoreAudio (HAL) driver to present a rack of Bruel&Kjaer LAN-XI devices as a multi-channel sound card on Mac OSX.

I used C++11, Boost and cpp-netlib initially, then switched to plain Objective-C since it was easier to debug and did not affect performance.

I then added recording and streaming capabilities to the driver, a System Preferences pane for configuration, and a test application.

I reverse-engineered a major chunk of LabView for Mac OSX using the IDA Pro disassembler, wrote a Mac USB device driver and the NI VISA Passport interface to sit on top of it.

I then spent close to a month on the iPhone production line in Shenzhen to troubleshoot various issues.

I started writing it back in 2004 and improved it over the years. I sold it to Electronic Arts (EA) to power EA World Series of Poker (WSOP). I then contracted for EA for several months to integrate and extend OpenPoker, as well as teach Erlang to the team.

Other projects

I designed and implemented most of it over the course of 9 months. I actually prefer using Go to Erlang these days for most server applications.

  • Lots of Erlang enhancements for the Issuu backend over the years.

  • OCaml implementation of the Issuu ad network.

  • Work on speeding up Firefox startup on the Mac for Mozilla.

I wrote plenty of DTrace scripts over the course of my contract to identify bottlenecks and implement performance enhancements. It appears that C++ static initialization significantly affects startup performance!

  • First Mac device driver for iTwin.

Mac kernel drivers are written in a subset of C++.

  • iOS app and push notification work for Voalte and Issuu.

  • CouchDB optimization on the Mac for CouchOne.

Implemented a NIF backend for writing and tested performance using DTrace.

I ported the High-performance Erlang Compiler (HiPE) to the Mac.

I also extended the Erlang built-in database (Mnesia) to allow arbitrary storage strategies.

  • Live-blogging server in Erlang.

I designed and implemented a high-performance scalable broadcast server in Erlang. I then scaled the server to hundreds of thousands of users on Amazon EC2 while keeping latency to a bare minimum.

  • Compiler from a SQL-like language to Erlang.

I wrote the compiler in OCaml to generate Erlang code that targets my DynamoDB wrapper.

The benefit is automatically enforcing referential integrity, documenting the database schema and eliminating tons of boilerplate.

  • Runtime Erlang code generation to speed up rule matching.

  • Port of a commercial Forth from Linux to Mac OSX.

  • Mac USB driver for a 24-core Forth CPU on a thumb stick by now defunct Intellasys.


Go(lang), device drivers, Mac OSX kernel, USB, C++, OCaml, Lisp, Erlang, Forth, CoreAudio, IOKit, Mac OSX driver development, Core Audio.

Worth mentioning

  • I’m good with disassembling &reverse-engineering, particularly with the IDA Pro debugger.

  • I have a closet full of microcontrollers, e.g. STM32, TI MSP430, PIC, dsPIC and Arduino, as well as the Altera Cyclone III FPGA devkit and a Xilinx Spartan board.

  • I own a logic analyzer, USB hardware bus analyzer, JTAG widgets, the Agilent U3606A digital source/multimeter combo and a hot air rework station.

  • I know Forth (ported SwiftForth to Mac OSX) and can use it in anger!