Hi there, I'm
Chris Pyles
I'm a software engineer, currently working at Google, with experience in web development and educational technology.
Experience
-
Google
May 2022 - Present -
IXL Learning
July 2021 - May 2022 -
Microsoft
October 2020 - June 2021 -
UC Berkeley DSEP
May 2019 - June 2021
Software Engineer
Google, May 2022 - Present
I am currently a software egineer at Google building internal tooling for automated capacity management. This is primarly a web development role for an internal site built with Angular (in TypeScript) on the front-end and Go on the back-end. I've also contributed to backend microservices for automating service moves between data centers.
Software Engineer
IXL Learning, July 2021 - May 2022
At IXL, I was a member of the Teacher Experience team, which works on maintaining and building new features for educators on IXL's platform. My role involved full-stack development in Struts and React, working on an Agile team with biweekly standups and releases. Within my first six months at IXL, I had already led a full-scale project to allow instructors to pin skill plans for specific classes instead of their entire roster, for which I designed the back-end, wrote a detailed design doc, and led the team through implementation. One of the other big projects I worked on at IXL was a complete refactor of the back-end for personalized skill plans for exams like the SAT, ACT, and NWEA MAP, a feature used by more than 250,000 users. For this project, I designed the new back-end and did most of the implementation.
Contract Software Engineer
Microsoft, October 2020 - May 2022
At Microsoft, I architected and engineered an open source Python auto-assessment solution called PyBryt that implements a unique autograding structure grounded in the philosophy that intermediate to advanced programming courses should not require students to follow a rigid scaffold for solving problems. I provided engineering support to a series of pilots of PyBryt in courses of up to 1,200 students per semester at UC Berkeley, Imperial College London, and Tel Aviv University. I spent most of the first half of my time at Microsoft working on the initial release of and developing new features for PyBryt.
In the latter half of my time at Microsoft, I shifted focus to driving the adoption of PyBryt beyond its pilot courses (while still working on feature development). I created a GitHub Action to automate the use of PyBryt as a continuous integration tool for student repositories; I then used this Action to orchestrate a full-scale implementation of a real-world grading pipeline using GitHub Classroom for collecting different implementations of algorithms to be used to construct exercises for interactive Microsoft Learn modules. I also authored a blog post and two Microsoft Learn modules on an introduction to and advanced uses of PyBryt geared towards academics looking to adopt the solution.
Lead Developer
UC Berkeley Data Science Education Program, May 2019 - June 2021
I led a team of 8 developers working on 3 concurrent open source projects at a time often using previously-unfamiliar technologies. We used Agile methodologies to organize development cycles and encouraged parallelization of tasks, including performing code review and facilitating weekly meeting standups.
The main project I worked on is an open source Python and R autograding solution, Otter-Grader, that scalably grades students' programming assignments and abstracts away autograding internals for instructors, which has been adopted in several courses at and outside of UC Berkeley and has used to grade assignments for over 10,000 students at UC Berkeley alone. Part of this work has been creating an open source community for development around GitHub and a public Slack to allow instructors and contributors to communicate effectively and to allow iterations on the package to be a community effort. I also led an interactive hands-on demonstration of autograding solutions and a presentation on the engineering and infrastructure constraints of those solutions at the 2020 National Workshop on Data Science Education.
Education
University of California, Berkeley
Bachelor's Degree, Major: Computer Science and Data Science (with Honors), Minor: Demography
August 2017 - May 2021
I graduated from UC Berkeley, earning a Bachelor's degree in Computer Science and Data Science. While at Berkeley, I tried to get involved in the campus communities surrounding my majors; I worked for two years at the Data Science Education Program, a subdivision of UC Berkeley's Division of Computing, Data Science, and Society. At DSEP, I worked not only as the lead developer for their infrastructure team, but also as a contributor for the data science curriculum and, eventually, as a TA for Data 100, a core upper-division data science course.
Skills
Languages
Frameworks
Tools
Open-Source Projects
Otter-Grader
Otter-Grader is a Python-based server-optional autograding solution that can grade both Python and R assignments.
Utilized: Python, R, Docker
PyBryt
PyBryt is a Python auto-assessment tool designed to avoid the rigidly-structured unit test based autograding format of conventional autograders.
Utilized: Python, Jupyter Notebooks
fica
fica
is a Python package for managing and documenting configuration files. It can be used to define a type-safe structure for a configuration object and, in conjuction with Sphinx, create simple, formatted documentation for each value.
Utilized: Python, Metaprogramming, Sphinx
Contrastinator
The Contrastinator is a small utility for building color palettes with helpers such as a color contrast calculator and random palette generation. It's a serverless Angular single-page application.
Utilized: Angular, TypeScript, Node.js
Amaze
Amaze is a small maze game that generates random mazes for you to solve and uses depth-first search to find the solution to the maze. It's is a serverless Angular single-page application.
Utilized: Angular, TypeScript, Node.js
datascience
datascience
is a pedagogical Python package for data science. I worked on the use of interactive plots created with plotly
and expanded the mapping functionality with folium
.
Utilized: Python, plotly
, folium