Ken Kania, Software Developer in Crozet, VA, United States
Ken Kania

Software Developer in Crozet, VA, United States

Member since November 19, 2020
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.
Ken is now available for hire

Portfolio

Experience

Location

Crozet, VA, United States

Availability

Part-time

Preferred Environment

Go, JavaScript, Python, C++, Java, React, gRPC, Linux, Windows

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.

Employment

  • Senior Software Engineer

    2014 - 2019
    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.
    Technologies: Linux, Google Bigtable, Google Cloud Storage, gRPC, Mercurial, Go, Python, JavaScript, C++, Java, Protobuf
  • Senior Software Engineer, Infrastructure

    2012 - 2014
    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.
    • Designed and led the development of ChromeDriver for Windows, macOS, Linux, and Android (C++, JavaScript, Python). The application supported an HTTP REST API and automated Chrome via automation IPCs and Chrome DevTools (over WebSockets).
    • Designed and implemented new commands and events for input simulation, handling JavaScript dialogs, file input selection, and frame navigation tracking in WebKit's DevTools protocol.
    • 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.
    Technologies: C++, Python, JavaScript, HTML5, Selenium WebDriver, WebSockets, REST APIs, WebKit, Chrome Developer Tools, Gerrit, Subversion (SVN), Git
  • Software Engineer in Test

    2009 - 2012
    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.
    Technologies: C++, Python, JavaScript, HTML5, Chrome Extensions, Google Test (GTest), Google Mock (GMock), Selenium, Gerrit, Subversion (SVN), Sockets
  • Software Engineer Intern

    2008 - 2008
    Argon ST
    • 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.
    Technologies: Multithreading, C++, Java
  • Software Development Engineer Intern

    2007 - 2007
    Microsoft
    • 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.
    Technologies: MacOS, Objective-C, Cocoa
  • Software Developer Intern

    2005 - 2006
    NASA
    • 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.
    Technologies: C++, Objective-C, Cocoa, MacOS, Linux

Experience

  • ChromeDriver
    https://chromedriver.chromium.org/

    Tech lead/manager for Chrome's WebDriver automation initiative (aka ChromeDriver). Represented the Chrome team in several W3C standardization meetings. Designed and led the development of ChromeDriver for Windows, macOS, Linux, and Android (C++, JavaScript, Python). 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. Worked on integrating ChromeDriver into the test cycle of popular Google products. I transitioned ownership of the project when I left the team in 2014.

  • Haven (PC/Console Game) (in-development)

    This is a 3D PC/console game I started as a side project in 2020 (with one other creative designer). The game is a hybrid of 3D open-world adventure with 2D arcade-style gameplay. The player is given a traditional side-scrolling view of the 3D character and world, in which they can navigate by going forward and backward on a system of interconnected paths.

    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)

    A 2D top-down multiplayer game for PC and web. I wrote this initially in high school as a PC game for my younger sister. When I was in quarantine after returning from the Netherlands in 2020 (due to the virus outbreak), I reimplemented a similar multiplayer version for the web.

    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)

    A 3D aircraft racing game for the PC which my brother and I made in high school. I created a program for crafting terrains and static objects, as well as the ability to load and display these in-game. Written in C++ using OpenGL and SDL.

Skills

  • Languages

    Java, C++, JavaScript, Python, HTML5, Go, Objective-C, GLSL
  • Libraries/APIs

    Selenium WebDriver, Protobuf, React, OpenGL, Node.js, Three.js, Sockets, REST APIs, HTML5 Canvas, WebGL, WebRTC
  • Frameworks

    gRPC, Django, Cocoa, Box2D, Unreal Engine 4, Google Test (GTest), Google Mock (GMock)
  • Tools

    Chrome Developer Tools, Git, Mercurial, Subversion (SVN), Gerrit
  • Platforms

    Windows, Linux, MacOS, Android
  • Storage

    Google Cloud Storage, Google Bigtable
  • Other

    Software Engineering, Multithreading, Chrome Extensions, WebKit, WebSockets, Simple DirectMedia Layer, GLUT, PeerJS, Matter.js

Education

  • Bachelor's Degree in Computer Science
    2006 - 2009
    Virginia Tech - Blacksburg, VA

To view more profiles

Join Toptal
Share it with others