Verified Expert in Engineering
Ken started C/C++ programming in secondary school in order to make computer games. This enabled him to land internships at NASA and Microsoft while attending Virginia Tech. After graduation, he worked at Google for 10 years as a member of the Chrome and Search teams, developing cross-platform desktop applications, web apps, and distributed systems.
The most amazing...
...product I've developed is ChromeDriver, a cross-platform desktop app that is a cornerstone for web app testing for thousands of companies and individuals.
Software Engineer Consultant
A Toptal Client (Self-Service Data Analytics)
- Developed features and fixes for a C++ Windows desktop ODBC-based application.
- Designed, implemented, and deployed a unified system for test management across languages (C++/Python/JS) and frameworks (GoogleTest/Catch2/Pytest/Jest/custom). Integrated within GitLab CI/CD.
- Designed, prototyped, and presented on new Python framework for generic testing of dozens of data sources in isolated environments using Docker.
Senior Software Engineer
Google (Search Team)
- Served as the tech lead of a system for querying and interpreting data from various search engines. Led a team of three engineers plus contributors in providing consultation and custom dev work to dozens of search sub-teams.
- Developed means to integrate disparate sources of data (from UI, logs, additional side channels) for cohesive analysis.
- Spearheaded cross-department initiative and design to transition from consulting model to principled API with plugin points.
Senior Software Engineer, Infrastructure
Google (Chrome Team)
- Acted as the tech lead and manager for Chrome's WebDriver automation initiative (aka ChromeDriver). The team included three full-time engineers and a half dozen contributors from stakeholders across Chrome and Google.
- Established dev processes for building, testing, releasing, bug handling, and customer interaction.
- Integrated ChromeDriver into the test cycle of popular Google products.
- Represented the Chrome team in several W3C WebDriver standardization meetings.
Software Engineer in Test
Google (Chrome Team)
- Created a system in Python to traverse the web, perform rudimentary UI interaction, and detect/triage/report crashes. Integrated system with Chrome's fuzzing infrastructure and crash database.
- Extended Chrome (C++) to allow for automation of e2e test cases involving DOM querying/manipulation. Provided IPCs to allow vendors to write out-of-process tests using Python.
- Created a C++ framework (based on GTest/GMock) for the ChromeFrame team to write e2e tests with Internet Explorer (IE). Allowed configuring canned HTTP server responses and basic IE automation through MS Active Accessibility and IAccessible2.
- Extended Chrome extensions C++ testing framework (based on GTest) to run on Mac and to support extension update/installation test case scenarios. Improved test stability by fixing race conditions on Linux.
- Inherited a lab with GPUs for automated testing of O3D, a 3D graphics browser plugin. Wrote the infrastructure to automate various OS' browsers and perform snapshot-based testing. Integrated with Buildbot CI and made a web app for debugging failures.
Software Engineer Intern
- Wrote integration tests for Java and C++ applications.
- Debugged test failures and other bugs in multithreaded C++ code.
- Participated in team design and bug triage meetings.
Software Development Engineer Intern
- Developed a macOS desktop application for integrating with a Windows-only issue/bug management system.
- Learned and made use of MacOS's Cocoa and Core Data frameworks, as well as team-specific Objective-C conventions.
- Held a design/code review meeting and presented the application at a department meeting.
Software Developer Intern
- Contributed to the development of a platform for viewing/exploring data in virtual 3D reality as a member of a student team. Wrote C++ to allow recording and playing back flights on Mars terrain.
- Added functionality to CFD application in Objective-C to automatically determine the curve of intersection between two meshes. Exposed functionality and configuration parameters via a UI.
- Helped present and demo both technologies at department and school meetings.
Haven (PC/Console Game) (in-development)
I first experimented with different 3D/2D hybrid approaches in Three.js/WebGL and Box2D (via WebAssembly) before moving to Unreal Engine 4 for prototyping/development.
Although the game is still in the early stages (we have a 5-year roadmap), we have rudimentary functionality for a player to navigate the world and combat enemies. The chief difficulty/customization involved so far has been supporting 2D-like paths in UE4's 3D/FPS-centric model. The UE4 editor has been extended to allow defining paths (using UE4 splines) on which object placement, navigation, physics (and eventually AI) are intelligently constrained. Level designers can layout platforms which automatically conform to the curvature of defined paths.
Animal Catch (PC/Web Game)
Each player controls an animal attempting to escape from the zoo, which involves navigating through obstacles and avoiding zookeepers. Both versions of the game also included a level editor for custom level creation.
Initially implemented using OpenGL/GLUT, the web version used PeerJS (for peer-to-peer networked play), Matter.js (for physics simulation), and HTML5 Canvas.
Echo Racing (PC Game)
Selenium WebDriver, Protobuf, React, OpenGL, Node.js, Three.js, Sockets, REST APIs, HTML5 Canvas, WebGL, WebRTC, ODBC
gRPC, Django, Cocoa, Box2D, Unreal Engine 4, Google Test, Google Mock (GMock)
Chrome Developer Tools, GitLab CI/CD, Git, Mercurial, Subversion (SVN), Gerrit
Windows, Linux, MacOS, Android, Docker
Google Cloud Storage, Google Bigtable
Software Engineering, Multithreading, Chrome Extensions, WebKit, WebSockets, PeerJS, Matter.js
Bachelor's Degree in Computer Science
Virginia Tech - Blacksburg, VA