Compare commits
3 Commits
auto-build
...
cv
| Author | SHA1 | Date | |
|---|---|---|---|
| 6604e910d0 | |||
| 05c1ec1dfd | |||
| faab6f4ff1 |
35
.drone.yml
35
.drone.yml
@@ -1,35 +0,0 @@
|
|||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: default
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- name: resume-output
|
|
||||||
temp: {}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: compile-sass
|
|
||||||
image: ellerbrock/alpine-sass
|
|
||||||
commands:
|
|
||||||
- mkdir -p css
|
|
||||||
- sassc scss/style.scss css/style.css
|
|
||||||
- name: build-resume
|
|
||||||
image: pink33n/html-to-pdf
|
|
||||||
commands:
|
|
||||||
- chrome-headless-render-pdf --chrome-binary=/usr/local/bin/chrome-wrapper --url file://$(pwd)/resume.html --pdf /resume-output/Resume-Danila-Fedorin.pdf --no-margins --include-background
|
|
||||||
volumes:
|
|
||||||
- name: resume-output
|
|
||||||
path: /resume-output
|
|
||||||
- name: upload-resume
|
|
||||||
image: eeacms/rsync
|
|
||||||
commands:
|
|
||||||
- eval `ssh-agent -s`
|
|
||||||
- echo "$CUSTOM_KEY" | ssh-add -
|
|
||||||
- mkdir -p ~/.ssh
|
|
||||||
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
|
|
||||||
- rsync -rv -e "ssh -p 22" /resume-output/Resume-Danila-Fedorin.pdf resume-drafter@danilafe.com:/home/resume-drafter/ --checksum
|
|
||||||
environment:
|
|
||||||
CUSTOM_KEY:
|
|
||||||
from_secret: resume_ssh_key
|
|
||||||
volumes:
|
|
||||||
- name: resume-output
|
|
||||||
path: /resume-output
|
|
||||||
14
build.sh
14
build.sh
@@ -1,14 +0,0 @@
|
|||||||
source $stdenv/setup
|
|
||||||
|
|
||||||
# Compile Sass sources and get resume file
|
|
||||||
mkdir build && cd build
|
|
||||||
mkdir css && sassc $src/scss/style.scss css/style.css
|
|
||||||
cp $src/resume.html resume.html
|
|
||||||
|
|
||||||
mkdir $out
|
|
||||||
|
|
||||||
# Save generated files
|
|
||||||
cp resume.html $out
|
|
||||||
mkdir $out/css && cp ./css/style.css $out/css
|
|
||||||
|
|
||||||
chromium --disable-gpu --headless --print-to-pdf="$out/Resume-Danila-Fedorin.pdf" "file://${pwd}/resume.html"
|
|
||||||
100
css/style.css
Normal file
100
css/style.css
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
@import url("https://fonts.googleapis.com/css?family=EB+Garamond|Raleway");
|
||||||
|
a {
|
||||||
|
color: #1dc868;
|
||||||
|
text-decoration: none; }
|
||||||
|
|
||||||
|
svg {
|
||||||
|
height: 1.2em; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
font-family: "Raleway";
|
||||||
|
line-height: 1.3em;
|
||||||
|
font-size: 14px; }
|
||||||
|
@media not print {
|
||||||
|
body {
|
||||||
|
max-width: 215.9mm;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding-top: 5px;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
box-shadow: 0px 0px 5px #dadada; } }
|
||||||
|
|
||||||
|
header {
|
||||||
|
text-align: center;
|
||||||
|
margin: auto;
|
||||||
|
margin-bottom: 10px; }
|
||||||
|
|
||||||
|
div.name {
|
||||||
|
font-size: 1.25em;
|
||||||
|
margin: 15px;
|
||||||
|
font-family: "Raleway", serif; }
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 1.25em;
|
||||||
|
font-family: "Raleway", serif;
|
||||||
|
font-weight: normal;
|
||||||
|
margin: 10px;
|
||||||
|
color: #1dc868; }
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 1.1em;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 0px; }
|
||||||
|
|
||||||
|
div.contact {
|
||||||
|
background-color: #36e281;
|
||||||
|
color: white;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center; }
|
||||||
|
|
||||||
|
div.contact-item {
|
||||||
|
padding: 10px;
|
||||||
|
padding-left: 20px;
|
||||||
|
padding-right: 20px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center; }
|
||||||
|
|
||||||
|
div.contact-content {
|
||||||
|
padding-left: 5px;
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
|
div.horizontal-list {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: horizontal; }
|
||||||
|
div.horizontal-list section, div.horizontal-list div {
|
||||||
|
flex-grow: 1; }
|
||||||
|
|
||||||
|
div.project-container {
|
||||||
|
flex-basis: 25%; }
|
||||||
|
div.project-container h2 {
|
||||||
|
display: inline;
|
||||||
|
margin: 0px; }
|
||||||
|
|
||||||
|
a.project-link {
|
||||||
|
color: black;
|
||||||
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
align-items: center; }
|
||||||
|
|
||||||
|
svg.project-link-icon {
|
||||||
|
height: 1em; }
|
||||||
|
|
||||||
|
main {
|
||||||
|
margin: auto;
|
||||||
|
max-width: 90%; }
|
||||||
|
|
||||||
|
div.section-content {
|
||||||
|
margin-left: 20px; }
|
||||||
|
|
||||||
|
div.position, div.project-container {
|
||||||
|
margin-bottom: 15px; }
|
||||||
|
|
||||||
|
div.position-location, div.project-quip {
|
||||||
|
color: #4d4c4c; }
|
||||||
|
|
||||||
|
section {
|
||||||
|
page-break-inside: avoid; }
|
||||||
|
section.page-padding {
|
||||||
|
padding-top: 15px; }
|
||||||
15
flake.nix
15
flake.nix
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11";
|
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs, flake-utils }:
|
|
||||||
flake-utils.lib.eachDefaultSystem (system:
|
|
||||||
{
|
|
||||||
defaultPackage = import ./package.nix {
|
|
||||||
pkgs = import nixpkgs { inherit system; };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
10
package.nix
10
package.nix
@@ -1,10 +0,0 @@
|
|||||||
{ pkgs, sass ? pkgs.sassc, wkhtmltopdf ? pkgs.wkhtmltopdf }:
|
|
||||||
pkgs.stdenv.mkDerivation {
|
|
||||||
name = "daniel-resume";
|
|
||||||
version = "0.1";
|
|
||||||
builder = ./build.sh;
|
|
||||||
buildInputs = [ sass wkhtmltopdf ];
|
|
||||||
src = ./.;
|
|
||||||
|
|
||||||
FONTCONFIG_FILE = pkgs.makeFontsConf { fontDirectories = []; };
|
|
||||||
}
|
|
||||||
291
resume.html
291
resume.html
@@ -1,20 +1,20 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<script src="https://unpkg.com/feather-icons"></script>
|
<script src="https://unpkg.com/feather-icons"></script>
|
||||||
<title>Resume - Daniel Fedorin</title>
|
<title>Resume - Danila Fedorin</title>
|
||||||
<link href="css/style.css" rel="stylesheet">
|
<link href="css/style.css" rel="stylesheet">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<div class="name">Daniel Fedorin</div>
|
<div class="name">Danila Fedorin</div>
|
||||||
<div class="contact">
|
<div class="contact">
|
||||||
<div class="contact-item">
|
<div class="contact-item">
|
||||||
<i data-feather="home" class="contact-content"></i>
|
<i data-feather="home" class="contact-content"></i>
|
||||||
<div class="contact-content">Corvallis, OR</div>
|
<div class="contact-content">5636 SW Avena Pl, Corvallis, OR, 97333</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="contact-item">
|
<div class="contact-item">
|
||||||
<i data-feather="phone" class="contact-content"></i>
|
<i data-feather="phone" class="contact-content"></i>
|
||||||
<div class="contact-content">(000) 000 0000</div>
|
<div class="contact-content">(503) 702 0929</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="contact-item">
|
<div class="contact-item">
|
||||||
<i data-feather="mail" class="contact-content"></i>
|
<i data-feather="mail" class="contact-content"></i>
|
||||||
@@ -23,89 +23,145 @@
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<section>
|
<div class="horizontal-list">
|
||||||
|
<section style="flex-basis: 55%;">
|
||||||
<h1>Education</h1>
|
<h1>Education</h1>
|
||||||
<div class="section-content">
|
<div class="section-content">
|
||||||
<em class="italic">Bachelor of Science</em>, Oregon State University, Major: Computer Science | Minor: Mathematics - Completed June 2020 • <em class="bold">4.0 GPA</em><br>
|
Oregon State University, Corvallis, OR <br>
|
||||||
<em class="italic">Master of Science</em>, Oregon State University, Computer Science - Expected June 2022 • <em class="bold">4.0 GPA</em>
|
<em>Bachelor of Science</em>, Computer Science, <br>
|
||||||
|
Expected June 2020 <br>
|
||||||
|
4.0 GPA
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<h1>Skills</h1>
|
<h1>Technical Skills</h1>
|
||||||
|
|
||||||
<div class="section-content">
|
<div class="section-content">
|
||||||
<em class="italic">Programming Languages:</em> C, C++, Haskell, Elm, Coq, Idris, Crystal, JavaScript, TypeScript, Kotlin, Java, Python, Nix, Haxe<br>
|
<em>Languages:</em> C, C++, Java, Kotlin, JavaScript, Haskell, Python, Haxe<br>
|
||||||
<em class="italic">Languages:</em> English (native), Russian (native), French (conversational, DELF B1 certification) <br>
|
<em>Operating Systems:</em> MacOS, Linux<br>
|
||||||
<em class="italic">Additional Skills:</em> Compiler design, formal verification, algorithms, low-level development.<br>
|
<em>Additional Skills:</em> Experience with compiler design, algorithm efficiency,
|
||||||
|
low-level development.<br>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
</div>
|
||||||
<section>
|
<section>
|
||||||
<h1>Projects</h1>
|
<h1>Projects</h1>
|
||||||
<div class="section-content">
|
<div class="section-content">
|
||||||
<!--
|
|
||||||
<div class="project-container">
|
<div class="project-container">
|
||||||
<a class="project-link" href="https://github.com/DanilaFe/abcs">
|
<a class="project-link" href="https://danilafe.com">
|
||||||
<h2>abcs</h2>
|
<h2>danilafe.com</h2>
|
||||||
<i data-feather="link" class="project-link-icon"></i>
|
<i data-feather="link" class="project-link-icon"></i>
|
||||||
</a> —
|
</a>
|
||||||
Calculator program with a complete embedded programming language.
|
<div class="project-quip">Blog containing a series on compiler development.</div>
|
||||||
</div> -->
|
<ul>
|
||||||
<!--
|
<li>Teaches compiler development from the bottom up using common technologies such as Flex,
|
||||||
<div class="project-container">
|
Bison and LLVM.</li>
|
||||||
<a class="project-link" href="https://github.com/DanilaFe/AdventOfCode-2020">
|
<li>Provides complete implementation of the compiler at each stage of the process,
|
||||||
<h2>aoc</h2>
|
encouraging experimentation and understanding.</li>
|
||||||
<i data-feather="link" class="project-link-icon"></i>
|
<li>Contains 25,000+ words in 9+ posts, each with an associated compiler version.</li>
|
||||||
</a> —
|
</li>
|
||||||
Solutions for Advent of Code 2020 problems, with select puzzles formalized using Coq.
|
|
||||||
</div> -->
|
|
||||||
<div class="project-container">
|
|
||||||
<a class="project-link" href="https://dev.danilafe.com/Web-Projects/blog-static/src/branch/master/code/compiler">
|
|
||||||
<h2>bloglang</h2>
|
|
||||||
<i data-feather="link" class="project-link-icon"></i>
|
|
||||||
</a> —
|
|
||||||
Compiler for a purely functional, lazily evaluated language explained in-depth on <a href="https://danilafe.com/blog/00_compiler_intro/">personal blog</a>.
|
|
||||||
</div>
|
</div>
|
||||||
<div class="project-container">
|
|
||||||
<a class="project-link" href="https://github.com/DanilaFe/maypop">
|
|
||||||
<h2>maypop</h2>
|
|
||||||
<i data-feather="link" class="project-link-icon"></i>
|
|
||||||
</a> —
|
|
||||||
Instructional implementation of a dependently typed functional programming language capable of formal proofs.
|
|
||||||
</div>
|
|
||||||
<!--
|
|
||||||
<div class="project-container">
|
|
||||||
<a class="project-link" href="https://github.com/DanilaFe/chalk">
|
|
||||||
<h2>chalk</h2>
|
|
||||||
<i data-feather="link" class="project-link-icon"></i>
|
|
||||||
</a> —
|
|
||||||
Compiler from a small imperative language into CHIP-8 bytecode.
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
<div class="project-container">
|
<div class="project-container">
|
||||||
<a class="project-link" href="https://github.com/DanilaFe/pegasus">
|
<a class="project-link" href="https://github.com/DanilaFe/pegasus">
|
||||||
<h2>pegasus</h2>
|
<h2>pegasus</h2>
|
||||||
<i data-feather="link" class="project-link-icon"></i>
|
<i data-feather="link" class="project-link-icon"></i>
|
||||||
</a> —
|
</a>
|
||||||
LALR parser generator currently supporting the C and Crystal languages.
|
<div class="project-quip">LALR parser generator for the C and Crystal languages.</div>
|
||||||
|
<ul>
|
||||||
|
<li>Provides a set of programs for creating LALR(1) parsers.</li>
|
||||||
|
<li>Supports the C and Crystal languages, exposing an API for the implementation of parsers for
|
||||||
|
other languages.</li>
|
||||||
|
<li>Generates parsers with diverse functionalities, from building parse trees to using
|
||||||
|
semantic actions.</li>
|
||||||
|
<li>Defines a generic syntax for semantic actions to maximize code reuse.</li>
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
<div class="project-container">
|
||||||
|
<a class="project-link" href="https://github.com/DanilaFe/chalk">
|
||||||
|
<h2>chalk</h2>
|
||||||
|
<i data-feather="link" class="project-link-icon"></i>
|
||||||
|
</a>
|
||||||
|
<div class="project-quip">Compiler from a small language into CHIP-8 bytecode.</div>
|
||||||
|
<ul>
|
||||||
|
<li>Employs a Crystal implementation of parser combinators to parse language.</li>
|
||||||
|
<li>Compiles code to intermediate assembly language, then to CHIP-8 bytecode.</li>
|
||||||
|
<li>Supports in-text representation of sprites for easy editing.</li>
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
<div class="project-container">
|
||||||
|
<a class="project-link" href="https://github.com/DanilaFe/abcs">
|
||||||
|
<h2>abcs</h2>
|
||||||
|
<i data-feather="link" class="project-link-icon"></i>
|
||||||
|
</a>
|
||||||
|
<div class="project-quip">Calculator program with a complete embedded programming language.</div>
|
||||||
|
<ul>
|
||||||
|
<li>Interfaces with GNU MPFR to perform arbitrary precision aritmetic.</li>
|
||||||
|
<li>Provides complete language supporting parametric polymorphism, partial function
|
||||||
|
application and higher order functions.</li>
|
||||||
|
<li>Uses hand-written parser to allow for the definition of arbitrary operators
|
||||||
|
at runtime.</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!--
|
|
||||||
<div class="project-container">
|
<div class="project-container">
|
||||||
<a class="project-link" href="https://github.com/DanilaFe/Scylla">
|
<a class="project-link" href="https://github.com/DanilaFe/Scylla">
|
||||||
<h2>scylla</h2>
|
<h2>scylla</h2>
|
||||||
<i data-feather="link" class="project-link-icon"></i>
|
<i data-feather="link" class="project-link-icon"></i>
|
||||||
</a> —
|
</a>
|
||||||
Elm-based purely functional front end for the Matrix chat protocol.
|
<div class="project-quip">Elm-based purely functional front end for the Matrix chat protocol.</div>
|
||||||
|
<ul>
|
||||||
|
<li>Defines a purely functioal reactive web interface using the Model-Update-View architecture.</li>
|
||||||
|
<li>Employs lazy evaluation to optimize common operations.</li>
|
||||||
|
<li>Implements part of the Matrix standard for open source, decentralized communication.</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
-->
|
</div>
|
||||||
<div class="project-container">
|
</section>
|
||||||
<a class="project-link" href="https://github.com/DanilaFe/matrix-highlight">
|
<section class="page-padding">
|
||||||
<h2>matrix-highlight</h2>
|
<h1>Technical Experience</h1>
|
||||||
<i data-feather="link" class="project-link-icon"></i>
|
|
||||||
</a> —
|
<div class="section-content">
|
||||||
Tool for collaborative, decentralized, and federated web annotation based on the Matrix protocol.
|
<div class="position">
|
||||||
|
<h2>Research Assistant</h2>
|
||||||
|
<div class="position-location">Oregon State University | Spring 2018 - Present</div>
|
||||||
|
<ul>
|
||||||
|
<li>Devised and implemented language to explain behavior of spreadsheets to new users.</li>
|
||||||
|
<li>Developed tooling in Haskell to verify, generate, and debug the explanation language.</li>
|
||||||
|
<li>Contributed to research paper published to the International Conference on Generative Programming.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="position">
|
||||||
|
<h2>Lead Programmer</h2>
|
||||||
|
<div class="position-location">Northwest Advanced Programming Workshop | Summer 2017</div>
|
||||||
|
<ul>
|
||||||
|
<li>Designed and implemented a desktop calculator application with a focus on usability and feature-completeness.</li>
|
||||||
|
<li>Worked on a variety of components, including parsing input through a custom regular expression engine, evaluating expressions through Taylor Series, and UI design.</li>
|
||||||
|
<li>Profiled and debugged application in order to find inefficiencies, reducing computation time by 60%.</li>
|
||||||
|
<li>Led a small team using the git version control system.</li>
|
||||||
|
<li>Presented progress to supervisor and other participating teams.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="position">
|
||||||
|
<h2>Participant</h2>
|
||||||
|
<div class="position-location">Oregon Game Project Challenge | Spring 2016 and 2017 </div>
|
||||||
|
<ul>
|
||||||
|
<li>Worked in a team to complete video game to be presented at main event.</li>
|
||||||
|
<li>Created a game engine from scratch using Entity Component Systems architecture.</li>
|
||||||
|
<li>Used OpenGL shaders and normal mapping to create 2D-shadow system.</li>
|
||||||
|
<li>Developed interaction between physical components (microcontrollers) and the video game for multi-user cooperation.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="position">
|
||||||
|
<h2>Finalist</h2>
|
||||||
|
<div class="position-location">Google Code In, Online Competition | Winter 2016</div>
|
||||||
|
<ul>
|
||||||
|
<li>Worked with large open-source project written in C.</li>
|
||||||
|
<li>Interacted with other developers to set goals, merge changes, and run tests.</li>
|
||||||
|
<li>Improved quality of source code, reduced code repetition, and fixed bugs.</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -113,120 +169,9 @@
|
|||||||
<h1>Publications</h1>
|
<h1>Publications</h1>
|
||||||
|
|
||||||
<div class="section-content">
|
<div class="section-content">
|
||||||
Divya Bajaj, Martin Erwig, <em class="bold">Daniel Fedorin</em>: <em class="italic">A Visual Notation for Succinct Program Traces (journal paper)</em>, COLA 2023<br>
|
Co-Author: Jácome Cunha, Mihai Dan, Martin Erwig, Danila Fedorin, Alex Grejuc: <em>Explaining spreadsheets with spreadsheets (short paper).</em> GPCE 2018: 161-167
|
||||||
Divya Bajaj, Martin Erwig, <em class="bold">Daniel Fedorin</em>, Kai Gay: <em class="italic">Adaptable Traces for Program Explanations</em>, APLAS 2021<br>
|
|
||||||
Divya Bajaj, Martin Erwig, <em class="bold">Daniel Fedorin</em>, Kai Gay: <em class="italic">A Visual Notation for Succinct Program Traces</em>, VL/HCC 2021<br>
|
|
||||||
Jácome Cunha, Mihai Dan, Martin Erwig, <em class="bold">Daniel Fedorin</em>, Alex Grejuc: <em class="italic">Explaining spreadsheets with spreadsheets (short paper).</em><br>
|
|
||||||
<span style="display: inline-block; width: 20px"></span>GPCE 2018: 161-167
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
|
||||||
<h1>Work Experience</h1>
|
|
||||||
|
|
||||||
<div class="section-content">
|
|
||||||
<div class="position">
|
|
||||||
<h2>Programming Language Engineer, <a class="project-link" href="https://chapel-lang.org">Chapel<i data-feather="link" class="project-link-icon"></i></a></h2>
|
|
||||||
<div class="position-location">Hewlett Packard Enterprise | Summer 2022 - Present</div>
|
|
||||||
<ul>
|
|
||||||
<li>Contributed to development of <em class="bold">LLVM</em>-based distributed programming language written in <em class="bold">C++</em>.</li>
|
|
||||||
<li>Investigated and implemented initial <em class="bold">AMD GPU programming support</em> using <em class="bold">Clang</em> and <em class="bold">ROCm</em> tooling.</li>
|
|
||||||
<li>Revamped compiler error messages by building a new type-safe error reporting API.</li>
|
|
||||||
<li>Designed, launched, and authored articles for the <a href="https://chapel-lang.org/blog/posts/welcome">Chapel language technical blog</a> built with <em class="bold">Hugo</em>,
|
|
||||||
<em class="bold">HTML</em>, and <em class="bold">Sass</em>.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="position">
|
|
||||||
<h2>Research Assistant, Programming Language Theory</h2>
|
|
||||||
<div class="position-location">Oregon State University, Corvallis, OR | Spring 2018 - Summer 2022</div>
|
|
||||||
<ul>
|
|
||||||
<li>Formalized denotational and operational semantics of new <em class="bold">explanation-oriented programming languages.</em></li>
|
|
||||||
<!-- <li>Devised and implemented language to explain behavior of spreadsheets to new users.</li> -->
|
|
||||||
<li>Developed tooling in <em class="bold">Haskell</em> to interpret, verify, generate, and debug programming languages.</li>
|
|
||||||
<li>Contributed to <em class="bold">research papers</em> published to the GPCE and VL/HCC.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="position">
|
|
||||||
<h2>Front-End Intern, <a class="project-link" href="https://github.com/vector-im/hydrogen-web">Hydrogen<i data-feather="link" class="project-link-icon"></i></a></h2>
|
|
||||||
<div class="position-location">Element.io | June 2021 - September 2021</div>
|
|
||||||
<ul>
|
|
||||||
<li>Spearheaded migration of codebase to <em class="bold">TypeScript</em>, improving documentation and discovering hidden bugs.</li>
|
|
||||||
<li>Leveraged advanced type system features to precisely specify nontrivial program properties.</li>
|
|
||||||
<li>Developed a mocking system to help specify and test corner cases in a <em class="bold">distributed communication system</em>.</li>
|
|
||||||
<li>Independently implemented user-facing features including offline-first replies and sanitized HTML rendering.</li>
|
|
||||||
<!-- <li>Engaged in <em class="bold">open-source development</em>, interacting with community to respond to bug reports and feature requests.</li> -->
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="position">
|
|
||||||
<h2>Undergraduate Teaching Assistant, Programming Language Theory, CS 381</h2>
|
|
||||||
<div class="position-location">Oregon State University, Corvallis, OR | Winter 2020 - Spring 2020</div>
|
|
||||||
<ul>
|
|
||||||
<li>Engaged in weekly question-and-answer sessions regarding course topics.</li>
|
|
||||||
<li>Aided students in implementing a final project in the form of a <em class="bold">custom programming language</em>.</li>
|
|
||||||
<li>Proctored <em class="bold">quizzes and exams</em> for over 200 students.</li>
|
|
||||||
<li>Organized <em class="bold">independent review sessions</em> attended by over 70 students.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<h1>Additional Experience</h1>
|
|
||||||
|
|
||||||
<div class="section-content">
|
|
||||||
<div class="position">
|
|
||||||
<h2>Technical Writer</h2>
|
|
||||||
<div class="position-location">Independent | Spring 2015 - Present</div>
|
|
||||||
<ul>
|
|
||||||
<li>Designed and published website currently live at <a href="https://danilafe.com">danilafe.com</a>.</li>
|
|
||||||
<li>Authored blog posts on topics spanning data structures, web development, programming languages, and compilers.</li>
|
|
||||||
<li>Formalized and described solutions to select Advent of Code problems using the <em class="bold">Coq proof assistant</em>.</li>
|
|
||||||
<li>Created <em class="bold">14-part series</em> on compiler development, walking readers through lexing, parsing, compilation using LLVM,
|
|
||||||
garbage collection, and polymorphic type checking.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="position">
|
|
||||||
<h2>Lead Programmer</h2>
|
|
||||||
<div class="position-location">Northwest Advanced Programming Workshop, Portland, OR | Summer 2017</div>
|
|
||||||
<ul>
|
|
||||||
<li>Led a small team using the <em class="bold">git version control system</em>.</li>
|
|
||||||
<li>Designed and implemented a <em class="bold">desktop calculator</em> application with a focus on usability and feature-completeness.</li>
|
|
||||||
<li>Worked on a variety of components, including parsing input through a custom regular expression engine, evaluating expressions through Taylor Series, and UI design.</li>
|
|
||||||
<li>Profiled and debugged application using <em class="bold">VisualVM</em> in order to find inefficiencies, reducing computation time by 60%.</li>
|
|
||||||
<!-- <li>Exercised public speaking and communication skills by reporting progress to supervisor and presenting to other teams.</li> -->
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<div class="position">
|
|
||||||
<h2>Game Developer</h2>
|
|
||||||
<div class="position-location">Oregon Game Project Challenge, Portland, OR | Spring 2016 and 2017 </div>
|
|
||||||
<ul>
|
|
||||||
<li>Worked in a team to complete video game to be presented at main event.</li>
|
|
||||||
<li>Created a game engine from scratch using <em class="bold">Entity Component Systems</em> architecture.</li>
|
|
||||||
<li>Used <em class="bold">OpenGL shaders</em> and normal mapping to create 2D-shadow system.</li>
|
|
||||||
<li>Developed novel interaction between physical components (<em class="bold">microcontrollers</em>) and the video game for multi-user cooperation.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<!--
|
|
||||||
<section>
|
|
||||||
<h1>Honors and Awards</h1>
|
|
||||||
<div class="section-content">
|
|
||||||
<ul>
|
|
||||||
<li><em class="italic">Drucilla Shepard Smith Award</em> — Awarded to students maintaining a GPA of 4.0 while attending Oregon State University.</li>
|
|
||||||
<li><em class="italic">Honor Roll (all terms)</em> — Awarded to students maintaining a full credit load and a GPA above 3.5.</li>
|
|
||||||
<li><em class="italic">International Baccalaureate Diploma Scholarship</em> — $1,000/term scholarship awarded to recipients of the IB Diploma.</li>
|
|
||||||
<li><em class="italic">Finalist</em> — Google Code-In 2016, online competition in which participants
|
|
||||||
complete tasks for open-source projects.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
-->
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
100
scss/style.scss
100
scss/style.scss
@@ -1,22 +1,14 @@
|
|||||||
@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,700;1,400;1,700&family=Raleway:wght@400;600;700&display=swap');
|
@import url('https://fonts.googleapis.com/css?family=EB+Garamond|Raleway');
|
||||||
|
|
||||||
$text-font: 'Raleway';
|
$text-font: 'Raleway';
|
||||||
$big-font: 'Raleway';
|
$big-font: 'Raleway';
|
||||||
$color-main: #36e281;
|
$color-main: #36e281;
|
||||||
$color-secondary: $color-main;
|
$color-secondary: darken($color-main, 10%);
|
||||||
$color-link: black;
|
$color-link: $color-secondary;
|
||||||
$color-text: black;
|
$color-text: black;
|
||||||
|
|
||||||
@media print {
|
|
||||||
@page {
|
|
||||||
margin: 0 0 0 0;
|
|
||||||
size: 8.5in 11in;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $color-link;
|
color: $color-link;
|
||||||
border-bottom: solid 2px $color-main;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,28 +16,16 @@ svg {
|
|||||||
height: 1.2em;
|
height: 1.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
|
||||||
font-size: 11.5px;
|
|
||||||
|
|
||||||
@media not print {
|
|
||||||
background-color: #eaeaea;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: white;
|
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font-family: $text-font;
|
font-family: $text-font;
|
||||||
line-height: 1.225em;
|
line-height: 1.3em;
|
||||||
font-variant-ligatures: none;
|
font-size: 14px;
|
||||||
|
|
||||||
@media not print {
|
@media not print {
|
||||||
width: 8.5in;
|
max-width: 215.9mm;
|
||||||
height: 11in;
|
margin-top: 10px;
|
||||||
overflow: auto;
|
|
||||||
margin-top: 20px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
@@ -56,54 +36,38 @@ body {
|
|||||||
header {
|
header {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
margin-top: 20px;
|
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
|
||||||
width: 90%;
|
|
||||||
margin: auto;
|
|
||||||
background-color: $color-main;
|
|
||||||
border: none;
|
|
||||||
border-radius: 1.5px;
|
|
||||||
height: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.name {
|
div.name {
|
||||||
font-size: 1.7rem;
|
font-size: 1.25em;
|
||||||
margin: 10px;
|
margin: 15px;
|
||||||
font-family: $big-font, serif;
|
font-family: $big-font, serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 1.25rem;
|
font-size: 1.25em;
|
||||||
font-family: $big-font, serif;
|
font-family: $big-font, serif;
|
||||||
font-weight: 600;
|
font-weight: normal;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
margin-bottom: 2.5px;
|
color: $color-secondary;
|
||||||
display: inline-block;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 1.2rem;
|
font-size: 1.1em;
|
||||||
font-weight: 400;
|
font-weight: normal;
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
margin-top: 0.2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
padding-left: 25px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
div.contact {
|
div.contact {
|
||||||
|
background-color: $color-main;
|
||||||
|
color: white;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.contact-item {
|
div.contact-item {
|
||||||
padding: 5px;
|
padding: 10px;
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
padding-right: 20px;
|
padding-right: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -126,7 +90,6 @@ div.horizontal-list {
|
|||||||
|
|
||||||
div.project-container {
|
div.project-container {
|
||||||
flex-basis: 25%;
|
flex-basis: 25%;
|
||||||
margin-right: 10px;
|
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
display: inline;
|
display: inline;
|
||||||
@@ -136,19 +99,13 @@ div.project-container {
|
|||||||
|
|
||||||
a.project-link {
|
a.project-link {
|
||||||
color: $color-text;
|
color: $color-text;
|
||||||
border: none;
|
font-weight: bold;
|
||||||
display: inline-flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
svg.project-link-icon {
|
svg.project-link-icon {
|
||||||
height: 0.9rem;
|
height: 1em;
|
||||||
width: 0.9rem;
|
|
||||||
margin-left: 0.25rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main {
|
main {
|
||||||
@@ -160,23 +117,18 @@ div.section-content {
|
|||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.position {
|
div.position, div.project-container {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 15px;
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-bottom: 0px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
div.position-location {
|
div.position-location, div.project-quip {
|
||||||
color: lighten($color-text, 30%);
|
color: lighten($color-text, 30%);
|
||||||
}
|
}
|
||||||
|
|
||||||
section {
|
section {
|
||||||
page-break-inside: avoid;
|
page-break-inside: avoid;
|
||||||
}
|
|
||||||
|
|
||||||
em.bold {
|
&.page-padding {
|
||||||
font-style: normal;
|
padding-top: 15px;
|
||||||
font-weight: 600;
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user