Hi there 👋. You're probably interested in my open source work, so here is a quick summary. I've also added a bit of work history.
📫 Please open a GitHub issue if you want to discuss something related to an open source project of mine.
Otherwise you can reach me at [email protected].
Last Update: 2022-09-19
- traceutils: Code for decoding and encoding runtime/trace files as well as useful functionality implemented on top.
- fgtrace: An experimental profiler/tracer that is capturing wallclock timelines for each goroutine. It's very similar to the Chrome profiler.
- cl: Quickly clone git repositories into a nested folders like GOPATH.
- pprofutils: Swiss army knife for pprof files. Implemented as a command line utility as well as free web service.
- gostackparse: A library that can parse Go stack traces at 300 MiB/s.
- sprof: A Go profiler based on static analysis. Note the release date.
- dd-trace-go/profiler: Working on this as part of my job for Datadog right now.
- go-profiler-notes: In-depth research and writing on the various Go profilers.
- sqlbench: A Go tool that measures and compares the execution time of one or more PostgreSQL queries
- fgprof: Experimental wall-clock profiler for Go.
- httpsnoop: Properly wraps the
http.ResponseWriter
interface in Go for monitoring. - go-xxd: High performance Go implementation of the xxd utility. I got nerd sniped into this.
- godrone: Firmware for the Parrot AR Drone 2.0 written in Go, i.e. an experiment to physically visualize a garbage collector 😉
- tcpkeepalive: Exposes TCP keepalive knobs & dials. There are probably better alternatives now.
- flame-explain: An online PostgreSQL EXPLAIN visualizer written in React/TypeScript. I was very excited about this and scheduled to speak about it at various conferences. Then this pandemic thing happened and I burned out on the project : (.
- state-machines: A blog post showing how to implement state machines in PostgreSQL using user-defined aggregate functions.
Contributed 100+ patches to the core involving promises, exception handling, fs, module system, UTF-8 (including a patch for v8). Mea culpa for process.on("uncaughtException") 🙈.
Additionally I wrote a lot of NPM modules, most notably:
- mysql: Pure JS implementation of the binary MySQL protocol.
- formidable: A multipart/form-data parser that's pretty fast.
- node-ar-drone: Implementation of the networking protocols used by the Parrot AR Drone 2.0. This one got a bit out of control.
- node-style-guide: Not a module, but maybe it helped some people write better modules?
- tus: A protocol for resumable file uploads on the web that I wrote the initial version for. It's seen wide industry adoption since.
Contributed ~150 patches to the core and made some good friends.
Here is a list of recent talks:
- Go Profiling and Observability from Scratch at GopherCon 2021 ・ Dec 8, 2021
- Continuous Go Profiling & Observability at P99 Conf ・ Video ・ Slides ・ Oct 6, 2021
You can find an incomplete list of previous talks on my website.
Going forward I'm actively looking for opportunities to present on Go profiling related topics.
I have an infrequently updated blog where I give questionable advise that ocassionally compromises servers around the world.
My CV is available on request, but I'm not looking for a job right now.
- 2021-Now: Datadog, working on Continious Go Profiling.
- 2014-2020: Apple, working on secret manufacturing stuff using PostgreSQL and Go.
- 2013-2014: Thomson Reuters, contracted to work on Eikon Messanger XMPP server in Go.
- 2009-2013: Transloadit, co-founded the business and wrote lots of Node.js code until it was profitable.
- 2006-2008: Freelancer, working for international clients while finishing high school.