From 67ecb5ddb5a2967a643354b015e33a1634124bcb Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Wed, 7 Sep 2022 11:33:10 -0400 Subject: [PATCH 01/13] Copy resume CSS --- .gitignore | 2 + assets/sass/main.scss | 337 ++++++++---------------------- layouts/partials/base/header.html | 2 +- 3 files changed, 91 insertions(+), 250 deletions(-) diff --git a/.gitignore b/.gitignore index 08f06d9..12c2ae9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ public/ resources/_gen/ themes/base16* +*.pdf + commit-msg.txt .hugo_build.lock static/server-apps.json diff --git a/assets/sass/main.scss b/assets/sass/main.scss index 17a5425..0dbf6d0 100644 --- a/assets/sass/main.scss +++ b/assets/sass/main.scss @@ -2,14 +2,10 @@ // base colors {{{ // -$base00: #2d2d2d; -$base01: #393939; $base02: #515151; $base03: #747369; $base04: #a09f93; $base05: #d3d0c8; -$base06: #e8e6df; -$base07: #f2f0ec; $base-red: #f2777a; $base-orange: #f99157; $base-yellow: #ffcc66; @@ -19,6 +15,13 @@ $base-blue: #6699cc; $base-violet: #cc99cc; $base-dark-orange: #d27b53; +/* .base00 { color: #2d2d2d; } +.base01 { color: #393939; } +.base02 { color: #515151; } +.base03 { color: #747369; } +.base04 { color: #a09f93; } +.base06 { color: #e8e6df; } +.base07 { color: #f2f0ec; } */ .base08 { color: $base-red; } .base09 { color: $base-orange; } .base0a { color: $base-yellow; } @@ -35,7 +38,6 @@ $base-dark-orange: #d27b53; // $max-page-width: 52em; $max-page-width: 45em; $phone-width: 800px; -$vert-phone-width: 500px; @mixin side-padding-rem($n) {// {{{ padding-left: $n * 1rem; @@ -88,23 +90,14 @@ $vert-phone-width: 500px; } }// }}} -@mixin a-no-underline() {// {{{ - a { - text-decoration: none; - &:hover { - text-decoration: none; - } - } -}// }}} - // }}} mixins // // general elements {{{ // -$background-color: #2d2d2d; -$color: #f2f0ec; -// $background-color: white; -// $color: black; +// $background-color: #2d2d2d; +// $color: #f2f0ec; +$background-color: white; +$color: black; body { margin: 0; @@ -112,7 +105,8 @@ body { color: $color; line-height: 1.5; // font-size: 100%; - font-size: 15px; + // font-size: 15px; + font-size: 20px; /* font-family: 'Source Code Pro', monospace; */ font-family: 'Hack', monospace; display: flex; @@ -214,7 +208,6 @@ footer { position: relative; padding-right: $side-padding; // padding-right: .9em; - @include a-no-underline(); img { height: 1.5em; @@ -256,22 +249,22 @@ p { margin-bottom: 1rem; } -h1 { - font-size: 2rem; +// h1 { + // font-size: 2rem; - @media (max-width: $phone-width) { - font-size: 1.75rem; - } -} -h2 { - font-size: 1.5rem; + // @media (max-width: $phone-width) { + // font-size: 1.75rem; + // } +// } +// h2 { + // font-size: 1.5rem; - @media (max-width: $phone-width) { - font-size: 1.4rem; - } -} + // @media (max-width: $phone-width) { + // font-size: 1.4rem; + // } +// } h3 { font-size: 1.25rem } -h4 { font-size: 1rem } +// h4 { font-size: 1rem } h5 { font-size: .875rem } h6 { font-size: .75rem } @@ -486,25 +479,31 @@ header {// {{{ #print-icon {// {{{ float: right; + display: none; img { - height: 2em !important; - position: absolute; + height: 1.75em; + position: relative; top: 1em; } }// }}} #contact-info {// {{{ @include side-margin-em(0); - @include side-padding-rem(0); // @include vert-padding-rem(0.5); @include a-color($base-sky-blue); - width: 100%; - // @media (min-width: 1200px) { - // .container{ - // min-width: $max-page-width; - // } - // } + // min-width: $max-page-width; + @media (min-width: 1200px) { + .container{ + min-width: $max-page-width; + } + } + a {// {{{ + text-decoration: none; + &:hover { + text-decoration: none; + } + }// }}} font-size: .9em; @@ -531,11 +530,11 @@ header {// {{{ margin-left: 5px; // position: relative; // left: -8px; - @media (max-width: $phone-width) { - // display: none; - // font-size: 10px; - font-size: .8em; - } + // @media (max-width: $phone-width) { + // // display: none; + // // font-size: 10px; + // font-size: .8em; + // } } }// }}} @@ -550,45 +549,44 @@ header {// {{{ h1 {// {{{ color: $base-orange; - margin-top: 1rem; + margin-top: 1.3rem; - @media (max-width: $phone-width) { - margin-top: .75rem; - } + // @media (max-width: $phone-width) { + // margin-top: .75rem; + // } }// }}} h2 {// {{{ color: $base-orange; margin-top: .5rem; - @media (max-width: $phone-width) { - font-size: 1.2em; - margin-top: .75rem; - } + // @media (max-width: $phone-width) { + // font-size: 1.2em; + // margin-top: .75rem; + // } }// }}} h4 {// {{{ color: $base-yellow; margin-top: .5rem; - @media (max-width: $phone-width) { - font-size: 1.2em; - margin-top: .75rem; - } + // @media (max-width: $phone-width) { + // font-size: 1.2em; + // margin-top: .75rem; + // } }// }}} .date {// {{{ - padding-top: .8em; float: right; color: $base03; - @media (max-width: $phone-width) { - padding-top: 0em; - } + // @media (max-width: $phone-width) { + // padding-top: 0em; + // } }// }}} #projects {// {{{ - h1 { - margin-bottom: 3px; - } + // // h1 { + // // margin-bottom: 3px; + // // } .project {// {{{ @include vert-padding-rem(.2); @@ -602,6 +600,10 @@ header {// {{{ height: 1.2em; } + .project-header { + margin-bottom: .6em; + } + .project-link { &:hover { text-decoration: none; @@ -653,13 +655,14 @@ header {// {{{ } }// }}} - @media (max-width: $phone-width) { - font-size: 14px; - // font-size: 1em; - } + // @media (max-width: $phone-width) { + // font-size: 14px; + // // font-size: 1em; + // } &.letter { margin-top: 2em; + line-height: 1.5em; img { height: 4.5em; @@ -668,21 +671,19 @@ header {// {{{ h2 { color: $base-red; margin-top: 0em; + margin-bottom: .4em; } p { - margin-bottom: 1.5em; + margin-bottom: 1em; } .no-line-spacing { line-height: .5em; - margin-bottom: 2.15em; + margin-bottom: 1.75em; p { margin-bottom: 1em; } - strong { - line-height: 1.25em; - } } } }// }}} @@ -737,168 +738,6 @@ header {// {{{ } }// }}} -#card {// {{{ - @include vert-margin-rem(2); - align-items: center; - justify-content: center; - font-family: 'Oxygen Mono', monospace; - - .container {// {{{ - padding-left: 0; - padding-right: 0; - - .row { - padding-top: 6rem; - padding-bottom: 8rem; - - @media (max-width: $phone-width) { - padding-top: 5rem; - padding-bottom: 6rem; - } - } - }// }}} - - // $card-bg: #e8e6df; - $card-bg: $base07; - #presentational-container {// {{{ - margin-top: 3em; - margin-bottom: 1em; - max-width: $max-page-width; - box-shadow: 2px 2px 10px 5px black; - // card bg - // background-color: #fff; - // background-color: #e5e5e5; - background-color: $card-bg; - }// }}} - - #email-full {// {{{ - font-size: 50px; - @media (max-width: $phone-width) { - font-size: 40px; - } - @media (max-width: $vert-phone-width) { - font-size: 33px; - } - - @include vert-margin-rem(2); - height: 7em; - - img { - height: .5em; - position: absolute; - left: -.8em; - bottom: -.15em; - } - - p { // {{{ - position: relative; - // color: grey; - color: #151515; - // color: #133337; - - div { - display: inline; - } - - .social {// {{{ - // display: none; - display: inline; - white-space: nowrap; - position: absolute; - // left: 5.5rem; - left: 0rem; - - .safari { - display: none; - } - - @supports (-webkit-backdrop-filter: blur(1px)) { - left: .65rem; - .safari { - display: inline; - } - } - - .link-text { - position: relative; - width: 100%; - } - - $border-thickness: 8px; - @media (max-width: $vert-phone-width) { - $border-thickness: 5px; - } - .link { - position: absolute; - border-color: black; - border-style: solid; - border-width: 0 $border-thickness $border-thickness $border-thickness; - height: .45em; - width: 100%; - left: 0; - img { - position: absolute; - left: -1em; - } - - &.link-top { - border-width: $border-thickness $border-thickness 0 $border-thickness; - - img { - position: absolute; - top: -.2em; - } - } - - &:hover { - opacity: .6; - } - } - - $line-spacing: .65em; - #mastodon { - top: -$line-spacing * 1.1; - border-color: #3088d4; - } - .linkedin { - bottom: -$line-spacing * 1.1; - border-color: #0077b7; - - &.linkedin-middle { - border-style: dotted; - border-width: 0 0 3.5px 0; - } - } - #github { - bottom: -$line-spacing * 2.7; - } - #site { - bottom: -$line-spacing * 4.25; - border-color: #ff7058; - } - #email { - top: -$line-spacing * 2.65; - border-color: #d1d0bf; - } - }// }}} - - .spacing { - opacity: 0; - } - }// }}} - }// }}} -}// }}} - -#letter-home {// {{{ - - #letter-instr { - text-align: center; - margin-top: 1.5em; - // margin-top: 25vh; - font-size: 1.4em; - } -}// }}} - // TODO: converted up to here // hero {{{ // @@ -917,20 +756,20 @@ h1.site-title {// {{{ text-decoration: none; } - @media (max-width: $max-page-width) { - font-size: 3em; - } + // @media (max-width: $phone-width) { + // font-size: 3em; + // } - @media (max-width: $phone-width) { - font-size: 3.5em; - @include vert-margin-rem(.3); - // font-size: 2.5em; - // font-size: 2em; + // @media (max-width: $phone-width) { + // font-size: 3.5em; + // @include vert-margin-rem(.3); + // // font-size: 2.5em; + // // font-size: 2em; - .surrounding { - display: none; - } - } + // .surrounding { + // display: none; + // } + // } }// }}} .hero-logo img { diff --git a/layouts/partials/base/header.html b/layouts/partials/base/header.html index aa7b453..eb7ae05 100644 --- a/layouts/partials/base/header.html +++ b/layouts/partials/base/header.html @@ -18,7 +18,7 @@ - + {{ $main_sass := resources.Get "sass/main.scss" }} From 24b999b2f2e899787cfc031ecc8a9dc554f4a7b1 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Fri, 1 Sep 2023 16:09:43 -0400 Subject: [PATCH 02/13] Resume: reduce font sizes --- assets/sass/main.scss | 13 +++++++++---- content/resume/_index.md | 39 +-------------------------------------- 2 files changed, 10 insertions(+), 42 deletions(-) diff --git a/assets/sass/main.scss b/assets/sass/main.scss index 0dbf6d0..316e301 100644 --- a/assets/sass/main.scss +++ b/assets/sass/main.scss @@ -105,8 +105,8 @@ body { color: $color; line-height: 1.5; // font-size: 100%; - // font-size: 15px; - font-size: 20px; + font-size: 12px; + // font-size: 20px; /* font-family: 'Source Code Pro', monospace; */ font-family: 'Hack', monospace; display: flex; @@ -505,7 +505,8 @@ header {// {{{ } }// }}} - font-size: .9em; + // font-size: .9em; + font-size: .8em; .row { // flex-grow: 1; @@ -550,6 +551,7 @@ header {// {{{ h1 {// {{{ color: $base-orange; margin-top: 1.3rem; + font-size: 1.2em; // @media (max-width: $phone-width) { // margin-top: .75rem; @@ -558,6 +560,7 @@ header {// {{{ h2 {// {{{ color: $base-orange; margin-top: .5rem; + font-size: 1em; // @media (max-width: $phone-width) { // font-size: 1.2em; @@ -567,6 +570,7 @@ header {// {{{ h4 {// {{{ color: $base-yellow; margin-top: .5rem; + font-size: 1.2em; // @media (max-width: $phone-width) { // font-size: 1.2em; @@ -744,7 +748,8 @@ header {// {{{ h1.site-title {// {{{ text-align: center; - font-size: 4.2em; + // font-size: 4.2em; + font-size: 3.2em; // color: #66cccc; color: $base05; // margin-top: 1rem; diff --git a/content/resume/_index.md b/content/resume/_index.md index 1dc0a80..2e08c58 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -107,22 +107,6 @@ https://www.eventbrite.com/e/platterz-hackathon-tickets-42682237722 - - -{{% resume/project name="TrapBot" -url="https://github.com/Kevin-Mok/TrapBot" date="March 2018" %}} - -- Use reddit API wrapper in **Python** to scan music subreddits for user - comments containing common track listing formats. -- Match detected track name and artists to track on SoundCloud using another - Python API wrapper. -- Respond to original poster's comment with formatted list of tracks found. -- Received positive comment from users who replied to the bot's posts. - -{{% /resume/project %}} - - - {{% resume/project name="Personal Server" @@ -142,33 +126,12 @@ url="https://kevin-mok.com/server/" date="Aug. 2019 — present" %}} - - -{{% resume/project name="Super ADA Bros" -url="https://github.com/Kevin-Mok/SuperADABros" date="May 2019" %}} - -- Designed clone of Super Mario Bros 1-1, but Mario is mobility-impaired and - uses ramps to get through the level. -- Uses **OpenCV** to track player's head movement which is then translated to - in-game movement. [Video Demo] -- Implemented in [**Godot**][Godot site], an open-source game engine. -- Made during a 24-hour [accessibility-themed hackathon][PC Hacks event]. - -[PC Hacks event]: https://pchacks19.devpost.com/ -[Godot site]: https://godotengine.org -[Video Demo]: https://youtu.be/vRdENLGrBqM - -{{% /resume/project %}} - - - - {{% /resume/section %}} {{% resume/section education %}} {{% resume/education name="University of Toronto" -title="Computer Science Specialist" date="2017 — 2021" %}} +title="Computer Science Specialist — 3.84 GPA (CS)" date="2018 — 2023" %}} {{% /resume/section %}} From d0a21e8b36329948df6b5193c5bd085bdf125984 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Sat, 2 Sep 2023 16:53:02 -0400 Subject: [PATCH 03/13] Resume: increase font size, remove skill headers, 2 projects --- assets/sass/main.scss | 2 +- content/resume/_index.md | 38 ++------------------------------------ content/resume/old.txt | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+), 37 deletions(-) create mode 100644 content/resume/old.txt diff --git a/assets/sass/main.scss b/assets/sass/main.scss index 316e301..ccdd80e 100644 --- a/assets/sass/main.scss +++ b/assets/sass/main.scss @@ -105,7 +105,7 @@ body { color: $color; line-height: 1.5; // font-size: 100%; - font-size: 12px; + font-size: 15px; // font-size: 20px; /* font-family: 'Source Code Pro', monospace; */ font-family: 'Hack', monospace; diff --git a/content/resume/_index.md b/content/resume/_index.md index 2e08c58..6b6777a 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -6,7 +6,7 @@ draft: false {{% resume/section "Work Experience" %}} {{% resume/education name="Red Hat" -title="Cloud Engineer Intern" date="2020 — 2021" %}} +title="Cloud Engineer Intern" date="May 2020 — Aug 2021" %}} - Reduced deployment time by **66%** by implementing ability to deploy locally-compiled binaries onto **Kubernetes**/**OpenShift** using only command-line. @@ -24,20 +24,7 @@ title="Cloud Engineer Intern" date="2020 — 2021" %}} {{% resume/section skills %}} -#### Languages -- **Bash**, **C**, **CSS**, C++, **Fish** (shell), Godot, **HTML5**, - **Python**, Java, **Javascript** (ES6), **Sass** - -#### Frameworks -- **Bootstrap**, **Django**, **Node.js**, **PostgreSQL** - -#### Services -- **DigitalOcean**, **Linux**, Heroku, **REST/Web API's** - -#### Tools -- **Arch Linux**, Android Studio, **Debian**, **Command Line**, - **Git**, IntelliJ IDEA, **Pycharm**, **NGINX**, npm/yarn, **SFTP**, - **SSH**, **Vim** +- **Javascript**, **Python**, Go, Bash, Solidity, C, **Django**, Node.js, PostgreSQL, **Linux**, **Git**, **Command Line** {{% /resume/section %}} @@ -85,27 +72,6 @@ show="true" %}} - - -{{% resume/project name="ParsaFood" -url="https://github.com/Kevin-Mok/ParsaFood" date="Feb. 2018" -show="true" %}} - -- **Android** app that reads ingredient labels and detects any dietary - restrictions/allergies. -- Designed user interface and linked various functionality together. -- Made during a 24-hour [food-themed hackathon][Platterz Hackathon event] - in a group with two other members. Came in 2nd place and won - an [Oculus Rift][Oculus Rift Amazon]. - -[Parsafood repo]: https://github.com/Kevin-Mok/ParsaFood -[Platterz Hackathon event]: -https://www.eventbrite.com/e/platterz-hackathon-tickets-42682237722 -[Oculus Rift Amazon]: https://www.amazon.ca/Oculus-Rift-Windows-VR-Headset/dp/B00VF0IXEY/ref=sr_1_1_sspa?ie=UTF8&qid=1520422949&sr=8-1-spons&keywords=oculus+rift&psc=1 - -{{% /resume/project %}} - - diff --git a/content/resume/old.txt b/content/resume/old.txt new file mode 100644 index 0000000..ca7049d --- /dev/null +++ b/content/resume/old.txt @@ -0,0 +1,21 @@ + + +{{% resume/project name="ParsaFood" +url="https://github.com/Kevin-Mok/ParsaFood" date="Feb. 2018" +show="true" %}} + +- **Android** app that reads ingredient labels and detects any dietary + restrictions/allergies. +- Designed user interface and linked various functionality together. +- Made during a 24-hour [food-themed hackathon][Platterz Hackathon event] + in a group with two other members. Came in 2nd place and won + an [Oculus Rift][Oculus Rift Amazon]. + +[Parsafood repo]: https://github.com/Kevin-Mok/ParsaFood +[Platterz Hackathon event]: +https://www.eventbrite.com/e/platterz-hackathon-tickets-42682237722 +[Oculus Rift Amazon]: https://www.amazon.ca/Oculus-Rift-Windows-VR-Headset/dp/B00VF0IXEY/ref=sr_1_1_sspa?ie=UTF8&qid=1520422949&sr=8-1-spons&keywords=oculus+rift&psc=1 + +{{% /resume/project %}} + + From f0056972e36b66224a749d0a233077dd6d3f0dcf Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Sat, 2 Sep 2023 17:15:38 -0400 Subject: [PATCH 04/13] Resume: Astronofty, Rarity Surf --- content/resume/_index.md | 75 ++++++++++++++++++---------------------- content/resume/old.txt | 61 ++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 42 deletions(-) diff --git a/content/resume/_index.md b/content/resume/_index.md index 6b6777a..8b4fdbf 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -22,67 +22,52 @@ title="Cloud Engineer Intern" date="May 2020 — Aug 2021" %}} {{% /resume/section %}} -{{% resume/section skills %}} - -- **Javascript**, **Python**, Go, Bash, Solidity, C, **Django**, Node.js, PostgreSQL, **Linux**, **Git**, **Command Line** - -{{% /resume/section %}} - {{% resume/section projects %}} - + -{{% resume/project name="Spotify Graphs" -url="https://github.com/Kevin-Mok/spotify-lib-vis" date="June 2018 — July 2018" +{{% resume/project name="Astronofty" +url="https://github.com/Kevin-Mok/astronofty" date="Jan 2023" show="true" %}} -- Implemented base functionality of scanning tracks and listening - history from user's library using Spotify API and organized data - into **PostgreSQL** database with **Django** backend. -- Created and tested various relational database schemas to maximize - efficiency for use cases. -- Produced bubble chart and (stacked) bar chart using [**d3**] -[d3 graph examples] to visualize the artists, genres and features of -tracks in library. - -[d3 graph examples]: https://github.com/d3/d3/wiki/Gallery +- Created for a 36 hour hackathon (UofTHacks X) where it **came 2nd overall**. +- Created and deployed a smart contract with **Solidity** on + the Ethereum blockchain to create/buy/sell NFT's + using MetaMask. +- Wrote a **React** hook to fetch and show listed NFT's, NFT details and owned NFT's. +- Used API to synchronously upload images and metadata to IPFS. {{% /resume/project %}} - + - + -{{% resume/project name="Grocery Finder" -url="https://github.com/Kevin-Mok/grocery-finder" date="Feb. 2019 — Apr. 2019" -show="true" %}} +{{% resume/project name="Rarity Surf" +date="Oct 2021" show="true" %}} -- Proof of concept for web app that finds the ideal supermarket based on your cart. -- Designed responsive front-end layout using **Bootstrap**. -- Implemented REST API functionality on backend using **Node.js** and - **MongoDB**. -- Setup deployment on [**Heroku**][Grocery Finder Heroku]. -- Led team of 4 as project leader to prioritize and delegate tasks while - also implementing a majority of the core features. -- Performed code review for team members' pull requests. - -[Grocery Finder Heroku]: http://www.grocery-finder.ml +- Web app to give rarity rankings to NFT's within minutes of their metadata being revealed and check which are listed (based on rarity and price filters) on the OpenSea marketplace using their API. +- Reverse engineered the ranking algorithm to match the + leading rarity ranking site's rankings (scraped using + Selenium) with a **discrepancy of <0.25%**. +- Used app to frontrun purchases of **top 5%** rarity NFT's + against competing buyers. +- Wrote **Django** backend to fetch metadata from IPFS, store rarity rankings in PostgreSQL and serve rarity data using GraphQL. +- Wrote **React** frontend with hooks to dynamically load rarity data. Styled with Tailwind. {{% /resume/project %}} - + - {{% resume/project name="Personal Server" -url="https://kevin-mok.com/server/" date="Aug. 2019 — present" %}} +url="https://kevin-mok.com/server/" date="Aug. 2019 — present" show="true" %}} -- Deployed various web apps with backends such as Node, PHP and Python using - **NGINX** on a **Debian** server. -- Monitor system resources and perform system maintenance using tmux. -- Wrote [**Node.js** script][server script] and [**systemd** service][systemd service]/[timer] - to check and display the uptime of my pages every hour. +- Deployed various web apps with backends using NGINX on a Debian/**Linux** server. +- Wrote a [**JavaScript** script][server script] and [systemd service][systemd service]/[timer] + to display the uptime of my pages every hour. +- Monitored system resources and performed system maintenance using tmux. [server script]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-status.js [systemd service]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-pages.service @@ -94,6 +79,12 @@ url="https://kevin-mok.com/server/" date="Aug. 2019 — present" %}} {{% /resume/section %}} +{{% resume/section skills %}} + +- **JavaScript**, **React**,**Python**, Go, Bash, Solidity, C, **Django**, Node.js, PostgreSQL, **Linux**, **Git**, **Command Line** + +{{% /resume/section %}} + {{% resume/section education %}} {{% resume/education name="University of Toronto" diff --git a/content/resume/old.txt b/content/resume/old.txt index ca7049d..0fe0ffb 100644 --- a/content/resume/old.txt +++ b/content/resume/old.txt @@ -1,3 +1,64 @@ + + +{{% resume/project name="Spotify Graphs" +url="https://github.com/Kevin-Mok/spotify-lib-vis" date="June 2018 — July 2018" +show="true" %}} + +- Implemented base functionality of scanning tracks and listening + history from user's library using Spotify API and organized data + into **PostgreSQL** database with **Django** backend. +- Created and tested various relational database schemas to maximize + efficiency for use cases. +- Produced bubble chart and (stacked) bar chart using [**d3**] +[d3 graph examples] to visualize the artists, genres and features of +tracks in library. + +[d3 graph examples]: https://github.com/d3/d3/wiki/Gallery + +{{% /resume/project %}} + + + + + +{{% resume/project name="Grocery Finder" +url="https://github.com/Kevin-Mok/grocery-finder" date="Feb. 2019 — Apr. 2019" +show="true" %}} + +- Proof of concept for web app that finds the ideal supermarket based on your cart. +- Designed responsive front-end layout using **Bootstrap**. +- Implemented REST API functionality on backend using **Node.js** and + **MongoDB**. +- Setup deployment on [**Heroku**][Grocery Finder Heroku]. +- Led team of 4 as project leader to prioritize and delegate tasks while + also implementing a majority of the core features. +- Performed code review for team members' pull requests. + +[Grocery Finder Heroku]: http://www.grocery-finder.ml + +{{% /resume/project %}} + + + + + +{{% resume/project name="Personal Server" +url="https://kevin-mok.com/server/" date="Aug. 2019 — present" %}} + +- Deployed various web apps with backends such as Node, PHP and Python using + **NGINX** on a **Debian** server. +- Monitor system resources and perform system maintenance using tmux. +- Wrote [**Node.js** script][server script] and [**systemd** service][systemd service]/[timer] + to check and display the uptime of my pages every hour. + +[server script]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-status.js +[systemd service]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-pages.service +[timer]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-pages.timer + +{{% /resume/project %}} + + + {{% resume/project name="ParsaFood" From 8101b4dbfa7b9d67ea0a4c0de098317af74519a2 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Sat, 2 Sep 2023 17:19:34 -0400 Subject: [PATCH 05/13] Update resume PDF --- static/pdf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/pdf b/static/pdf index ac3a141..3159769 160000 --- a/static/pdf +++ b/static/pdf @@ -1 +1 @@ -Subproject commit ac3a141098d76a2da382fe1c5c2943fb56ff4ec2 +Subproject commit 315976967251a1e66d8ab826d83824f3ba594081 From 68a7866b181d45a9fa136acc84b93cef8cd5654c Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Sat, 2 Sep 2023 17:51:09 -0400 Subject: [PATCH 06/13] Resume: Red Hat probes --- content/resume/_index.md | 2 ++ static/pdf | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/content/resume/_index.md b/content/resume/_index.md index 8b4fdbf..be2a477 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -12,6 +12,8 @@ title="Cloud Engineer Intern" date="May 2020 — Aug 2021" %}} using only command-line. - Implemented ability for Kubernetes operator to fetch data from a deployed service and update config with data. +- Refactored probes to have default values assigned based on + deployed YAML while also fixing reconciliation issues. - Automated the promotion and release process as part of the **Jenkins** release pipeline. - Wrote documentation on how to get started with the project to onboard new diff --git a/static/pdf b/static/pdf index 3159769..04d46a7 160000 --- a/static/pdf +++ b/static/pdf @@ -1 +1 @@ -Subproject commit 315976967251a1e66d8ab826d83824f3ba594081 +Subproject commit 04d46a7a67c14ef33a15dd9e7f504a68d4d62b3b From e3c8fee6e88a4c29b232481607e8e34f28df3b54 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Sat, 16 Sep 2023 09:56:36 -0400 Subject: [PATCH 07/13] Resume: add ref section --- assets/sass/main.scss | 10 ++++++++-- content/resume/_index.md | 8 +++++++- layouts/shortcodes/resume/references.html | 5 +++++ static/pdf | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 layouts/shortcodes/resume/references.html diff --git a/assets/sass/main.scss b/assets/sass/main.scss index ccdd80e..3e08011 100644 --- a/assets/sass/main.scss +++ b/assets/sass/main.scss @@ -550,7 +550,8 @@ header {// {{{ h1 {// {{{ color: $base-orange; - margin-top: 1.3rem; + // margin-top: 1.3rem; + margin-top: 1rem; font-size: 1.2em; // @media (max-width: $phone-width) { @@ -587,6 +588,10 @@ header {// {{{ // } }// }}} + ul { + margin-bottom: 5px; + } + #projects {// {{{ // // h1 { // // margin-bottom: 3px; @@ -605,7 +610,8 @@ header {// {{{ } .project-header { - margin-bottom: .6em; + // margin-bottom: .6em; + margin-bottom: .1em; } .project-link { diff --git a/content/resume/_index.md b/content/resume/_index.md index be2a477..f0e8e84 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -6,7 +6,7 @@ draft: false {{% resume/section "Work Experience" %}} {{% resume/education name="Red Hat" -title="Cloud Engineer Intern" date="May 2020 — Aug 2021" %}} +title="Cloud/Software Engineer Intern" date="May 2020 — Aug 2021" %}} - Reduced deployment time by **66%** by implementing ability to deploy locally-compiled binaries onto **Kubernetes**/**OpenShift** using only command-line. @@ -94,4 +94,10 @@ title="Computer Science Specialist — 3.84 GPA (CS)" date="2018 — 2023" %}} {{% /resume/section %}} +{{% resume/section "References" %}} + +{{% resume/references title="See my LinkedIn (Kev-Mok) for references from my Red Hat managers/mentee and a startup client." %}} + +{{% /resume/section %}} + diff --git a/layouts/shortcodes/resume/references.html b/layouts/shortcodes/resume/references.html new file mode 100644 index 0000000..d448089 --- /dev/null +++ b/layouts/shortcodes/resume/references.html @@ -0,0 +1,5 @@ +
+ + {{ .Get "title" }} + +
diff --git a/static/pdf b/static/pdf index 04d46a7..441dbce 160000 --- a/static/pdf +++ b/static/pdf @@ -1 +1 @@ -Subproject commit 04d46a7a67c14ef33a15dd9e7f504a68d4d62b3b +Subproject commit 441dbce684ca1985dd263ea62fbf1dbd79f50d5f From a61b6e2761e23e1a9995443f7630009d782894d8 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Sun, 17 Sep 2023 15:26:39 -0400 Subject: [PATCH 08/13] Resume: minor changes --- content/resume/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/resume/_index.md b/content/resume/_index.md index f0e8e84..1cff820 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -83,7 +83,7 @@ url="https://kevin-mok.com/server/" date="Aug. 2019 — present" show="true" %}} {{% resume/section skills %}} -- **JavaScript**, **React**,**Python**, Go, Bash, Solidity, C, **Django**, Node.js, PostgreSQL, **Linux**, **Git**, **Command Line** +**JavaScript**, **React**, **Python**, Go, Bash, Solidity, C, **Django**, Node.js, PostgreSQL, **Linux**, **Git**, **Command Line** {{% /resume/section %}} @@ -96,7 +96,7 @@ title="Computer Science Specialist — 3.84 GPA (CS)" date="2018 — 2023" %}} {{% resume/section "References" %}} -{{% resume/references title="See my LinkedIn (Kev-Mok) for references from my Red Hat managers/mentee and a startup client." %}} +{{% resume/references title="See my LinkedIn for references from my Red Hat managers/mentee and a startup client." %}} {{% /resume/section %}} From 35ca12661827b55c2478dfe00bc32e7850d76728 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Thu, 21 Sep 2023 15:36:51 -0400 Subject: [PATCH 09/13] Resume: minor changes --- content/resume/_index.md | 8 +++----- content/resume/red-hat.txt | 9 +++++++++ layouts/shortcodes/resume/references.html | 8 +++++++- static/pdf | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 content/resume/red-hat.txt diff --git a/content/resume/_index.md b/content/resume/_index.md index 1cff820..4789a95 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -12,15 +12,13 @@ title="Cloud/Software Engineer Intern" date="May 2020 — Aug 2021" %}} using only command-line. - Implemented ability for Kubernetes operator to fetch data from a deployed service and update config with data. +- Added startup probes to handle starting legacy application containers that require additional startup time. - Refactored probes to have default values assigned based on deployed YAML while also fixing reconciliation issues. - Automated the promotion and release process as part of the **Jenkins** release pipeline. - Wrote documentation on how to get started with the project to onboard new developers and mentored the incoming intern. -- Presented a talk based on my experience called "8 Things I - Learned About Software Engineering" to an audience of 75+ - in a conference for internship seekers. {{% /resume/section %}} @@ -83,7 +81,7 @@ url="https://kevin-mok.com/server/" date="Aug. 2019 — present" show="true" %}} {{% resume/section skills %}} -**JavaScript**, **React**, **Python**, Go, Bash, Solidity, C, **Django**, Node.js, PostgreSQL, **Linux**, **Git**, **Command Line** +Kubernetes, **JavaScript**, **React**, **Python**, Go, Bash, Solidity, C, **Django**, Node.js, Jenkins, PostgreSQL, **Linux**, **Git**, **Command Line** {{% /resume/section %}} @@ -96,7 +94,7 @@ title="Computer Science Specialist — 3.84 GPA (CS)" date="2018 — 2023" %}} {{% resume/section "References" %}} -{{% resume/references title="See my LinkedIn for references from my Red Hat managers/mentee and a startup client." %}} +{{% resume/references %}} {{% /resume/section %}} diff --git a/content/resume/red-hat.txt b/content/resume/red-hat.txt new file mode 100644 index 0000000..cbebfd7 --- /dev/null +++ b/content/resume/red-hat.txt @@ -0,0 +1,9 @@ +• Working on the Kogito (cloud-native, open-source business automation technology) Cloud Engineering team. +• Implemented ability for Kogito operator to fetch exposed protobuf files from a deployed service and update ConfigMap with data (*Kubernetes*, *Go*, KOGITO-3376). +• Reduced deployment time by 66% by implementing ability to deploy locally-compiled Kogito binaries onto OpenShift using only Kogito CLI (*Go*, KOGITO-2113). +• Added startup probes to handle starting legacy application containers that require additional startup time +(*Go*, KOGITO-4322). +• Refactored Kogito probes to have default values assigned based on deployed YAML/runtime while also fixing reconciliation issues (*Kubernetes*, *Go*, KOGITO-4898). +• Automated the promotion and release process for Kogito runtimes as part of the release pipeline (*Jenkins*, KOGITO-1653). Wrote unit tests in the Spock framework. +• Wrote documentation to onboard new Kogito operator developers and reduce friction needed for them to start contributing (*Kubernetes/minikube/OpenShift*, KOGITO-5127). Was completed as part of mentoring incoming intern to expedite initial onboarding process. +• Presented a talk based on my experience called "8 Things I Learned About Software Engineering" to an audience of 75+ in a conference for internship seekers. diff --git a/layouts/shortcodes/resume/references.html b/layouts/shortcodes/resume/references.html index d448089..15fbee1 100644 --- a/layouts/shortcodes/resume/references.html +++ b/layouts/shortcodes/resume/references.html @@ -1,5 +1,11 @@
- {{ .Get "title" }} + See my + + LinkedIn + + for references from my Red Hat managers/mentee and a + startup client.
diff --git a/static/pdf b/static/pdf index 441dbce..50171c4 160000 --- a/static/pdf +++ b/static/pdf @@ -1 +1 @@ -Subproject commit 441dbce684ca1985dd263ea62fbf1dbd79f50d5f +Subproject commit 50171c4c7064366f0492cec808657d0f30b1a3de From c3f43c408db5beb198f9184cf03ebd5d5e8804ff Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Thu, 18 Jan 2024 09:12:10 -0500 Subject: [PATCH 10/13] Resume: 369 --- content/letter | 2 +- content/resume/_index.md | 58 ++++++++++++++++++++-------------------- static/pdf | 2 +- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/content/letter b/content/letter index 996ec63..1467546 160000 --- a/content/letter +++ b/content/letter @@ -1 +1 @@ -Subproject commit 996ec6349ba6ba670cb9195f63742c401e5846d9 +Subproject commit 14675468468b11cfaeb63bfc1da5d412d318dce1 diff --git a/content/resume/_index.md b/content/resume/_index.md index 4789a95..08726eb 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -24,40 +24,22 @@ title="Cloud/Software Engineer Intern" date="May 2020 — Aug 2021" %}} {{% resume/section projects %}} - -{{% resume/project name="Astronofty" -url="https://github.com/Kevin-Mok/astronofty" date="Jan 2023" -show="true" %}} + -- Created for a 36 hour hackathon (UofTHacks X) where it **came 2nd overall**. -- Created and deployed a smart contract with **Solidity** on - the Ethereum blockchain to create/buy/sell NFT's - using MetaMask. -- Wrote a **React** hook to fetch and show listed NFT's, NFT details and owned NFT's. -- Used API to synchronously upload images and metadata to IPFS. +{{% resume/project name="Custom Kernel Module" +url="https://kevin-mok.com/server/" date="Jan. 2022" show="true" %}} -{{% /resume/project %}} - - - - - -{{% resume/project name="Rarity Surf" -date="Oct 2021" show="true" %}} - -- Web app to give rarity rankings to NFT's within minutes of their metadata being revealed and check which are listed (based on rarity and price filters) on the OpenSea marketplace using their API. -- Reverse engineered the ranking algorithm to match the - leading rarity ranking site's rankings (scraped using - Selenium) with a **discrepancy of <0.25%**. -- Used app to frontrun purchases of **top 5%** rarity NFT's - against competing buyers. -- Wrote **Django** backend to fetch metadata from IPFS, store rarity rankings in PostgreSQL and serve rarity data using GraphQL. -- Wrote **React** frontend with hooks to dynamically load rarity data. Styled with Tailwind. +- Wrote and installed a custom Linux kernel module in **C**. +- Intercepted pre-existing system calls using + custom kernel module by sending commands to + userspace. +- Monitored specific process ID's in my system + call to intercept their system calls. {{% /resume/project %}} - + @@ -77,6 +59,24 @@ url="https://kevin-mok.com/server/" date="Aug. 2019 — present" show="true" %}} + + +{{% resume/project name="Rarity Surf" +date="Oct 2021" show="true" %}} + +- Web app to give rarity rankings to NFT's within minutes of their metadata being revealed and check which are listed (based on rarity and price filters) on the OpenSea marketplace using their API. +- Reverse engineered the ranking algorithm to match the + leading rarity ranking site's rankings (scraped using + Selenium) with a **discrepancy of <0.25%**. +- Used app to frontrun purchases of **top 5%** rarity NFT's + against competing buyers. +- Wrote **Django (Python)** backend to fetch metadata from IPFS, store rarity rankings in PostgreSQL and serve rarity data using GraphQL. +- Wrote **React** frontend with hooks to dynamically load rarity data. Styled with Tailwind. + +{{% /resume/project %}} + + + {{% /resume/section %}} {{% resume/section skills %}} @@ -88,7 +88,7 @@ Kubernetes, **JavaScript**, **React**, **Python**, Go, Bash, Solidity, C, **Djan {{% resume/section education %}} {{% resume/education name="University of Toronto" -title="Computer Science Specialist — 3.84 GPA (CS)" date="2018 — 2023" %}} +title="Computer Science Specialist — 3.84 GPA (CS), Graduated with High Distinction" date="2018 — 2023" %}} {{% /resume/section %}} diff --git a/static/pdf b/static/pdf index 50171c4..4ff1886 160000 --- a/static/pdf +++ b/static/pdf @@ -1 +1 @@ -Subproject commit 50171c4c7064366f0492cec808657d0f30b1a3de +Subproject commit 4ff18861bc89b9eb06ac4f600dfce5673c6713d4 From 49cda38430a145626bbd9f728e11df3261e0fa7f Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Thu, 18 Jan 2024 10:35:24 -0500 Subject: [PATCH 11/13] Resume: make links visible --- assets/sass/main.scss | 7 ++++++- content/letter | 2 +- content/resume/_index.md | 7 ++++--- layouts/shortcodes/resume/education.html | 3 ++- layouts/shortcodes/resume/references.html | 4 +--- static/pdf | 2 +- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/assets/sass/main.scss b/assets/sass/main.scss index 3e08011..e0b6029 100644 --- a/assets/sass/main.scss +++ b/assets/sass/main.scss @@ -107,6 +107,7 @@ body { // font-size: 100%; font-size: 15px; // font-size: 20px; + // font-size: 22px; /* font-family: 'Source Code Pro', monospace; */ font-family: 'Hack', monospace; display: flex; @@ -542,7 +543,8 @@ header {// {{{ #resume {// {{{ a {// {{{ - text-decoration: none; + // text-decoration: none; + text-decoration: underline; &:hover { text-decoration: underline; } @@ -615,6 +617,9 @@ header {// {{{ } .project-link { + &:link { + text-decoration: none; + } &:hover { text-decoration: none; } diff --git a/content/letter b/content/letter index 1467546..1f7a5be 160000 --- a/content/letter +++ b/content/letter @@ -1 +1 @@ -Subproject commit 14675468468b11cfaeb63bfc1da5d412d318dce1 +Subproject commit 1f7a5be6bccc50267924927b218c3cf501604585 diff --git a/content/resume/_index.md b/content/resume/_index.md index 08726eb..1cae97b 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -30,7 +30,7 @@ title="Cloud/Software Engineer Intern" date="May 2020 — Aug 2021" %}} {{% resume/project name="Custom Kernel Module" url="https://kevin-mok.com/server/" date="Jan. 2022" show="true" %}} -- Wrote and installed a custom Linux kernel module in **C**. +- Wrote and installed a [custom Linux kernel module](https://github.com/Kevin-Mok/interceptor-kernel/blob/master/a1/interceptor.c) in **C**. - Intercepted pre-existing system calls using custom kernel module by sending commands to userspace. @@ -46,11 +46,12 @@ url="https://kevin-mok.com/server/" date="Jan. 2022" show="true" %}} {{% resume/project name="Personal Server" url="https://kevin-mok.com/server/" date="Aug. 2019 — present" show="true" %}} -- Deployed various web apps with backends using NGINX on a Debian/**Linux** server. +- Deployed [various web apps] with backends using NGINX on a Debian/**Linux** server. - Wrote a [**JavaScript** script][server script] and [systemd service][systemd service]/[timer] to display the uptime of my pages every hour. - Monitored system resources and performed system maintenance using tmux. +[various web apps]: https://kevin-mok.com/server/ [server script]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-status.js [systemd service]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-pages.service [timer]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-pages.timer @@ -88,7 +89,7 @@ Kubernetes, **JavaScript**, **React**, **Python**, Go, Bash, Solidity, C, **Djan {{% resume/section education %}} {{% resume/education name="University of Toronto" -title="Computer Science Specialist — 3.84 GPA (CS), Graduated with High Distinction" date="2018 — 2023" %}} +title="Computer Science Specialist — 3.84 GPA (CS). Graduated with High Distinction." date="2018 — 2023" %}} {{% /resume/section %}} diff --git a/layouts/shortcodes/resume/education.html b/layouts/shortcodes/resume/education.html index a0b6fa9..e00ec8f 100644 --- a/layouts/shortcodes/resume/education.html +++ b/layouts/shortcodes/resume/education.html @@ -7,7 +7,8 @@
{{ .Get "date" }}
- + + {{ .Get "title" }} diff --git a/layouts/shortcodes/resume/references.html b/layouts/shortcodes/resume/references.html index 15fbee1..4162cbc 100644 --- a/layouts/shortcodes/resume/references.html +++ b/layouts/shortcodes/resume/references.html @@ -3,9 +3,7 @@ See my - LinkedIn - - for references from my Red Hat managers/mentee and a + LinkedIn for references from my Red Hat managers/mentee and a startup client. diff --git a/static/pdf b/static/pdf index 4ff1886..90229b4 160000 --- a/static/pdf +++ b/static/pdf @@ -1 +1 @@ -Subproject commit 4ff18861bc89b9eb06ac4f600dfce5673c6713d4 +Subproject commit 90229b43f7474ff13990421b8a2578f90c67b54c From 161cc147641dd81544f73e916859d26af53b3d91 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Tue, 30 Jan 2024 11:56:08 -0500 Subject: [PATCH 12/13] Server project points --- content/resume/server-ideas.md | 9 +++++++++ static/pdf | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 content/resume/server-ideas.md diff --git a/content/resume/server-ideas.md b/content/resume/server-ideas.md new file mode 100644 index 0000000..b7f6acd --- /dev/null +++ b/content/resume/server-ideas.md @@ -0,0 +1,9 @@ +# Points +- run/deploy K8s locally on minikube using kubectl + - features +- Dockerize app +- run Docker on server + +# Replace +- personal server +- Astronofy diff --git a/static/pdf b/static/pdf index 90229b4..e6c4cde 160000 --- a/static/pdf +++ b/static/pdf @@ -1 +1 @@ -Subproject commit 90229b43f7474ff13990421b8a2578f90c67b54c +Subproject commit e6c4cde18a3b56e0c24e73b4dc729669cbac3a5f From 275c5b679b1c9544e8e6623fc2af870da6f01d09 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Wed, 31 Jan 2024 11:21:14 -0500 Subject: [PATCH 13/13] Server to-do --- content/resume/server-ideas.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/resume/server-ideas.md b/content/resume/server-ideas.md index b7f6acd..16a9c12 100644 --- a/content/resume/server-ideas.md +++ b/content/resume/server-ideas.md @@ -1,8 +1,17 @@ +# To-Do +- check price of AWS server +- run Docker apps on it +- run domain +- run/create Docker compose +- Dockerize app + +# Done + # Points - run/deploy K8s locally on minikube using kubectl - features - Dockerize app -- run Docker on server +- run Docker on server (AWS) # Replace - personal server