Gordon Woodhull
Resume    [DOC]   [PDF]

91R Meserole St. Brooklyn NY 11206
(718) 288-7258


I am an intense worker and a quick learner who works well both independently and in teams. I seek a position in New York City where I can learn ever more about software production.


Languages: C/C++ (Boost, metaprogramming, STL), JavaScript, R, Perl, SQL, C#, XML schemas, HTML, SML, Fortran, Lisp, etc.

Tools: Boost, STL, gcc, Microsoft Visual C++, Perforce, Subversion, ClearCase, Windows Installer, bjam, make, yacc, awk, Emacs.

Operating Systems: Unix, Windows, OS X.

Network: TCP/IP sockets, SOAP, XML-RPC, etc.


Contact me for references.

AT&T Research, Information Visualization group. Consultant, 2/13 – 12/14. Senior Inventive Scientist, 1/15 – present. Lead developer on RCloud, a collaborative visualization analysis platform in JavaScript and R, which allows data scientists to share their results along with the underlying methodology. Designed and implemented a notebook-based integrated development environment with automatic source control via GitHub. Created rcloud.dcplot, a package for linking and brushing charts in R. Engineered an RCloud-Shiny (RStudio) bridge.

BoostPro Computing. Consultant, 9/11 – 12/12. Crafted proprietary extensions to the open source Clang C++ compiler supporting alternate object orientation models and high performance computing.

Morgan Stanley, Counterparty Risk group. Senior Developer, 9/08 – 3/11. . Design and maintenance of multithreaded, multiprocess, and distributed market simulation and pricing software systems in C++ and Perl on Unix. Responsibilities included CDO/CMBS tranche-based stresses; evaluation and proof-of-concept of zNet parallelization framework; remoting/distribution of portfolio pricing application in SOAP, CORBA, and proprietary frameworks; adaptation of ASPEED PVM parallelization controller from batch to service-oriented; and interviewing candidates on C++.

Bloomberg LP, Trading Systems group. Senior Developer, 4/07 – 5/08. Lead Developer for the Ticketing API, which wraps millions of lines (and two decades) of legacy Fortran and C code in a clean, safe C++ interface. My responsibilities included designing new interfaces and connecting them to old code, reworking existing code to handle pervasive features such as a new naming system for financial securities, and advising colleagues about good C++ design.

dynagraph.org. 12/05 – 3/07. Developer and maintainer of the Dynagraph dynamic graph visualization library. I created, maintained, and distributed this open-source software, which is implemented in platform-neutral C++. Development involved design / discussion / implementation of new features, refactoring, maintenance and release of multiple simultaneous versions, and supporting developers. My primary client was the Dynasty research team (http://dyna.org/Dynasty) at Johns Hopkins University, who built a browser for huge, changing graphs (networks) that uses Dynagraph for drawing.

Primedia Software-on-Demand. New York City. Consultant, 3/04 – 11/05. Developed the EduCast Client, a native Win32 application deployed to school computers which managed running software through integration with the Softricity SoftGrid Client. Also wrote processor for files downloaded by Fazzt satellite software; a C++ ACE module to forward requests to the .NET world using COM; and a complex installer using NSIS, InstallAnywhere.NET, and then WiX (with MSI extensions for Task Scheduling).

AT&T Labs Research. Information Visualization Group. Consultant, 9/97 – 8/03. Developed graph drawing algorithms and applications in Windows and Java. Created a templated C++ graph data structure, a client-server architecture for graph drawing engines and clients, and C++, COM, and text-based APIs. Dissatisfied with MFC's OLE support, built a replacement Windows application framework, Montage. Prototyped a browser for exploring huge graphs.

Department of Computer Science. Berkeley, CA. Undergraduate researcher, 9/96 – 8/97. Developed an application of the Berkeley Analysis Engine (BANE) to analyze and interactively display the data flow of Java programs. Written in SML, C++, and Emacs Lisp.

Berkeley Systems. Berkeley, CA. 8/93 – 1/95. Tracked down bugs in After Dark screen savers and the Expresso PIM. Maintained the C and assembly code of After Dark for DOS and added internationalization and network features. Joined a spin-off project and developed early software to "skin" Windows.


New York University. M.S., Computer Science, 2012. Michael Waller Master's Fellow. GPA: 3.781

University of California at Berkeley. B.A., Computer Science (Honors) and Comparative Literature, 1997. Award for Excellence in Undergraduate Research. GPA: 3.8 in CS, 3.6 overall.

Amherst Regional High School. Amherst, Massachusetts, 1992.


dc.js. Maintainer. Library for dimensional charting, charts that brush and filter each other, built on Crossfilter and d3.js.

dc.graph.js. Author. Library for network visualization linked with built cola.js and d3.js, Crossfilter and dc.js.

MPL.Graph. Proposed Boost library for graph metaprogramming, currently housed in the Meta State Machine (MSM) library for release 1.46. http://metagraph.info/mpl-graph

Dynasty. Large graph browser which uses Dynagraph for layout. By Jason Eisner and the Dyna team; I contributed ideas and bug fixes. http://dyna.org/Dynasty

Dynagraph. Cross-platform library that draws graphs – networks, flowcharts, and similar diagrams – that change over time. Licensed under the Common Public License. I created the core libraries, porting C layout libraries by Stephen North, Emden Gansner, and others to C++. http://dynagraph.org

Dynagraph for Windows. Full-featured and integrated Windows graph editor. http://dynagraph.org/dgwin

Betel. A graphics engine for paper cut-out style animation. http://gordon.woodhull.com/betel

Bipolar House. A satirical simulation of housemate behavior. http://gordon.woodhull.com/bipolarhouse


North, Stephen, Carlos Scheidegger, Simon Urbanek, and Gordon Woodhull (2015). Collaborative Visual Analysis with RCloud. Conditionally accepted, IEEE Visual Analytics Science and Technology, Chicago, October.

Woodhull, Gordon (2012). Compile-time ‘reparsing’. (slides) (video) C++Now, Aspen, May.

Woodhull, Gordon (2011). A Library for Graph Metaprogramming. (slides) (video) BoostCon, Aspen, May.

Eisner, Jason, Michael Kornbluh, Gordon Woodhull, Raymond Buse, Samuel Huang, Constantinos Michael, and George Shafer (2006). Visual navigation through large directed graphs and hypergraphs. Proceedings of the IEEE Symposium on Information Visualization (InfoVis'06), Poster/Demo Session, pp. 116-117, Baltimore, October.

Ellson, John, Emden Gansner, Eleftherios Koutsofios, Stephen North, and Gordon Woodhull (2003) Graphviz and Dynagraph – Static and Dynamic Graph Drawing Tools. Graph Drawing Software (Michael Junger and Petra Mutzel, eds.), pp. 127-148, Springer-Verlag.

North, Stephen, and Gordon Woodhull (2001) On-line Hierarchical Graph Drawing. Proceedings of the 9th International Symposium on Graph Drawing, pp. 232-246, Vienna, September.

North, Stephen, and Gordon Woodhull (1999) Method and system for creating dynamic interfaces using a general control container. U.S. Patent #6,654,947 issued 2003.

Woodhull, Gordon and Stephen North (1998) Montage – an ActiveX Container for Dynamic Interfaces. Proceedings of the 2nd USENIX Windows NT Symposium, pp. 109-116, Seattle, August.