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 [1], email me or see my LinkedIn profile and recommendations [66].
[1] http://github.com/wagerlabs [55] mailto:[email protected] [66] http://linkedin.com/in/joelreymont
- CoreAudio (HAL) driver to present a rack of Bruel&Kjaer LAN-XI [2] devices as a multi-channel sound card on Mac OSX.
I used C++11, Boost [3] and cpp-netlib [4] 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.
[2] http://www.bksv.com/products/frontends/lanxi [3] http://www.boost.org/ [4] http://cpp-netlib.org/
- LabView interface for the Agilent 82357B USB/GPIB Interface High-Speed USB 2.0 [5].
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 [6] 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.
[5] http://www.home.agilent.com/en/pd-851808-pn-82357B/usb-gpib-interface-high-speed-usb-20?&cc=ES&lc=eng [6] http://www.ni.com/visa/
- OpenPoker, a scalable and fault-tolerant poker server [7] written in Erlang [8].
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) [9]. I then contracted for EA for several months to integrate and extend OpenPoker, as well as teach Erlang to the team.
[7] http://pylab.blogspot.com.es/2007/03/openpoker-how-it-works.html [8] http://www.erlang.org [9] http://www.ea.com/world-series-of-poker-ios
- Scalable Go(lang) [10] XMPP messaging server, part of Thomson Reuters Eikon [11].
I designed and implemented most of it over the course of 9 months. I actually prefer using Go [10] to Erlang these days for most server applications.
[10] http://www.golang.org [11] https://thomsonreuterseikon.com/
- Lots of Erlang enhancements for the Issuu [12] backend over the years.
[12] http://issuu.com/
- OCaml [13] implementation of the Issuu ad network.
[13] http://ocaml.org/
- Work on speeding up Firefox startup on the Mac for Mozilla.
I wrote plenty of DTrace [14] scripts over the course of my contract to identify bottlenecks and implement performance enhancements. It appears that C++ static initialization significantly affects startup performance!
[14] http://en.wikipedia.org/wiki/DTrace
- First Mac device driver for iTwin [15].
Mac kernel drivers are written in a subset of C++.
[15] http://www.itwin.com
- iOS app and push notification work for Voalte [16] and Issuu.
- CouchDB [17] optimization on the Mac for CouchOne.
Implemented a NIF [18] backend for writing and tested performance using DTrace.
[17] http://couchdb.apache.org/ [18] http://www.erlang.org/doc/tutorial/nif.html
- 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.
I wrote the compiler in OCaml to generate Erlang code [19] that targets my DynamoDB wrapper for Erlang [20].
The benefit is automatically enforcing referential integrity, documenting the database schema and eliminating tons of boilerplate.
[19] https://github.com/wagerlabs/mix [20] https://github.com/wagerlabs/ddb
-
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!