From 6e5ad11eb781e6f8779ae16757caea431bacb467 Mon Sep 17 00:00:00 2001 From: Kevin Mok Date: Tue, 11 Mar 2025 13:31:35 -0400 Subject: [PATCH] Update resume for web dev --- assets/sass/main.scss | 103 ++++++++++-- content/resume/_index.md | 149 ++++++++++-------- layouts/partials/home/about.html | 5 +- layouts/shortcodes/resume/project.html | 10 +- .../shortcodes/resume/work-experience.html | 18 +++ static/pdf | 2 +- 6 files changed, 188 insertions(+), 99 deletions(-) create mode 100644 layouts/shortcodes/resume/work-experience.html diff --git a/assets/sass/main.scss b/assets/sass/main.scss index e0b6029..6670db6 100644 --- a/assets/sass/main.scss +++ b/assets/sass/main.scss @@ -103,13 +103,19 @@ body { margin: 0; background-color: $background-color; color: $color; - line-height: 1.5; + // line-height: 1.5; + line-height: 1.57; // font-size: 100%; - font-size: 15px; + // font-size: 15px; + font-size: 17px; // font-size: 20px; // font-size: 22px; /* font-family: 'Source Code Pro', monospace; */ - font-family: 'Hack', monospace; + // font-family: 'Hack', monospace; + // body { + // font-family: 'Times New Roman', serif; + font-family: "Computer Modern Serif"; + // } display: flex; flex-direction: column; min-height: 100vh; @@ -171,7 +177,8 @@ footer { margin-top: 2rem; $vertical-margin: .2em; text-align: center; - font-size: 0.8em; + // font-size: 0.8em; + font-size: .85em; color: #747369; // bottom: 0; // position: absolute; @@ -211,7 +218,8 @@ footer { // padding-right: .9em; img { - height: 1.5em; + // height: 1.5em; + height: 3em; @include vert-margin-rem(.2); padding-left: .5em; opacity: .6; @@ -369,7 +377,7 @@ header {// {{{ display: inline; &#gnu { - background-color: $base04; + // background-color: $base04; // background-color: $base05; } } @@ -492,7 +500,7 @@ header {// {{{ #contact-info {// {{{ @include side-margin-em(0); // @include vert-padding-rem(0.5); - @include a-color($base-sky-blue); + // @include a-color($base-sky-blue); // min-width: $max-page-width; @media (min-width: 1200px) { .container{ @@ -500,6 +508,7 @@ header {// {{{ } } a {// {{{ + color: #4287cd; text-decoration: none; &:hover { text-decoration: none; @@ -511,7 +520,8 @@ header {// {{{ .row { // flex-grow: 1; - color: $base05; + // color: $base05; + color: #4287cd; img { height: 1em; @@ -529,7 +539,9 @@ header {// {{{ } .url-info { + font-size: 1em; margin-left: 5px; + // text-decoration: underline; // position: relative; // left: -8px; // @media (max-width: $phone-width) { @@ -544,6 +556,9 @@ header {// {{{ #resume {// {{{ a {// {{{ // text-decoration: none; + // color: $base-blue; + color: #4287cd; + // color: blue; text-decoration: underline; &:hover { text-decoration: underline; @@ -551,17 +566,19 @@ header {// {{{ }// }}} h1 {// {{{ - color: $base-orange; + // color: $base-orange; + color: black; // margin-top: 1.3rem; margin-top: 1rem; - font-size: 1.2em; + // font-size: 1.2em; + font-size: 1.3em; // @media (max-width: $phone-width) { // margin-top: .75rem; // } }// }}} h2 {// {{{ - color: $base-orange; + //color: $base-orange; margin-top: .5rem; font-size: 1em; @@ -590,10 +607,19 @@ header {// {{{ // } }// }}} + .section-header { + margin-top: .7em; + margin-bottom: 0.4em; + } + ul { margin-bottom: 5px; } + .work-experience { + margin-bottom: 5px; + } + #projects {// {{{ // // h1 { // // margin-bottom: 3px; @@ -605,6 +631,7 @@ header {// {{{ h2 { color: $base-sky-blue; display: inline; + font-size: 1.1em; } img { @@ -613,7 +640,14 @@ header {// {{{ .project-header { // margin-bottom: .6em; - margin-bottom: .1em; + // margin-bottom: .1em; + margin-bottom: 5px; + } + + .project-title { + // color: $base-blue; + color: black; + display: inline; } .project-link { @@ -653,8 +687,37 @@ header {// {{{ } }// }}} + .company { + // color: #fe4646; + color: black; + font-weight: bold; + font-size: 1.2em; + margin-bottom: 5px; + } + + .position { + // color: black; + // color: $base-sky-blue; + // color: $base-blue; + color: black; + font-weight: bold; + // font-style: italic; + // font-size: 1.1em; + font-size: 1em; + // margin-bottom: 5px; + margin-bottom: 15px; + } + + .languages { + // font-style: italic; + // font-size: .9em; + } + .institution { - color: $base-yellow; + // color: $base-yellow; + // color: $base-dark-orange; + // color: $base-blue; + color: black; font-weight: bold; font-size: 1.1em; margin-bottom: 5px; @@ -760,16 +823,21 @@ header {// {{{ h1.site-title {// {{{ text-align: center; // font-size: 4.2em; - font-size: 3.2em; + // font-size: 3.2em; + font-size: 2.5em; // color: #66cccc; color: $base05; // margin-top: 1rem; // margin-bottom: 0.75rem; @include vert-margin-rem(.75); - @include a-color($base-sky-blue); + // @include a-color($base-sky-blue); a { - text-decoration: none; + color: black; + // text-decoration: none; + text-decoration: underline; + text-decoration-thickness: 2px; + text-underline-offset: 5px; } // @media (max-width: $phone-width) { @@ -935,7 +1003,8 @@ article.single section.body h5 { color: #515151; } article.single section.body h6 { color: #747369; } // article.single section.body a,a:visited { color: #a06700; } -article.single section.body a,a:visited { color: $base-sky-blue; } +// article.single section.body a,a:visited { color: $base-sky-blue; } +// article.single section.body a,a:visited { color: $base-sky-blue; } /* Article Elements */ diff --git a/content/resume/_index.md b/content/resume/_index.md index 1cae97b..1692797 100644 --- a/content/resume/_index.md +++ b/content/resume/_index.md @@ -3,100 +3,109 @@ title: "Resume" date: 2019-02-11T07:50:51-05:00 draft: false --- -{{% resume/section "Work Experience" %}} - -{{% resume/education name="Red Hat" -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. -- 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. - -{{% /resume/section %}} - -{{% resume/section projects %}} - +{{% resume/section "Web Dev Projects" %}} - - -{{% 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](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. -- Monitored specific process ID's in my system - call to intercept their system calls. +{{% resume/project name="Rarity Surf" +languages="TypeScript, JavaScript, Node.js, React" +date="March 2025" show="true" %}} + +- **Developed a full-stack web application + (TypeScript/JavaScript)** to generate + rarity rankings for NFT's, integrating with **leading + marketplace’s API** to enable users to quickly identify + rare NFT's and check their listing status, **improving + market research efficiency by 80%**. +- **Built a scalable [Node.js backend](https://github.com/Rarity-Surf/ME-sniper-backend)** with REST API + endpoints to return NFTs based on customizable filters + such as max rank, price, and rarest traits. **Optimized + performance** to handle **3,000+ concurrent requests** by + implementing efficient data fetching and caching + mechanisms using **PostgreSQL** , ensuring low-latency + access to NFT data. +- **Built a dynamic [React frontend](https://github.com/Rarity-Surf/ME-sniper-frontend) (TypeScript/JavaScript)** to load and display NFTs in real-time with user-defined filters. Styled + using a mobile-responsive library, **reducing load times by 50%**. +- **Developed a [Discord bot](https://github.com/Rarity-Surf/ME-sniper-discord-bot) (TypeScript/JavaScript/Node.js)** to notify users of profitable + resale opportunities by leveraging historical sales data + to assess deal quality. This feature **increased user + engagement by 80%** and provided a seamless way for users + to stay updated on market opportunities. {{% /resume/project %}} - - - + -{{% 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. -- 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. +{{% resume/project name="Astronofty" +url="https://github.com/Kevin-Mok/astronofty" +languages="JavaScript, React, Solidity" date="Jan 2023" +show="true" %}} -[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 +- **Secured [2nd place](https://devpost.com/software/astronofty) overall out of 150+ teams** at UofTHacks + X, a 36-hour hackathon, for developing a blockchain-based + NFT marketplace app. +- **Built and optimized React (JavaScript) [components](https://github.com/Kevin-Mok/astronofty/tree/main/src/components)** to synchronously + upload images and metadata to IPFS, **enhancing user engagement by 80%** during the demo. {{% /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 (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 "Work Experience" %}} - +{{% resume/work-experience name="Red Hat" title="Cloud/Software Engineer Intern" languages="Kubernetes, GoLang, Jenkins" date="May 2022 — Aug 2023" %}} + +- **Reduced deployment time by 66%** by implementing a + [solution](https://github.com/apache/incubator-kie-kogito-operator/commit/175a6356c5474f2360ccb8ae835e0b9b2d653cf1) for deploying locally-compiled binaries onto + Kubernetes/OpenShift via command-line, **cutting average + deployment times from 45 minutes to 15 minutes**. + (**Kubernetes/GoLang** used for this and three below). +- **Eliminated 80% of manual configuration errors** by enabling + the Kubernetes operator to automatically fetch data from + deployed services and update configurations, **deprecating + legacy startup scripts and reducing overall startup time + by 40%**. +- **Improved application stability** by introducing startup + probes for legacy applications with longer boot times, + **resulting in a 50% reduction in startup-related failures + and downtime during production launches**. +- **Enhanced system reliability** by refactoring probes to + [assign default values](https://github.com/apache/incubator-kie-kogito-operator/commit/af4977af228ec8648be28779259d4552246b656f) dynamically based on deployed YAML + files and fixing reconciliation issues, **increasing probe accuracy by 30%** and preventing misconfigurations. +- **Increased CI pipeline efficiency** by rewriting the + **Jenkins (Groovy)** [nightly pipeline](https://github.com/apache/incubator-kie-kogito-pipelines/commit/4c83f1aecdea2c1ba2796b79839a90d4083dce88) to run in a GitHub PR + environment, allowing for automated testing of all + team-submitted PRs prior to merging, **reducing manual + intervention by 60%**. +- **Increased project reproducibility** by taking initiative to + write a [reusable GitHub parameters file](https://github.com/apache/incubator-kie-kogito-pipelines/commit/4c83f1aecdea2c1ba2796b79839a90d4083dce88#diff-7d2c018dafbccec859077d19bf1ade53ec9c7649f235528ce89f5632b109f7e6) for the pipeline, + **enabling 100% reusability** and ensuring consistent pipeline + setups across different environments. +- **Streamlined developer onboarding** by authoring + comprehensive [project documentation](https://github.com/apache/incubator-kie-kogito-operator/blob/1534c03d1d26bec08a16608a775782bf8b305de9/docs/GUIDE_FOR_KOGITO_DEVS.md) and mentoring an + incoming intern, **reducing onboarding time by 50%** and + enhancing new team members' productivity within their + first sprint. {{% /resume/section %}} {{% resume/section skills %}} -Kubernetes, **JavaScript**, **React**, **Python**, Go, Bash, Solidity, C, **Django**, Node.js, Jenkins, PostgreSQL, **Linux**, **Git**, **Command Line** +**TypeScript**, **JavaScript**, **React**, **Node.js**, **Python**, +**Django**, PostgreSQL, MongoDB, Bash, **Git**, **Linux**, **Command +Line**, Go(Lang), AWS, Kubernetes, Terraform, Docker (Compose), +Jenkins, Groovy, Solidity, C {{% /resume/section %}} {{% resume/section education %}} -{{% resume/education name="University of Toronto" -title="Computer Science Specialist — 3.84 GPA (CS). Graduated with High Distinction." date="2018 — 2023" %}} - -{{% /resume/section %}} - -{{% resume/section "References" %}} - -{{% resume/references %}} +{{% resume/education name="University of Toronto (St. George)" +title="Computer Science Specialist — 3.84 GPA (CS). Graduated with High Distinction." date="2019 — 2024" %}} {{% /resume/section %}} + diff --git a/layouts/partials/home/about.html b/layouts/partials/home/about.html index 1d220d7..9b5b247 100644 --- a/layouts/partials/home/about.html +++ b/layouts/partials/home/about.html @@ -7,9 +7,8 @@ Red Hat.
  • - I'm a Computer Science student at the University of - Toronto, graduating at the end of 2023 (currently - looking for a full-time position!). + I'm graduated with a 3.84 GPA studying Computer Science at the + University of Toronto in 2024 (currently looking for a full-time position!).
  • I'm greatly interested in all things Linux and diff --git a/layouts/shortcodes/resume/project.html b/layouts/shortcodes/resume/project.html index c699c72..7d9ea7c 100644 --- a/layouts/shortcodes/resume/project.html +++ b/layouts/shortcodes/resume/project.html @@ -1,17 +1,10 @@
    - - link-icon - - + <{{ .Get "languages" }}>
    {{ .Get "date" }}
    @@ -21,3 +14,4 @@
    + diff --git a/layouts/shortcodes/resume/work-experience.html b/layouts/shortcodes/resume/work-experience.html new file mode 100644 index 0000000..69f55c4 --- /dev/null +++ b/layouts/shortcodes/resume/work-experience.html @@ -0,0 +1,18 @@ +
    +
    +
    +

    + {{ .Get "name" }} +

    +
    +
    {{ .Get "date" }}
    +
    + + + {{ .Get "title" }} + + + <{{ .Get "languages" }}> + +
    + diff --git a/static/pdf b/static/pdf index e6c4cde..2acb4ee 160000 --- a/static/pdf +++ b/static/pdf @@ -1 +1 @@ -Subproject commit e6c4cde18a3b56e0c24e73b4dc729669cbac3a5f +Subproject commit 2acb4ee38c7f43222d53099ef8e7e83971c40990