Personal Statement
Work Experience
Search Engineering Manager
GitHub - New York City, NY / Remote (11/2018 - 07/2020)
Directly manage a team of 6 senior engineers building the platform for code search. Indirectly manage a team of 2 engineers working on the experience of code search.
- Responsible for all aspects of people management for the ICs on my team - on-boarding, hiring, separating, performance review, and individual goal setting.
- Grew the team from 2 engineers to 8 - allocating hiring among JS, Rails, distributed systems, and search relevance engineering roles.
- Focused a previously understaffed team's responsibility from "all of search at GitHub" to the historically under-served feature of code search specifically.
- Efficiently handed off search of other content types to those content type's feature teams.
- Delivered a plan to migrate all content types to the latest version of Elasticsearch.
- Collaborated with Senior ICs on my team to design an Elasticsearch backed architecture for code search to avoid eventual collapse of legacy system.
- Worked with product management to refine code search features and incorporate trade-offs that allowed the system to scale, and also allow experimentation at scale.
- Modeled costs for multi-million dollar infrastructure spend on a variety of architectures to converge with product and executives on the feature set we'd deliver.
- Co-lead and organized the effort to form GitHub's first recognized LGBTQ+ employee resource group.
Engineering Manager II
Uber - New York City, NY (01/2017 - 11/2018)
I manage a team of between 7-11 engineers building full stack applications for Observability at Uber. This includes monitoring, alerting, dashboarding, and metric querying applications used by all engineers at Uber.
- Responsible for all aspects of people management for the ICs on my team - on-boarding, hiring, separating, performance review, and individual goal setting.
- Own the planning lifecycle for my team's work. I work with the senior technical ICs on my team and stakeholders outside of the team to determine the deliverables for each half.
- Own my team's delivery of committed projects, and prioritizing, or de-prioritizing, work as business needs change unexpectedly, or the capacity of my team changes through hiring or attrition.
- Coordinate work with the other teams in Observability where our work and their's will be complementary.
- Participate in technical review of system design or documents which the members of my team produce.
- Participate in design review of products / features proposed by members of my team.
- Mentoring, growing and developing the people on my team through 1:1s, project assignments, goal setting and rotations.
- Mentor junior managers in monthly round-table sessions.
- Participate in the LGBT ERG as a panel speaker and organizer of Uber's NYC Pride March contingent.
CTO / VP Engineering
Scale Model (a Betaworks company) - New York City, NY (04/2014 - 12/2016)
Lead software engineering for Scale Model
- Built first prototype of front and back end for real time data dashboard to display aggregate tweet data
- Lead and mentored a team of 2-4 engineers, also working as an individual contributor
- Built production system for massively parallel calls to third-party API, while respecting rate-limits using python and AWS lambda
- Built first prototype of front and back end for customers to perform their own network analyses
- Built production system for performing analysis and community detection on network graphs using python and igraph
- Built production system for near real time aggregation of tweet data for thousands of lists of of tens of thousands of users, with no limit on retention of data using AWS Lambda, S3, and Kinesis Firehose
- Maintained Elasticsearch cluster for experimental feature development
- Implemented a prototype twitter decahose ingest infrastructure in Java using Apache Storm
- Implemented a production twitter decahose ingest infrastructure using AWS Kinesis Streams, Kinsis Firehose, SNS, Lambda and S3
- Conceived and implemented a new form of clustered network graph visualization in D3
- Worked with the data team implement features into production system
President Emeritus, Founding Member
Out in Tech - New York, NY (01/2013 – 08/2015)
Out in Tech is a 501(c)(3) organization dedicated to building a community among LGBT people in the tech industry.
VP Engineering
Tapestry/GifYourselfIn (a Betaworks company) - New York City, NY (01/2013 - 04/2014)
Lead software engineering and write all of the non-app code for readtapestry.com and gifyourself.in.
- Develop and maintain all of the backend code and infrastructure for readtapestry.com. This includes the Python/Django based web application, Redis/Celery task queue, Postgresql DB, and integrations with 3rd party email, messaging, storage services.
- Develop and maintain the API used by the Tapestry iOS and Android engineers. The API provides the JSON interface to all of aspects of the web application for consumption by the devices.
- Develop and maintain all HTML/CSS/Javascript for readtapestry.com. This includes code responsible basic site layout and the far more complex code which comprises the several story editors available to users.
- Develop and maintain all backend code and infrastructure for gifyourself.in. This includes Python/Django, Redis/Celery, Postgresql. The site sustained > 300 concurrent users over the period of ~10 hours after launch without any degradation in performance or outage through effective use of asynchronous task management for long-running gif generation.
- Develop and maintain most front-end code for gifyourself.in. I write the bulk of the site’s functionality which includes (1) tooling for users to put their face over gifs by capturing, cropping and editing input from the user’s webcam and (2) tooling for administrators to define where on each frame in the gif the user’s face should appear. This is accomplished using plain Javascript, JQuery, and the HTML5 Media interface.
- Provide access to statistics data, through a variety of platforms, to our business team for both sites. This includes both web GUIs and access to ETL’d data in a single relational DB via SQL.
- Provide leadership and mentoring to junior and peer staff both within Tapestry and to other Betaworks companies.
Software Engineer
Findings.com (a Betaworks company) - New York City, NY (07/2012 - 01/2013)
One of two software engineers working on the full stack of findings.com, primarily responsible for the product's front-end. Findings is a service which allows people to clip, collect and share text snippets from the web.
- Wrote all of the site's JavaScript using a combination of native JavaScript, jQuery, jQuery UI, and D3. Also wrote a portion of the site's backend, in Python/Django, particularly the endpoints needed for all of the ajax calls on the site.
- Conceived of and implemented "staff mode" for the site. This function allows staff members to toggle their view of the site to either emulate a user's view, user mode, or enter staff mode where all elements on the site have staff controls added for promoting content or acting on spam quickly.
- Wrote and manage releases of the findings Chrome extension - a tool that highlights text on a web page which has been collected to the findings service.
- Wrote the service's bookmarklet in native javascript. The bookmarklet allows people to clip text from a web page, customize it's theme and optionally share it to twitter or facebook.
- Wrote a tool for scraping the Amazon Kindle Highlights page to work around the fact that Amazon does not provide an API for highlights.
- Develped a page for site administrators that shows a breakdown of various statistics related to site activity.
- Wrote the backend for the user activity stream. The previous implementation was restricted to a static list of possible activities. My rewrite made it dynamic allowing for additional types of activity to be added in the future.
Software Engineer; Team Lead
Google - New York City, NY (06/2010 - 07/2012)
Software engineer and team lead for a display ad management software product. Still working past the acquisition as a startup would, so I wear many hats in this role.
- Took over and streamlined the release process for the product. Implemented a release strategy and wrote release code that allowed minor releases to happen without system downtime.
- Wrote a custom task queue management system based on MongoDB for offloading long-running tasks from the web server process.
- Managed the infrastructure for the front and back end of the product, including PostgreSQL, MongoDB, memcached, Nginx, Django/Python/uWSGI and Java/Jetty based application servers.
- Built a system, based on Django/Chronograph, for doing server and system health monitoring and alerting.
- Built a system status console application to display server and system health to augment monitoring and help identify early problems.
- Architected a system for doing real-time and batch alerting for customer concerns about their ad campaigns.
- In the absence of a dedicated UX designer, I step into make decisions-based-on-experience when product teams and engineers reached an impasse on the details of implementing a feature.
- Implemented a variety of code and infrastructure updates to improve application speed and performance.
- In addition to my day-to-day work on the core display ad management product I am also working on a javascript based word cloud generator. A demo cloud and the project source are available.
Software Engineer; Team Lead
Invite Media - New York City, NY (10/2009 - 06/2010)
Software engineer and team lead for a display ad management software product. Invite Media was acquired by Google.
Senior Software Engineer; UI Warlord; Problem Solver
IBM Software Group - Lotus Connections Development - Research Triangle Park, NC (06/2008 - 03/2009)
UI lead for the Lotus Connections development team, serving as the UI development subject matter expert across all eight of the Lotus Connections applications.
- Choreographed the efforts of 13 UI engineers, in 3 countries, working on a family of 8 applications, to insure that the product's design points are consistently applied and implemented.
- Developed, refined and maintained the UI Java / JSP code that is common to all services.
- Regularly harmonized with the user experience and visual design teams to assess which features were possible in the release cycle, and to come up with creative ways to implement their designs.
- Lead the product-wide effort to improve the performance of all of 8 applications.
- Crafted a performance improvement strategy which uses open source and originally developed libraries along with current best practices.
- Delivered an implementation of the strategy which has lead to a nearly four-fold performance increase in the reference application.
Technical Evangelist; Business Partner Liaison; Social Software Consultant
IBM Software Group - Lotus Business Partner Enablement - Research Triangle Park, NC (06/2006 - 06/2008)
Supported the Lotus brand as a technical evangelist, business partner liaison and consultant for the portfolio of collaboration and social software.
- Developed reusable collateral in the form of documentation, articles, interactive learning labs and code samples in support business partner efforts to integrate with Lotus products.
- Delivered over 70 presentations on collaboration and social software technologies to a variety of customer, business partner and internal IBM audiences.
- Lead a series of brainstorming sessions to help business partners discover news ways to integrate with Lotus software.
- Called on as a subject matter expert by several internal groups to consult on plans to implement social technologies inside and outside of the company.
- Supported over 80 business partners in delivering solutions in time for the annual Lotus trade show.
- Represented the business parter enablement department on the Lotus Connections product offering team to insure that the needs of our business partners were addressed in product plans.
Software Engineering Manager
IBM Systems and Technology Group - Research Triangle Park, NC (07/2004 - 06/2006)
Managed a distributed team of UI software engineers located in New York and North Carolina.
- Performed every aspect of personnel management including hiring, separating, developing, promoting, mentoring and coaching, for a department of 18 employees.
- Delivered a balanced budget for employee, contractor and capital expenses in our cost recovery subdivision every year.
- Mentored a team of engineers developing web-based prototypes for the next generation of mainframe system administration tools.
- Lead a team of peer managers in creating a set of expectations and standards which were applied universally across a previously disjoint team.
- Designed and developed a set of tooling for managers to be able to allocate bonus budgets according to HR policy.
- Designed and developed a set of tooling for creating distribution lists, team rosters and organization charts with faceted browsing capability which still serves over 40,000 users per month.
Visiting Software Engineer
IBM Research - San Jose, CA and Hawthorne, NY (11/2003 - 07/2004)
Hand selected for a six month rotational assignment as a visiting software engineer with IBM Research.
- Consulted for the WebFountain text analytics team to identify a rich client technology platform to use for custom end user applications.
- Delivered a reference implementation of the platform, based on Eclipse, which accommodated plugging-in various text analysis and visualization tools.
- Presented assignment's findings at an internal technology fair attended by 4,000 people.
Rich Client UI Software Engineer, Team Lead and Product Manager
IBM Systems Group, WebAhead - Southbury, CT and New York City, NY (11/2000 - 11/2003)
Worked as a team lead, product manager, UI designer and rich desktop client engineer for IBM's most successful advanced technology prototype team.
- Lead a team of 4 engineer/designers in developing an enterprise scale messaging client platform deployed to over 50,000 people.
- Personally designed and developed the user interface and framework for a suite of broadcast messaging applications.
- Iteratively gathered and acted on user feedback from a 1,000+ person community through newsgroups, surveys and direct conversation.
- Facilitated hand-off of the successful prototype platform to the IBM Lotus Sametime 7.5 commercial product development team.
- Designed and developed the UI for a photo resizing tool in the online employee directory which has been used by over 300,000 employees.
- Designed and developed a variety of rapid prototypes to demonstrate the value and practical application of new technologies.
Front-end Web Development Engineer and Problem Solver
IBM Global Services - Hawthorne, NY and Sydney, NSW, Australia (05/1999 - 11/2000)
Worked as a front-end engineer, team co-lead and design liaison for the team that produced the official web site of the Sydney 2000 Olympics.
- Co-led a team of 6 engineers in producing the site that served 230 million page views to 8.7 million people in 17 days.
- Developed a CGI page filter which resulted in a ten-fold improvement in page performance by identifying and working around a bug in one of the supported browsers.
- Developed an interactive visualization applet that allowed visitors to see what time it was in various parts of the world.
- Developed and maintained the HTML/Javascript templates for all sport and athlete results pages on the site.
- Developed a Perl based content production system for the Paralympic Games site.
- Developed web based tooling to automate the creation of common web content based on templates.
- Developed portions of the front end of the Sydney Olympic online store.
Education
Bachelor of Engineering in Electrical Engineering
The Cooper Union - New York City, NY (09/1993 to 05/1997)
Thesis: Reduction of Low Frequency Loudspeaker Distortion Using an Adaptive, Driver Independent, Digital Signal Processing System
Completed a senior thesis project with the goal of reducing distortion in low frequency loudspeakers by performing a real time analysis of it's moving parts. This hybrid digital/analog project involved implementing an adaptive filter algorithm in assembly language on a Spectrum PC/C5x DSP board. The filter's response characteristic was controlled by analyzing the output of an accelerometer mounted on the speaker's cone.
Master of Science in Electrical Engineering
The Cooper Union - New York City, NY (09/1997 to 05/1999)
Thesis: Applying Visual Analysis to Ground Force Reaction Data in the Study of Gait Pathology
Completed a master's thesis project based on a request by researchers at Lenox Hill Hospital. The researches had purchased a "force plate" which measures the force applied as a patient walks on it in order to analyze gait pathology and athletic performance. Using the Win32 API and OpenGL I wrote software which read the stream of data from the force plate and a video feed. The software displayed a synchronized side by side view of the force plate's data (displayed as a 3-D visualization of the direction and magnitude of the force applied to the plate) and video of the human subject being measured.