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.