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.
- CoreAudio (HAL) driver to present a rack of Bruel&Kjaer LAN-XI devices as a multi-channel sound card on Mac OSX.
I then added recording and streaming capabilities to the driver, a System Preferences pane for configuration, and a test application.
- LabView interface for the Agilent 82357B USB/GPIB Interface High-Speed USB 2.0.
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.
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++.
CouchDB optimization on the Mac for CouchOne.
- Core Erlang enhancements.
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.
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.
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!