Experiences
Software Engineer at Bytedance
Apr 2023 - Present, Software Engineer, San Jose, CA
- Promote and ship monorepo solutions to tiktok & devinfra developers
- Repo migrations, CI/CD pipeline conversions
- Educations
- Shepherd monorepo practices for migrated teams
- Trunk health enforcement and management
- Improve CI architecture and performance
- Infra and tooling for monorepo solutions
- Packaged bazelisk / bazel / configs to adapt to internal environments
- Metrics for progress tracking / prioritizaion
- Remote cache / remote exec
- Integration for bazel intefacing multiple external systems
Build Engineer at Twitter
Aug 2015 - Nov 2022 · 7 yr 4 mo
Staff Software Engineer
San Francisco, CA
Main Responsibilities
2020 - 2022
- [Infra] Develop and maintain build infrastructure including
- build stats collection service for real time and offline analysis
- build cache service scalable to handle tens of thousand build workers
- Mac build farm that supports mac builds from developer machines
- [Bazel Migration] Socialize, plan, design, and implement build tool migration from Pants to Bazel, interfacing customer teams and tooling teams to better support the migration.
- Collaborate with Managed CI team (Twitter’s custom code submission system which consists of tens of thousands of workers) to find and test code built by both build tools incrementally and safely.
- Establish and maintain performance and reliability baseline and monitoring
- Collaborate with VM team to develop and execute the plan for company wide migration from JDK 8 to JDK 11 with minimal friction with Bazel migration.
- Mentor and work with junior engineers to maximize team throughput and resiliency
- BazelCon 2021 Talk - Migrating Twitter’s Monorepo from Pants to Bazel - 2021 - [Slides]
- Collaborate with Managed CI team (Twitter’s custom code submission system which consists of tens of thousands of workers) to find and test code built by both build tools incrementally and safely.
2019 and Prior
- Develop and maintain Pants, the main build tool in Twitter.
- 3rdparty resolver migration (Coursier -> Ivy)
- IntelliJ Pants Plugin IDE integration with Pants.
- Distributed build cache for Pants
- Real time metrics for IntelliJ IDEA performance and usages
- Maintain Android build system with
- Gradle / Android Studio / Android Gradle Plugin upgrades
- Establish performance metrics baseline and monitoring by integrating with Gradle Enterprise
Software Engineer at Cisco
Feb 2014 - Aug 2015 · 1 yr 7 mos
San Jose, CA
Main Responsibilities
- Infrastructure setup and configuration
- Cloud management and automation
- Full stack web devops
- Mobile gateway solution testing
Software Engineer Intern at Ingersoll Machine Tools
May 2013 - Dec 2013 · 8 mos
Rockford, Illinois
Main Responsibilities
- Solve kinematics mathematically on different types of fiber placement machines.
- Implement robotic kinematics algorithms with C++ to improve the speed.
- Apply software engineering patterns and heuristics measures to maximize the performance and ease of code management.
Education
University of Illinois Urbana-Champaign
Master, Computer Science, 2012 - 2013
University of Illinois Urbana-Champaign
B.S, Computer Engineering, 2008 - 2012
Stacks
Data Query Engines and Viz
- BigQuery
- Jupyter Notebooks
- Tableau
- Zepplin
- Presto
Build tools
- Bazel
- Pants
- Gradle (JVM and Android)
- Maven
- Sbt
- virtualenv / pip
Continuous Integration Systems
- Jenkins
- TravisCI
- Github Actions
Languages
- Python
- Java
- Scala