🖨️ printable page

Sam Rawlins

// -----------------------------------------------------------------------------

// ------------------------------------

Software Developer Tools Engineer

San Jose, California

Profile

What do I do? I love writing tooling for software developers. For the last seven years, I have been supporting developers with static analysis tooling, build system infrastructure, and test tooling. I support build systems, and giant codebases of both web and mobile appliations.

What are my skills? I am versatile in writing server-side developer tooling, and do so in various modern programming languages. I am passionate about working with other developers, and supporting them with functionality that improves developer productivity.

Experience

Google, Inc

Aug 2016 - current

Software Engineer → Senior Software Engineer

  • Wrote a web application which previews automated nullability changes being applied to Dart code; functions similar to an IDE

  • Implemented new code-generating API for Dart mockito package for compatibility with Dart's upcoming non-nullable type system (PR #236)

  • "20% contributor" to Dart static analysis team; work includes
  • Led type system upgrade for all internal code, to prepare for Dart 2.0; ran a "fixit", engaging 40 engineers to prepare their code bases, changing types and other code in 1600 Dart files.

  • Designed a siloed build system for projects that could not be upgraded to Dart 2.0; forked and programatically altered more than 2000 files to keep over 40 applications running indefinitely on Dart 1.

  • Lead developer of the Dart mockito (GitHub) package; designed new architecture to handle new Dart type system (initial implementation: PR #26, issue #83, PR #85, user documentation: PR #96.

  • Lead developer of the Dart markdown (GitHub) package; significant PRs: Markdown extension support (PR #44), extension sets (PR #55), GitHub-Flavored Markdown tables (PR #78), overhauling link reference definitions (PR #110), example web app (PR #120) live at dart-lang.github.io/markdown, overhauling emphasis and strong emphasis parsing (PR #193), overhauling links (PR #202).

  • Joined the "readability approvers" team for the Dart language in December 2018, shaping the style and idioms used for all code written at Google; reviewed > 180 changes in 12 months.

  • Recipient of the Dart organization and "Multiplatform" organization's Citizenship Award in Q1 2017, Q2 2019, Q3 2019, and Q4 2019.

  • Heavy contributor to the Sass-linting Rubygem, scss-lint; after contributing new linting rules and many bug fixes, am the largest contributor behind the project owner.

Google, Inc

Feb 2013 - Aug 2016

Software Engineer in Test

  • Designed and implemented a web test runner for Dart, now used by hundreds of developers in Google; test runner builds and runs tests, manages browser windows, caching and selectively re-running tests on file writes.

  • Designed and implemented a new Network Emulation feature inside Chromedriver, exposing features from Chrome's DevTools to WebDriver testing (first CR, network presets CR, DELETE CR, offline CR).

    Developers can use this feature to test their web applications under throttled network conditions (high latency, slow speed, offline), a test attribute that was previously incredibly difficult to control.

  • Designed and implemented Mobile Emulation support in ChromeDriver (main CR).

University of Arizona

Dec 2010 - Jan 2013

Principal Systems Analyst/Developer

  • Implemented and customized a new financial system and research administration system.

  • Understanding of Java web development, including Spring and Struts.

  • Understanding of general (Java) development, using Ant, Maven, Eclipse, Subversion, and Jira.

  • Develop tests, scripts, and tools in web-oriented languages (Ruby, JavaScript, CoffeeScript), implementing various tools (Selenium, Sinatra, Subversion, Git, Jira).

IBM

Oct 2006 - Dec 2010

System Test and Performance Engineer

  • Understanding of Windows and several Unix variants, software testing fundamentals, performance testing concepts and tools.

  • Designed performance evaluation automation suite in Ruby.

  • Develop tests, scripts, and tools in multiple languages including: C, Java, Perl, Ruby, Python, HTML/JavaScript/CSS.

Education

University of Arizona
Tucson, AZ

Graduation May 2004

Bachelor of Science - Mathematics and Computer Science

Hard Skills

Mastery

Software development - developer tools

Mastery

Software development - build systems / large codebases

Excellence

Software development - front end

Technologies

Mastery

Dart language

Mastery

Ruby language

Mastery

Python language

Excellence

Sass language

Excellence

JavaScript language

Excellence

HTML/CSS languages

Excellence

Java language

Excellence

Bazel build system

Experienced

AngularDart / Angular

Experienced

node.js

Experienced

git

Experienced

Unix shell

Soft Skills

Mastery

Team communication - communicating with teammates both local and remote does not just mean email; I work efficiently to tighten communication loops within and across teams.

Mastery

Code review - working together on teams requires competent and compassionate code reviews; I deliver thorough and pragmatic code reviews.

Mastery

Test culture - from working for years as a Software Engineer in Test, I promote a culture of good testing practices, from unit testing to end-to-end testing, from testing one thing at a time, to testing public API, checking in regression tests for bug escapes to failing tests for open bugs, earning good test coverage (but not necessarily perfect), and more.

Excellence

Agile methodologies - I have worked on Agile teams with scrum masters, Kanban boards, true stand-ups, and safe, effective retrospectives; I believe in the effectiveness of choosing work cycle methods per-team, per-project that best help the team get things done.