Skip to content
View felixge's full-sized avatar

Organizations

@DataDog @nodecopter @open-telemetry

Block or report felixge

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
felixge/README.md

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

Open Source

Go (2012-now)

  • 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.

PostgreSQL (2017-2020)

  • 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.

Node.js (mostly 2009-2011)

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?

Misc

  • tus: A protocol for resumable file uploads on the web that I wrote the initial version for. It's seen wide industry adoption since.

CakePHP (2007-2009)

Contributed ~150 patches to the core and made some good friends.

Public Speaking

Here is a list of recent talks:

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.

Blogging

I have an infrequently updated blog where I give questionable advise that ocassionally compromises servers around the world.

Work

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.

Pinned Loading

  1. fgprof fgprof Public

    🚀 fgprof is a sampling Go profiler that allows you to analyze On-CPU as well as Off-CPU (e.g. I/O) time together.

    Go 2.9k 99

  2. mysqljs/mysql mysqljs/mysql Public

    A pure node.js JavaScript Client implementing the MySQL protocol.

    JavaScript 18.3k 2.5k

  3. node-style-guide node-style-guide Public

    A guide for styling your node.js / JavaScript code. Fork & adjust to your taste.

    JavaScript 5k 915

  4. node-formidable/formidable node-formidable/formidable Public

    The most used, flexible, fast and streaming parser for multipart form data. Supports uploading to serverless environments, AWS S3, Azure, GCP or the filesystem. Used in production.

    JavaScript 7.1k 682

  5. node-ar-drone node-ar-drone Public

    A node.js client for controlling Parrot AR Drone 2.0 quad-copters.

    JavaScript 1.8k 428

  6. DataDog/go-profiler-notes DataDog/go-profiler-notes Public

    felixge's notes on the various go profiling methods that are available.

    Jupyter Notebook 3.6k 208