---
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 for _configuration trimming_, a major overhaul of Bazel's
      multiplatform support to save time and memory for users by collapsing
      equivalent nodes in the build graph.
    achievements:
      - id: feature-flags
        description: >
          Designed and built a feature flag system for Bazel, used by ~50
          Android teams within Google, with more asking to be enabled weekly.
      - id: whitelisting
        description: >
          Designed and built a mechanism for controlling rollouts of Bazel
          features, 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 manual trimming to get Android developers
          reduced memory use immediately, saving multiple GB of memory
          per build and avoiding OOM conditions.
      - id: tagged-trimming-rollout
        description: >
          Built a fully automated Python-based migration tool for and consulted
          with users to roll out manual trimming, saving hours of tedious manual
          corrections per project.
      - id: auto-trimming
        description: >
          Researched the automatic trimming problem and wrote over 60
          pages of design documents proving
          [the viability of trimming and the tradeoffs of different options](https://docs.google.com/document/d/1MHq-PKTEhTj7uI185Lm7HSFJK0xSssaY3ZTz7Djq-6A/edit).
      - id: trimming-prototype
        description: >
          Built a TypeScript/Angular2-based prototype to gather data on the
          tradeoffs of different trimming algorithms with real builds and
          integrated a prototype into Bazel.
      - id: bazel-u
        description: >
          Ran multiple talks for the Bazel team about trimming and feature
          flags, consulted with individual developers across teams, and received
          a peer bonus for my expertise.
      - id: trimming-metaphors
        description: >
          Wrote an easy-to-read
          [introduction to the complexities of trimming](https://docs.google.com/document/d/1J6yvbe0Rt-KLGzVtW9Pt0YjPB8R_tQQ7zy8jIjay7l0/edit)
          and received a peer bonus describing it as "one of the best docs I've
          read at Google."
      - id: bazelcon
        description: >
          Solicited experts for BazelCon 2018, coordinated rooms day-of, and
          made office hours work despite last-minute loss of venue. Received 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 from team members.
      - id: kotlin
        description: >
          Consulted with the 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
    shortDescription: >
      Migrations, stability, and features for the internal release process of
      Bazel (a.k.a. Blaze).
    description: >
      Local expert on Google-internal release and testing tools, primary expert
      on the release process for the Google-internal version of Bazel (a.k.a.
      Blaze).
    achievements:
      - id: testability
        description: >
          Updated old release Bash scripts to allow for testing of changes
          without risking the stability of the release.
      - id: autorerun
        description: >
          Automated the rerunning of all tests across Google's continuous
          builds, saving sheriffs the time and hassle of manually checking the
          results and starting reruns.
      - id: documentation
        description: >
          Thoroughly documented the existing release process and all changes
          being made to it and presented this information at a team summit,
          received a peer bonus.
      - id: sheriff
        description: >
          Consulted with sheriffs and acted as a go-to backup sheriff during
          especially difficult situations. Received 4 peer bonuses for different
          key moments of help.
      - id: redesign
        description: >
          Designed a new version of the release process using more modern
          infrastructure, avoiding version desync problems and allowing better
          testing.
      - id: tooling
        description: >
          Automated release of sheriff tooling to developer workstations,
          preventing use of out-of-date utilities and making diagnostics during
          release significantly easier.
      - id: release
        description: >
          Fixed, documented, and added checks for a rarely used process,
          avoiding regular misunderstandings about how the process works.
      - id: mentor
        description: >
          Mentored a new team member in Python and internal release tools,
          guided him through implementing the redesign and becoming the new
          expert. Received a peer bonus.
  - 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: >
      Built features relating to compiling Android apps within Bazel.
    achievements:
      - id: aidl
        description: >
          Fixed a long-standing bug in Bazel's AIDL support, correcting
          incorrect builds, and migrated all Google Android projects, saving
          teams time and bugs.
      - id: native
        description: >
          Upgraded Bazel's Android native code support to allow for automatic
          compilation within Bazel, avoiding the need for users to implement it
          in a separate system.
      - id: jack
        description: >
          Added support for the Jack and Jill compilers to Bazel, allowing the
          Jack team to instantly test their work across the real projects within
          Google.
      - id: snapchat
        description: >
          Consulted with a major App Engine client and helped their developers
          get set up to use Bazel for their Android app. Received a spot bonus.
  - 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
    shortDescription: >
      Built and maintained parts of a test-account creation service.
    description: >
      Built and maintained parts of an internal test-account creation service
      which was used by several teams throughout Google for easy isolated
      integration testing. At its peak, it created and deleted hundreds of
      accounts every minute.
    achievements:
      - id: wallet-profile
        description: >
          Installed a new account template on the account creation service,
          allowing users to create Google accounts which already had Wallet
          accounts set up.
      - id: dartui
        description: >
          Rewrote the existing hacky Javascript-and-jQuery UI for an internal
          user in clean, well-tested Dart, allowing for fully automated
          push-on-green releases.
      - id: maintenance
        description: >
          Investigated bug reports, coordinated with other teams and remained
          on-call to keep users' tests running. Received three peer bonuses and
          a spot bonus.
      - id: shutdown
        description: >
          Received a peer bonus for assisting with the shutdown and migration to
          a newer service owned by the account team.
  - 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
    shortDescription: >
      Built and maintained test infrastructure for the Wallet web frontend.
    description: >
      Embedded test infrastructure support for the Wallet web frontend team;
      worked with related teams and fellow software engineers in test to make
      sure developers could quickly and easily write and run tests.
    achievements:
      - id: page-objects
        description: >
          Built a framework based on WebDriver PageObjects allowing developers
          to write tests as if giving instructions, making tests more stable,
          less buggy, and shorter.
      - id: integration-suite
        description: >
          Built and optimized a full-stack in-memory integration test, cutting
          time-to-results 75% and allowing integration testing to run in the
          continuous build for instant feedback.
      - id: smoke-tests
        description: >
          Wrote an adapter allowing tests written for in-memory to be used on
          the staging and production sites for fully automatic release
          testing, halving the build cop checklist.
      - id: fun-events
        description: >
          Organized fun events and wrote fun recruitment emails for the team,
          keeping spirits high and the team close.
      - id: guice
        description: >
          Received a peer bonus for teaching teammates how to work with Guice
          wiring and the innards of the integration test infrastructure.
  - 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...
    shortDescription: >
      Wrote browser tests for Rails-based web services.
    description: >
      Wrote Cucumber and Selenium-based browser tests for Rails-based web
      services.
  - 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
    shortDescription: >
      Wrote a C#-based UI for the Star Analytics task automation service.
    description: >
      Developed a C#-based user-friendly GUI for building one's own custom tasks
      and processes, allowing even those without coding knowledge to use this
      feature.
  - id: misc
    image: jobs/blocks.svg
    name: Hobbyist
    team: Other (personal, school, side jobs etc.) Projects
    startDate: null
    endDate: null
    achievements:
      - id: blog
        description: >
          Built a [personal blog website](https://blog.reya.zone) using Eleventy
          and Netlify, and hand-coded the theme and filters etc. in
          HTML, JS, and CSS. (Not unlike this resume!)
      - id: anki
        description: >
          Built Python [Anki plugins](https://github.com/programmablereya/wani-anki)
          to ease my Japanese study, synchronizing learned kanji from WaniKani
          and enabling one-click swapping of fields in downloaded cards.
      - id: discord
        description: >
          Built an extensible Kotlin-based Discord chatbot for playing Codenames
          with friends.
      - id: minecraft
        description: >
          Built several Minecraft plugins, both in Java and in Kotlin, for use
          on my self-hosted server.
      - id: church
        description: >
          Built a C#-based tool for splitting out the pages of a PDF which
          contain the IDs from a list, saving the church hours of manual work
          printing only those pages.
      - id: rental
        description: >
          Built Python/PyGTK/SQLite based rental property payment tracking
          software and migrated the old Visual Basic version to it, permitting
          it to keep functioning after the old computer died.
      - id: dice-roller
        description: >
          Built a Javascript-based dice-rolling chatbot for MSN+, enabling my
          friends and I to play D&D over the internet easily.
      - id: flagship-tasks
        description: >
          Built a [task management project](https://github.com/thoughtbeam/flagship_tasks)
          in Ruby on Rails for an engineering capstone project at RPI.
      - id: assignments
        description: >
          Built an assignment tracker in Python/PyGTK for managing work at
          RPI.
      - id: extreme-pi-2
        description: >
          Built a Python/PyOpenGL based video game for a Graphics class project
          at RPI.
      - id: extreme-pi
        description: >
          Built an SDL game in raw C for a capstone project in high school.
      - id: encrypted-chat
        description: >
          Built an obfuscated chat program in Python allowing communication
          between students over the school networks in high school.
      - id: vectors
        description: >
          Built a TI-BASIC based vector calculation program which was used by my
          entire high school class to make vector calculations easier in
          Physics class.
      - id: java-chat
        description: >
          Built a Java-based chat program allowing communication between
          students over the school networks in high school.
