Work Experience

Compiler Engineer

Apple Cupertino, CA October 2020 - Present

Worked on the Swift compiler team, helping implement several language features including parts of the Swift concurrency model. Also worked with other teams, helping them write new performant and maintainable Swift code, while integrating it with their existing codebases written in several languages. I've made several contributions to CMake, improving support for Swift.

Apple Cupertino, CA November 2018 - October 2020

Worked on various compiler-related technologies, including interpreters, static compilation flows, and JIT compilation models.

Intern Compiler Engineer

Apple Cupertino, CA January 2018 - September 2018

Worked on the Clang frontend and LLVM optimizer to help it make better decisions about how code should be optimized, and to take advantage of various features of the hardware. During this internship, I had the opportunity to present my work to the Vice President of MacOS platform experience, Andreas Wendker, and the Senior Vice President of Software Engineering, Craig Federighi.

Teaching Assistant

University of Victoria Victoria, BC January 2016 - December 2017

I have worked as a lab instructor for 100-level computer science courses, and have marked assignment and exams for 100, 200, and 300-level computer science courses.

  • CSC 230: Computer Architecture and Assembly Language: Spring 2016

    Marked assignments for Dr. Sudhakar Ganti; implemented an automatic marking system to provide more accurate feedback to students. Assisted with invigilation of the final exam.

  • CSC 110: Fundamentals of Programming I: Fall 2016

    Taught four lab sections for Dr. Michael Zastre. Designed an additional workshop for students who were interested in learning more about programming. Assisted with invigilation of the exams.

  • CSC 330: programming Languages: Spring 2017

    Marked assignment for Dr. Daniel German; implemented an automated marking system to assist me with marking. Assisted with invigilation and marking of the exams.

  • CSC 110: Fundamentals of Programming I: Spring 2017

    Stepped in for a lab instructor when they became ill and could not complete the term. Designed on of the labs, where we discussed recursion. Assisted Dr. Lillanne Jackson with invigilation and marking of the final exam.

  • CSC 116: Fundamentals of Programming with Engineering Applications II: Fall 2017

    Marked assignments and taught two lab sections for Dr. Daniel German. Assisted with the invigilation and marking of exams.

Education

Master of Science

University of Victoria Victoria, BC September 2016 - August 2018

My coursework included machine learning, data mining, linear programming, and music information retrieval. The focus of my thesis was on designing a model to summarize how commits are integrated into a git repository, specifically for the Linux kernel. This work included designing the model, developing an algorithm to construct the model from the commit graph, constructing a tool called Linvis, and performing a user study to evaluate whether the technique achieved the goal.

My thesis focused on visualizing the Linux kernel repository, which has more than 8,000 commits per release. Commits are merged into various subcomponents of the kernel before eventually merging into the mainline kernel release. The challenge is for maintainers of the kernel to understand what is merged in a given release so that they can apply the changes back to older versions for security updates. The key was to reverse the edges of the git directed acyclic graph and construct trees with edges pointing from a commit toward the merge that eventually led to including the commit in the master branch of the repository. I designed an algorithm to construct these tress and analyzed the resulting trees to verify that they reflected what was in the repository. Then I wrote a web-based tool to visualize the merge-trees and conducted a user-study to validate the claim that the tree visualization helped understand how a given commit was merged into the repository, and which commits were merged with it.

Thesis: https://dspace.library.uvic.ca/handle/1828/10053

Bachelor of Science (Honours)

University of Victoria Victoria, BC September 2012 - April 2016

Received my Bachelor of Science, in computer science, having taken a wide variety of courses including; artificial intelligence, computer graphics, computational geometry, compiler construction, database design, computer networking, and security engineering. My honors project was in computer graphics, where I implemented the Blob tree, a structure to represent the interactions of implicit surfaces.

Papers Published

Merge-Tree: Visualizing the Integration Of Commits Into Linux

Evan Wilde, Daniel M. German

Journal of Software: Evolution and Process, February 2018, Volume 30, Issue 2

DOI 10.1002/smr.1936

This paper is an extension of the original, including the details of a user study to evaluate the effectiveness of the merge-tree visualizations, and a discussion on how to extend the algorithm to further improve the results and utility.

Merge-Tree: Visualizing the Integration Of Commits Into Linux

Evan Wilde, Daniel M. German

Fourth IEEE Working Conference on Software Visualization(VISSOFT) 2016: 1-10

DOI 10.1109/VISSOFT.2016.18

In this paper, we describe the design of a tree-based model for visualizing how commits are integrated into the Linux kernel git repository. This paper includes the design of the algorithm, and lists three potential visualizations.

What Is the Gist? Understanding the Use Of Public Gists on GitHub

Weiliang Wang, German Poo-Caamano, Evan Wilde, Daniel M. German

12th Working Conference on Mining Software Repositories (MSR 2015): 314-323

DOI 10.1109/MSR.2015.36

In this paper, we investigated the uses of GitHub Gist; a feature in GitHub that is similar in concept to a Pastebin, but with the full functionality of a git repository.