From 7dccf6e8684f767b6e377d627b36ccf493947f1e Mon Sep 17 00:00:00 2001 From: "Alex Xu (Hello71)" Date: Sun, 3 Oct 2021 15:03:42 -0400 Subject: Initial commit --- resume/resume.css | 241 +++++++++++++++++++++++++++++++++++++++++++++++++++++ resume/resume.html | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++ resume/resume.js | 51 ++++++++++++ 3 files changed, 522 insertions(+) create mode 100644 resume/resume.css create mode 100644 resume/resume.html create mode 100644 resume/resume.js (limited to 'resume') diff --git a/resume/resume.css b/resume/resume.css new file mode 100644 index 0000000..04c8431 --- /dev/null +++ b/resume/resume.css @@ -0,0 +1,241 @@ +@font-face { + font-family: "EB Garamond"; + src: url(EBGaramond-Regular.subset.woff2); +} + +@font-face { + font-family: "EB Garamond"; + font-weight: 500; + src: url(EBGaramond-Medium.subset.woff2); +} + +@font-face { + font-family: "EB Garamond"; + font-style: italic; + src: url(EBGaramond-Italic.subset.woff2); +} + +* { + box-sizing: border-box; +} +body { + margin: .8em auto; + max-width: 90%; + width: 50em; + position: relative; + left: clamp(-2em,calc(25em - 45%),0em); + display: grid; + grid-template-columns: auto auto; + + font-family: "EB Garamond", serif; + font-size: 16px; + line-height: 1.38; + overflow-wrap: break-word; + text-rendering: optimizeLegibility; + background: #fff; + color: #333; +} + +address, .right { + align-self: center; +} +.left { + padding-right: .9rem; + text-align: right; + color: #246d84; +} +.right { + border-left: solid 3px #246d84; + padding: .2rem 0 0 1rem; +} +/* firefox prints grid margin wrong */ +.gap { + margin-top: .8rem; + grid-column: 1/-1; +} +.entry-header > :nth-child(1) { + flex: 60%; + max-width: max-content; + margin-right: auto; +} +.taddr { + grid-row: 1; + align-self: center; +} +b { + font-weight: 500; + font-size: 1.1em; +} +.date { + text-align: right; + margin-left: 1.2em; + max-width: max-content; + flex: 10 0 auto; + width: min-content; +} +.title { + line-height: 1.22; +} +.entry-header { + display: flex; +} +section + section { + margin-top: .7em; +} +address, .h1s { + color: #666; +} +address { + font-size: .9em; +} +.icon { + vertical-align: middle; + margin-bottom: .5ex; +} +h1, h2, h3, h4, p, ul { + margin: 0; +} +h1, h2, h3, h4 { + font-weight: normal; +} +h1 { + font-size: 3em; + margin-top: -.5ex; +} +h4 { + display: inline; +} +ul { + padding: 0; + list-style: none; +} +ul:not(.fakelist) > li { + margin-left: .1em; + /* separate list-style-type for safari <14.1 support */ + list-style-type: '◦ '; + list-style-image: url("data:image/svg+xml,"); + list-style-position: inside; +} +a { + color: #06c; + text-decoration: none; +} +a:visited { + color: #0f00b0; +} +.date-punct, .hide, .printcol { + display: none; +} +.nb { + display: inline-block; +} +abbr { + text-decoration: none; +} +.h1s { + font-size: 1.4em; + font-style: italic; +} +@media (min-width: 25em) { + .left-heavy-columns { + columns: 2 14em; + margin-right: -1.4em; + } +} +@media (max-width: 30em) { + body { + display: block; + } + h1 { + margin-bottom: -.2ex; + } + .h1s { + margin-bottom: .6ex; + } + .title, .left address { + text-align: center; + } + .left address { + columns: 2; + } + .left { + text-align: center; + padding: 0; + min-width: 0; + } + .left:not(.taddr) { + border-bottom: solid; + margin-bottom: .2rem; + } + .gap { + margin-bottom: 1rem; + } + .right { + border-left: none; + padding: 0; + } + .title { + padding: 0; + } + .nb { + display: initial; + } +} +@media (max-width: 21em) { + header, .entry-header { + display: block; + } + .date { + text-align: left; + margin: 0; + width: auto; + } + .date-punct { + display: inline; + } +} +@media print { + .noprint { + display: none; + } + body { + position: static; + margin: 0; + padding: 0; + width: 100%; + max-width: 100%; + font-size: 13px; + line-height: 1.28; + color: #000; + -webkit-print-color-adjust: exact; + } + /* workaround: safari doesn't support css columns in print */ + .left-heavy-columns { + display: none; + } + .printcol { + display: inline-block; + } + section + section { + margin-top: .6em; + } + /* override print color for firefox */ + address, .h1s { + color: transparent; + text-shadow: 0 0 #555; + } + address svg { + color: #555; + } +} +@media (prefers-contrast: high) { + .h1s, address { + color: #555; + } +} +@media (prefers-contrast: low) { + body { + background: #ccc; + } +} +@page { margin: 7mm 26mm 7mm 18mm; } diff --git a/resume/resume.html b/resume/resume.html new file mode 100644 index 0000000..982ded8 --- /dev/null +++ b/resume/resume.html @@ -0,0 +1,230 @@ + + + + + Alex Xu's Resume + + + + + + + + + +
+

Alex Xu

+

Generalist software developer

+
+
+
+ +
+
+
+

Education

+
+
+
+

Lassonde School of Engineering, B.Sc., Hons. Computer Science, York University, GPA: 7.7/9.0 (A).

+
Sept. 2016–May 2020:
+
+
    +
  • Advanced Object Oriented Programming (A+)
  • +
  • Design and Analysis of Algorithms (A+)
  • +
  • Fundamentals of Data Structures (A+)
  • +
  • Computer Architecture (A)
  • +
  • Database Management Systems (A+)
  • +
  • Applied Cryptography (A+)
  • +
  • Mathematics of Cryptography (A)
  • +
  • Network Security (A+)
  • +
+
    +
  • Advanced Object Oriented Programming (A+)
  • +
  • Design and Analysis of Algorithms (A+)
  • +
  • Fundamentals of Data Structures (A+)
  • +
  • Computer Architecture (A)
  • +
+
    +
  • Database Management Systems (A+)
  • +
  • Applied Cryptography (A+)
  • +
  • Mathematics of Cryptography (A)
  • +
  • Network Security (A+)
  • +
+
+
+
+

Work

+
+
+
+

Ethica Channel Enablement Inc, Network Engineer.

+
Dec. 2018–Oct. 2019:
+
+

Developed several core projects and provided extensive consulting on C, Linux, git, and networking.

+
    +
  • built a Buildroot-based minimal Linux infrastructure for the launch of a multi-link VPN product
  • +
  • created a fully automated high-speed operating system installer for x86 systems using BusyBox sh
  • +
  • created a tool for remote Linux in-place replacement using POSIX sh and BusyBox
  • +
  • developed a GitLab CI process for generating the deployable image
  • +
+
+
+
+

York University, Undergraduate Student Research Award researcher.

+
May–Aug. 2018:
+
+

Co-developed a Django web platform for worldwide crowdsourced hydrographic data collaboration.

+
+
+
+

York University, Teaching assistant.

+
June–July 2017:
+
+

Taught lab sessions for 48-student Android/web development course.

+
+
+
+
+

Community

+
+ +
+
+
+
+
+

Alpine Linux

+
March 2020–present:
+
+

Reported, documented, and contributed fixes for issues including Operation not permitted in Docker, sh: write error: Invalid argument, and Raspberry Pi doesn't boot, 7 blinks. Proposed changes including -fno-plt for x86 and x86_64, compressing debuginfo, and reconsidering -Os.

+
+
+
+

libglvnd

+
September 2021:
+
+

Implemented correct global-dynamic TLS support, fixing musl compatibility.

+
+
+
+

Wine

+
July 2021:
+
+

Implemented copy_file_range support, shrinking Wine prefixes from 200 MB to less than 1 MB.

+
+
+
+

Linux kernel

+
2012–present:
+
+

Reported issues and submitted fixes: lkml, linuxlists. Diagnosed Cargo issue 9739 to a long-standing kernel bug, and fixed the underlying issue, resolving a deadlock in GNU Make and similar jobservers.

+
+
+
+

QEMU

+
December 2020:
+
+

Discovered and reported an issue allowing full host device access from guests with virtiofsd enabled.

+
+
+
+

wfs

+
June 2020:
+
+

Built a concurrent Python web font subsetter with automatic pixel-perfect verification.

+
+
+
+

cgit-syntax-highlighting

+
March 2020:
+
+

Built a concurrent Python pygments microservice, reducing TTFB from 1.1s to 0.15s on cgit.alxu.ca. Improved portability and security and reduced LOC by 66% by switching from http.server to aiohttp.

+
+
+
+

udpastcp

+
July 2016:
+
+

Built a C tunnel to simulate datagrams using TCP packets, fixing TCP-over-TCP overhead.

+
+
+
+

Dwarf Therapist

+
Aug. 2014–Sept. 2017:
+
+

Implemented cross-bit ptrace, migrated from qmake to CMake, and refactored code.

+
+
+
+

Simple Registry Editor

+
Sept. 2008:
+
+

Built a minimal .NET registry editor.

+
+
+
+

Personal

+
+
+
+

Resume

+
June 2020:
+
+

Rewrote my resume from LaTeX to modern web standards:

+
    +
  • significantly improved mobile-friendliness and blind accessibility using standard HTML and CSS
  • +
  • reduced transfer size from 390 kB to 30 kB using aggressive inlining and font subsetting
  • +
  • optimized loading time by minimizing size and reducing round trips using HTTP/2 server push
  • +
+
+
+
+

Skills

+
+

Alpine, Debian Linux; FreeBSD; Docker; Git; NGINX; WireGuard; TCP/IP; HTTP(S); DNS; SSH

+
+

Programming

+
+

C; C++; Go; Python; bash, POSIX sh; GNU make; HTML; CSS; JavaScript; SQL

+
+ + + diff --git a/resume/resume.js b/resume/resume.js new file mode 100644 index 0000000..3f33976 --- /dev/null +++ b/resume/resume.js @@ -0,0 +1,51 @@ +(function(w, d, a){ + 'use strict'; + if (d.documentMode) + ie.style.display = "block"; + else + ie.parentNode.removeChild(ie); + const css = d.styleSheets[0]; + if (w.safari) { + css.insertRule("@page{margin:10mm}", css.cssRules.length); + css.insertRule("@media print{body{margin:-2mm 0 -2mm 0;padding:0 15mm 0 7mm}}", css.cssRules.length); + } + else if (w.chrome) + css.insertRule("@page{margin-top:auto;margin-bottom:auto}", css.cssRules.length); + let t, p = []; + const f = () => { + clearTimeout(t); + navigator.sendBeacon('/analytics', new Blob([JSON.stringify(p)], {type: 'application/json'})); + p = []; + }; + const q = (kind, details) => { + clearTimeout(t); + p.push({created_ts: Date.now(), kind: kind, details: details}); + t = setTimeout(f, 2000); + }; + q('l', ''); + d[a]('visibilitychange', () => { + const vs = d.visibilityState; + q('v', vs); + if (vs === 'hidden') + f(); + }); + d[a]('click', e => { + const a = e.target.closest('a'); + if (a) + q('c', a.href); + }); + w[a]('beforeprint', () => { + for (let el of d.getElementsByTagName('a')) { + const h = el.href.replace(/javascript:location=(.*);void 0/, '$1'); + el.setAttribute('data-href', el.href); + if (h != el.href) el.href = eval(h); + else el.href = "https://alxu.ca/analytics?url=" + el.href.replace(/%/g, '%25').replace(/&/g, '%26').replace(/;/g, '%3B'); + } + }); + w[a]('afterprint', function () { + for (let el of d.getElementsByTagName('a')) { + el.href = el.getAttribute('data-href'); + el.removeAttribute('data-href'); + } + }); +}(window, document, 'addEventListener')); -- cgit v1.2.3-54-g00ecf