1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
reyasume/_data/experience.yaml

193 lines
8.8 KiB

---
roles:
- id: bazel-configurability
image: jobs/google/bazel.png
name: Software Engineer # III
team: Bazel Configurability
company: Google
startDate: 2016-07-15 # vague guess - this was around when I would have
# started getting to work on reviewing configurability
# changes and getting up to speed on this team
endDate: 2019-10-04 # dead on, this was my last day at Google
shortDescription: |
Optimizations and flexibility for multiplatform builds for Bazel projects.
description: |
Primary expert and contact point for _configuration trimming_, a major
overhaul of the internals of Bazel's multiplatform support which saves
build time, build artifact disk space and build graph memory by collapsing
redundant nodes together (e.g., deduplicating Java binaries which only
differ by the Python version they're built for).
achievements:
- id: feature-flags
description: |
Designed and built a feature flag system for Bazel which allows
Android developers to toggle build dependencies without needing to
create parallel trees. Used by ~50 Android teams within Google, with
more asking to have the feature enabled weekly.
- id: whitelisting
description: |
Designed and built a mechanism for controlling rollouts of Bazel
features based on build package for use with feature flags, which
was quickly adopted by other subteams within Bazel.
- id: attribute-refactor
description: |
Refactored Bazel's attribute support, prompting a code owner to
describe the result as "so much better it hurts."
- id: test-trimming
description: |
Sped up developer build/test switching, saving 2min+ reanalysis on
each switch, adding up to an hour or more of wait time saved per
engineer over a day's builds.
- id: tagged-trimming
description: |
Implemented, built a fully automated migration tool for and consulted
with users to roll out manual trimming to get Android developers
reduced memory use immediately, saving multiple gigabytes of memory
per build and preventing OOM conditions for larger builds.
- id: auto-trimming
description: |
Researched options for automatic trimming, wrote over 60 pages of
design documents proving the viability of trimming and the tradeoffs
of different options, built a TypeScript/Angular2-based prototype
to gather data on builds and eventually integrated a prototype into
Bazel.
- id: bazel-u
description: |
Ran multiple talks for the Bazel team about trimming and feature
flags, consulted across Bazel and with other teams on the viability of
trimming techniques for different use cases, and received a peer bonus
for my expertise.
- id: trimming-metaphors
description: |
Wrote a document explaining the complex concepts, techniques, and
history of trimming in an easy-to-read manner and received a peer
bonus describing it as "one of the best docs I've read at Google."
- id: bazelcon
description: |
Solicited experts for office hours for BazelCon 2018 and managed rooms
and experts day-of, allowing the show to go on despite last-minute
loss of our planned venue and receiving a peer bonus from the head
organizer.
- id: personal-postmortem
description: |
Wrote, gave a talk on, and received a peer bonus for a document
speaking frankly about emotional safety on the team.
- id: team-culture
description: |
Proposed improvements to team culture, ran meetings on the subject,
consulted with management and gathered feedback fro team members.
- id: kotlin
description: |
Consulted with Kotlin team at Google about the possibility of using
Kotlin within Bazel.
- id: bazel-release
image: jobs/google/bazel-old.png
name: Software Engineer in Test # II
team: Bazel Release Process
company: Google
startDate: 2013-09-15 # rough guess, since I was still working on Wallet in
# Q3 2013, but had fully transitioned to Bazel by
# Q3 2014 - but it hadn't gotten cold yet
endDate: 2017-06-15 # did I truly ever stop working on the release process?
# however, this is around when it stopped being my job
description: "The long version is, I did so much freaking junk on this thing."
shortDescription: "The short version is, a lot."
achievements:
- id: mentor
description: |
I taught Florian the secrets of releases.
- id: teach
description: |
I taught everyone else how to be sheriff.
# * Bazel release process fixing and documentation
# * Bazel release process overhaul design
# * PB: Sheriffing (x3)
# * PB: Diagnosed & wrote tool to fix bug in test, reenabling releases
# * Perf: Engineering conscientiousness (doing the right thing)
# * Perf: Energetic and invested
- id: bazel-android
image: jobs/google/bazel-old.png
name: Software Engineer # II
team: Bazel Android Support
company: Google
startDate: 2013-09-15 # same as Bazel Release Process
endDate: 2016-11-15 # vague guess - this is around when my focus shifted to
# configurability full-time, since before that I was
# doing configurability as a side job and Android as a
# primary job
description: null
# * Bazel Android support: native code, Jack, resource-split APKs, aidl tooling fixes
# * dynamic configs on aspects as part of Jack
# * PB: Big release process documentation
# * PB: Release process migration design help
# * PB: Python and release process teaching
# * PB: release process tools moved into binfs and hashbang
# * PB: --legacy_android_support no-oping
# * Spot: Consulted with Snapchat
- id: google-tooling
image: jobs/google/google.png
name: Software Engineer in Test # II
team: Internal Tooling
company: Google
startDate: 2013-02-15 # rough guess, since Jon mentioned my work on the tool
# in Q3 2013
# which was after I started the UI work in Summer
# which was after I'd been invited to start working on
# the project around midway through Q1
endDate: 2017-12-18 # dead on, this is the day I got a peer bonus for
# helping with turning this down
description: null
# * account making service
# * PB: account creation tool (x3) + shutdown
# * Spot: Gaiamaker
- id: wallet-testing
image: jobs/google/wallet.png
name: Software Engineer in Test # II
team: Wallet Web Frontend
company: Google
startDate: 2011-07-18 # dead on, this was my start date
endDate: 2013-09-15 # same as with the Bazel Release Process start date,
# since they're the same day
description: null
# * Web wallet testing
# * Helped organize team fun events on Whisky
# * PB: Guice wiring and integration testing support
- id: agora-games
image: jobs/agora.gif
name: Software Intern
company: Agora Games
startDate: 2010-11-04 # or thereabouts, this is when I was interviewing
endDate: 2010-12-04 # as recorded in a livejournal comment...
# Agora Games: Ruby web testing
- id: star-analytics
image: jobs/staranalytics.png
name: Software Intern
team: Star Task Builder
company: Star Analytics
startDate: 2010-04-15 # very approximate, got my IP phone/laptop around then
endDate: 2011-05-15 # ish, I stopped this around when I left school
# Star Analytics C# frontend
- id: misc
image: jobs/blocks.svg
name: Hobbyist
team: Other (personal, school, side jobs etc.) Projects
startDate: null
endDate: null
# ## Personal projects
# * Personal blog website using Eleventy + Netlify
# * Anki plugins for Japanese study
# * Personal Docker server for mail and nextcloud
# * Discord bots
# * Assortment of handmade Minecraft plugins, self-run server
# * PDF page-identification and splitting C# utility for helping at the church
# * Python/GTK+ based rental property payment tracking
# * Javascript based dice roller for MSN+
# ## RPI projects
# * Python OpenGL-based game
# * Rails based task management project: https://github.com/thoughtbeam/flagship_tasks
# ## Regis projects
# * C SDL-based game
# * Python/GTK+ based assignment tracker
# * Python based encrypted chat program
# * Java based student chat program