Compare commits
merge into: Kevin-Mok:master
Kevin-Mok:canonical-openStack
Kevin-Mok:cover-letter
Kevin-Mok:drafts
Kevin-Mok:latex-resume
Kevin-Mok:latex-resume-aws
Kevin-Mok:latex-resume-aws-web-dev
Kevin-Mok:latex-resume-c
Kevin-Mok:latex-resume-python
Kevin-Mok:latex-resume-python-aws
Kevin-Mok:latex-resume-python-selenium
Kevin-Mok:latex-resume-web-dev
Kevin-Mok:latex-resume-web-dev-aws
Kevin-Mok:latex-resume-web-dev-django
Kevin-Mok:master
Kevin-Mok:resume-pdf
Kevin-Mok:resume-pdf-2
Kevin-Mok:resume-pdf-3
Kevin-Mok:resume-pdf-4
Kevin-Mok:resume-test
Kevin-Mok:resume-web-dev
Kevin-Mok:resume-web-dev-sniper
Kevin-Mok:server
Kevin-Mok:server-canonical
Kevin-Mok:tr-letter
pull from: Kevin-Mok:resume-web-dev-sniper
Kevin-Mok:canonical-openStack
Kevin-Mok:cover-letter
Kevin-Mok:drafts
Kevin-Mok:latex-resume
Kevin-Mok:latex-resume-aws
Kevin-Mok:latex-resume-aws-web-dev
Kevin-Mok:latex-resume-c
Kevin-Mok:latex-resume-python
Kevin-Mok:latex-resume-python-aws
Kevin-Mok:latex-resume-python-selenium
Kevin-Mok:latex-resume-web-dev
Kevin-Mok:latex-resume-web-dev-aws
Kevin-Mok:latex-resume-web-dev-django
Kevin-Mok:master
Kevin-Mok:resume-pdf
Kevin-Mok:resume-pdf-2
Kevin-Mok:resume-pdf-3
Kevin-Mok:resume-pdf-4
Kevin-Mok:resume-test
Kevin-Mok:resume-web-dev
Kevin-Mok:resume-web-dev-sniper
Kevin-Mok:server
Kevin-Mok:server-canonical
Kevin-Mok:tr-letter
23 Commits
master
...
resume-web
15 changed files with 492 additions and 199 deletions
-
58assets/sass/main.scss
-
2content/letter
-
145content/resume/_index.md
-
39content/resume/notes.md
-
293content/resume/old.md
-
98content/resume/old.txt
-
23content/resume/points-plain-text.md
-
8content/resume/skills.md
-
1layouts/partials/base/footer.html
-
3layouts/partials/base/header.html
-
7layouts/partials/base/site-title.html
-
8layouts/partials/resume/contact-info.html
-
1layouts/shortcodes/resume/project.html
-
3layouts/shortcodes/resume/work-experience.html
-
2static/pdf
@ -1 +1 @@ |
|||||
Subproject commit 654fe2678f10c18da2673e86aeaf1a9b55c54218 |
|
||||
|
Subproject commit f07869796d6289112a4d88373b7440bf62314ff9 |
@ -0,0 +1,39 @@ |
|||||
|
# ME Sniper |
||||
|
write me a resume section similar to this (just a bit longer) for a web dev resume based on the points after with made up statistics |
||||
|
|
||||
|
## Old |
||||
|
- **Developed a full-stack web application** to generate rarity |
||||
|
rankings for NFT's integrated with leading NFT |
||||
|
marketplace's (OpenSea) API, |
||||
|
enabling users to **quickly identify rare NFT's** and check |
||||
|
their listing status, **improving market research efficiency by 80%**. |
||||
|
- **Architected a robust Django (Python) [backend](https://github.com/Kevin-Mok/rarity-surf)** to fetch and process |
||||
|
NFT metadata from IPFS, store rarity rankings in |
||||
|
**PostgreSQL**, and serve the data via GraphQL API, **ensuring low-latency access and scaling to handle 2,000+ concurrent requests**. |
||||
|
- **Developed a dynamic React (Javascript) |
||||
|
[frontend](https://github.com/Kevin-Mok/rarity-surf-frontend)** using hooks to load |
||||
|
rarity data in real-time, styled with Tailwind for |
||||
|
mobile responsiveness, **improving user experience |
||||
|
and reducing frontend load times by 70%**. |
||||
|
|
||||
|
## New |
||||
|
- Developed a full-stack web application to generate rarity rankings for NFT’s integrated with leading NFT marketplace’s (Magic |
||||
|
Eden) API, enabling users to quickly identify rare NFT’s and check their listing status, improving market research efficiency by 80%. |
||||
|
- fetch metadata from either IPFS or website in parallel processes to create rarity |
||||
|
rankings as soon as metadata revealed |
||||
|
- reverse engineered algorithm for rarity rankings for NFT's based on article from |
||||
|
marketplace about their in-house statistical rarity |
||||
|
ranking |
||||
|
- created Prisma schema for PostgreSQL for database to store NFT data |
||||
|
- Node.js backend with API endpoints to return NFT's based |
||||
|
on max rank/price along with rarest traits |
||||
|
- lowest prices for rarity percentile to see if good deal |
||||
|
- fetch all listings from leading marketplace (Magic Eden) to be |
||||
|
able to identify which rare NFT's are on sale and be able |
||||
|
to filter based on max price/filter |
||||
|
- store previous sales data to check whether a buy at rarity |
||||
|
percentile is a good deal |
||||
|
- React FE to dynamically load NFT's based on rarity |
||||
|
rank/price filter with ability to hide seen ones |
||||
|
- Discord bot to notify you when customizable profitable resale |
||||
|
opportunity comes up based on rarity level/price |
@ -0,0 +1,293 @@ |
|||||
|
<!--- {{{ Red Hat --> |
||||
|
|
||||
|
- Reduced deployment time by **66%** by [implementing ability](https://github.com/apache/incubator-kie-kogito-operator/commit/175a6356c5474f2360ccb8ae835e0b9b2d653cf1) to |
||||
|
deploy locally-compiled binaries onto **Kubernetes**/**OpenShift** |
||||
|
using only command-line (**Kubernetes/GoLang** used for this and three below). |
||||
|
- Implemented ability for Kubernetes operator to fetch data |
||||
|
from a deployed service and update config with data to |
||||
|
deprecate reliance on startup script. |
||||
|
- Added startup probes to handle starting legacy application containers that require additional startup time. |
||||
|
- Refactored probes to [have default values](https://github.com/apache/incubator-kie-kogito-operator/commit/af4977af228ec8648be28779259d4552246b656f) assigned based on |
||||
|
deployed YAML while also fixing reconciliation issues. |
||||
|
- Rewrote the **Jenkins (Groovy)** [nightly pipeline](https://github.com/apache/incubator-kie-kogito-pipelines/commit/4c83f1aecdea2c1ba2796b79839a90d4083dce88) to run in a GitHub |
||||
|
PR using a trigger keyword to test all the team's submitted PR's |
||||
|
before merging to the main branch. |
||||
|
- Took on tasks and contributed ideas in **Agile sprint** planning meetings in a team of 12 people. |
||||
|
- Took initiative to write [file](https://github.com/apache/incubator-kie-kogito-pipelines/commit/4c83f1aecdea2c1ba2796b79839a90d4083dce88#diff-7d2c018dafbccec859077d19bf1ade53ec9c7649f235528ce89f5632b109f7e6) |
||||
|
to define the GitHub parameters for the above pipeline so that it |
||||
|
can be recreated easily. |
||||
|
- Took initiative to write [documentation](https://github.com/apache/incubator-kie-kogito-operator/blob/1534c03d1d26bec08a16608a775782bf8b305de9/docs/GUIDE_FOR_KOGITO_DEVS.md) on how to get started with the project to onboard new |
||||
|
developers and mentored the incoming intern. |
||||
|
|
||||
|
<!--- }}} Red Hat --> |
||||
|
|
||||
|
<!--- Rarity Surf {{{ --> |
||||
|
|
||||
|
{{% resume/project name="Rarity Surf" |
||||
|
languages="Python, JavaScript, React, Django" |
||||
|
date="Oct 2021" show="true" %}} |
||||
|
|
||||
|
- **Developed a full-stack web application** to generate rarity |
||||
|
rankings for NFT's integrated with OpenSea's API, |
||||
|
enabling users to **quickly identify rare NFT's** and check |
||||
|
their listing status, **improving market research efficiency by 80%**. |
||||
|
- **Reverse engineered a proprietary ranking algorithm** to |
||||
|
mirror the leading rarity ranking site’s results, |
||||
|
**achieving 99.75% accuracy** by |
||||
|
utilizing data scraping techniques [with Selenium](https://github.com/Kevin-Mok/rarity-surf/blob/django/rarity_check/project/scrape.py), |
||||
|
increasing the platform's trustworthiness among users. |
||||
|
- **Optimized purchasing strategy** by leveraging the app to |
||||
|
frontrun competitors in purchasing top 0.5% rarity NFTs, |
||||
|
**boosting acquisition success rate by 90%** and allowing |
||||
|
users to gain a competitive edge in the marketplace. |
||||
|
- **Architected a robust Django (Python) [backend](https://github.com/Kevin-Mok/rarity-surf)** to fetch and process |
||||
|
NFT metadata from IPFS, store rarity rankings in |
||||
|
**PostgreSQL**, and serve the data via GraphQL API, **ensuring low-latency access and scaling to handle 2,000+ concurrent requests**. |
||||
|
- **Developed a dynamic React [frontend](https://github.com/Kevin-Mok/rarity-surf-frontend)** using hooks to load |
||||
|
rarity data in real-time, styled with Tailwind for |
||||
|
mobile responsiveness, **improving user experience |
||||
|
and reducing frontend load times by 70%**. |
||||
|
|
||||
|
{{% /resume/project %}} |
||||
|
|
||||
|
<!--- Rarity Surf }}} --> |
||||
|
|
||||
|
<!--- Rarity Surf {{{ --> |
||||
|
|
||||
|
{{% resume/project name="Rarity Surf (2)" |
||||
|
languages="Typescript, Node.js, React" |
||||
|
date="" show="true" %}} |
||||
|
|
||||
|
- **Developed a full-stack web application** 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** 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, ensuring low-latency access to NFT data. |
||||
|
- **Developed a dynamic React frontend** to load and display |
||||
|
NFT's in real-time based on user-defined filters to |
||||
|
streamline browsing. Styled the interface using **Tailwind |
||||
|
CSS** for a responsive and modern design, **reducing |
||||
|
frontend load times by 50%**. |
||||
|
- **Developed a Discord bot** 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. |
||||
|
- Designed and implemented a **PostgreSQL schema** for to |
||||
|
efficiently store NFT data, including metadata, rarity |
||||
|
scores, and historical sales data. |
||||
|
|
||||
|
{{% /resume/project %}} |
||||
|
|
||||
|
<!--- Rarity Surf }}} --> |
||||
|
|
||||
|
<!--- Astronofty {{{ --> |
||||
|
|
||||
|
{{% resume/project name="Astronofty" |
||||
|
url="https://github.com/Kevin-Mok/astronofty" languages="JavaScript, React, Solidity" date="Jan 2023" |
||||
|
show="true" %}} |
||||
|
|
||||
|
- Created for a 36 hour hackathon (UofTHacks X) where it [**came 2nd overall**](https://devpost.com/software/astronofty). |
||||
|
- Created and deployed a smart contract with **Solidity** on |
||||
|
the Ethereum blockchain to create/buy/sell NFT's. |
||||
|
- Wrote **React** [components](https://github.com/Kevin-Mok/astronofty/tree/main/src/components) to synchronously upload images and metadata to IPFS and fetch and show NFT's. |
||||
|
|
||||
|
{{% /resume/project %}} |
||||
|
|
||||
|
<!--- Astronofty }}} --> |
||||
|
|
||||
|
<!--- AWS {{{ --> |
||||
|
|
||||
|
{{% resume/project name="AWS Server" |
||||
|
url="https://kevin-mok.com/server/" languages="AWS, Kubernetes, Docker, Terraform" date="May 2024" show="true" %}} |
||||
|
|
||||
|
- Deployed [various web apps](https://kevin-mok.com/server/) using **Docker** (Compose) on an |
||||
|
**AWS EC2** Debian/**Linux** server. |
||||
|
- Created **Kubernetes** [manifest files](https://github.com/Kevin-Mok/aws-minicube) to quickly recreate my server setup |
||||
|
with persistent storage/restarts and open ports. |
||||
|
- Created **Terraform** [files](https://github.com/Kevin-Mok/terraform-deploys/tree/main) |
||||
|
to deploy an AWS EC2 instance and Docker containers. |
||||
|
- Used Amazon Route 53's DNS and **NGINX** to route |
||||
|
subdomains to each web application. |
||||
|
- Wrote a **JavaScript** [server script] and [systemd service][systemd service]/[timer] |
||||
|
to 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 %}} |
||||
|
|
||||
|
<!--- AWS }}} --> |
||||
|
|
||||
|
<!--- AWS 2 {{{ --> |
||||
|
|
||||
|
{{% resume/project name="AWS Server" |
||||
|
url="https://kevin-mok.com/server/" languages="AWS, Kubernetes, Docker, Terraform" date="May 2024" show="true" %}} |
||||
|
|
||||
|
- **Deployed and maintained multiple web applications** |
||||
|
using **Docker Compose** on **AWS EC2 Debian/Linux servers**, |
||||
|
ensuring consistent environments for applications handling |
||||
|
**over 2,000+ monthly requests**. |
||||
|
- **Streamlined infrastructure management** by creating |
||||
|
Kubernetes manifest files to easily recreate server setups |
||||
|
with persistent storage, automatic restarts, and open |
||||
|
ports, **reducing the need for manual configuration**. |
||||
|
- **Automated AWS infrastructure provisioning** by writing |
||||
|
**Terraform** files to deploy **EC2** instances and Docker |
||||
|
containers, **accelerating deployment times by 80%** and |
||||
|
providing an easily reproducible infrastructure setup for |
||||
|
future projects. |
||||
|
- Improved web application accessibility and scalability by |
||||
|
configuring Amazon Route 53’s DNS and NGINX to route |
||||
|
subdomains to individual web apps, enabling seamless |
||||
|
navigation between apps and reducing DNS resolution times |
||||
|
by 25%. |
||||
|
- Built a robust uptime monitoring system by writing a |
||||
|
JavaScript server script and setting up a systemd |
||||
|
service/timer to check and display page uptime every hour, |
||||
|
ensuring near real-time monitoring and reducing downtime |
||||
|
detection time by 85%. |
||||
|
|
||||
|
{{% /resume/project %}} |
||||
|
|
||||
|
<!--- AWS 2 }}} --> |
||||
|
|
||||
|
<!--- AWS 3 {{{ --> |
||||
|
|
||||
|
{{% resume/project name="AWS Server" |
||||
|
url="https://kevin-mok.com/server/" languages="AWS, Kubernetes, Docker, Terraform" date="May 2024" show="true" %}} |
||||
|
|
||||
|
- **Deployed and maintained multiple web applications** |
||||
|
using **Docker Compose** on **AWS EC2 Debian/Linux servers**, |
||||
|
ensuring consistent environments for applications handling |
||||
|
**over 2,000+ monthly requests**. |
||||
|
- **Automated AWS infrastructure provisioning** by writing |
||||
|
**Terraform** files to deploy AWS EC2 instances and Docker |
||||
|
containers, **accelerating deployment times by 80%** and |
||||
|
providing an easily reproducible infrastructure setup. |
||||
|
|
||||
|
{{% /resume/project %}} |
||||
|
|
||||
|
<!--- AWS 3 }}} --> |
||||
|
|
||||
|
<!--- Astronofty (extended) {{{ --> |
||||
|
|
||||
|
{{% resume/project name="Astronofty" |
||||
|
url="https://github.com/Kevin-Mok/astronofty" languages="JavaScript, React, Solidity" date="Jan 2023" |
||||
|
show="true" %}} |
||||
|
|
||||
|
- **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 40%** during the demo, |
||||
|
and ensuring real-time NFT data retrieval, achieving a **75% improvement in loading times**. |
||||
|
|
||||
|
{{% /resume/project %}} |
||||
|
|
||||
|
<!--- Astronofty }}} --> |
||||
|
|
||||
|
<!--- {{{ Spotify Graphs --> |
||||
|
|
||||
|
{{% resume/project name="Spotify Graphs" |
||||
|
url="https://github.com/Kevin-Mok/spotify-lib-vis" date="June 2020 " |
||||
|
languages="Python, Django, PostgreSQL" |
||||
|
show="true" %}} |
||||
|
|
||||
|
- Web app to visualize user's library and listening |
||||
|
history from Spotify. |
||||
|
- [Fetched and organized](https://github.com/Kevin-Mok/spotify-lib-vis/blob/master/api/utils.py) user data from Spotify API into PostgreSQL database with **Django (Python)** backend. |
||||
|
- Created and tested various relational database schemas to maximize |
||||
|
efficiency for use cases. |
||||
|
- Generated various charts to visualize the artists and genres |
||||
|
of tracks in library. |
||||
|
|
||||
|
{{% /resume/project %}} |
||||
|
|
||||
|
<!--- Spotify Graphs }}} --> |
||||
|
|
||||
|
<!--- Grocery Finder {{{ --> |
||||
|
|
||||
|
{{% 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 %}} |
||||
|
|
||||
|
<!--- Grocery Finder }}} --> |
||||
|
|
||||
|
<!--- CSC369 {{{ --> |
||||
|
|
||||
|
{{% 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 %}} |
||||
|
|
||||
|
<!--- CSC369 }}} --> |
||||
|
|
||||
|
<!--- ParsaFood {{{ --> |
||||
|
|
||||
|
{{% 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 2<sup>nd</sup> 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 %}} |
||||
|
|
||||
|
<!--- ParsaFood }}} --> |
||||
|
|
||||
|
<!--- DigitalOcean {{{ --> |
||||
|
|
||||
|
{{% 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 %}} |
||||
|
|
||||
|
<!--- DigitalOcean Droplet }}} --> |
||||
|
|
@ -1,98 +0,0 @@ |
|||||
<!--- CSC369 {{{ --> |
|
||||
|
|
||||
{{% 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 %}} |
|
||||
|
|
||||
<!--- CSC369 }}} --> |
|
||||
|
|
||||
<!--- Spotify Graphs {{{ --> |
|
||||
|
|
||||
{{% 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 %}} |
|
||||
|
|
||||
<!--- Spotify Graphs }}} --> |
|
||||
|
|
||||
<!--- Grocery Finder {{{ --> |
|
||||
|
|
||||
{{% 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 %}} |
|
||||
|
|
||||
<!--- Grocery Finder }}} --> |
|
||||
|
|
||||
<!--- DigitalOcean {{{ --> |
|
||||
|
|
||||
{{% 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 %}} |
|
||||
|
|
||||
<!--- DigitalOcean Droplet }}} --> |
|
||||
|
|
||||
<!--- ParsaFood {{{ --> |
|
||||
|
|
||||
{{% 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 2<sup>nd</sup> 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 %}} |
|
||||
|
|
||||
<!--- ParsaFood }}} --> |
|
@ -0,0 +1,23 @@ |
|||||
|
# Red Hat |
||||
|
1. Reduced deployment time by 66% by implementing ability to deploy locally-compiled binaries onto Kubernetes/OpenShift using only command-line (Kubernetes/GoLang used for this and three below). |
||||
|
2. Implemented ability for Kubernetes operator to fetch data from a deployed service and update config with data to deprecate reliance on startup script. |
||||
|
3. Added startup probes to handle starting legacy application containers that require additional startup time. |
||||
|
4. Refactored probes to have default values assigned based on deployed YAML while also fixing reconciliation issues. |
||||
|
5. Rewrote the Jenkins (Groovy) nightly pipeline to run in a GitHub PR using a trigger keyword to test all the team’s submitted PR’s before merging to the main branch. |
||||
|
6. Took on tasks and contributed ideas in Agile sprint planning meetings in a team of 12 people. |
||||
|
7. Took initiative to write file to define the GitHub parameters for the above pipeline so that it can be recreated easily. |
||||
|
8. Took initiative to write documentation on how to get started with the project to onboard new developers and mentored the incoming intern. |
||||
|
|
||||
|
# Rarity Surf |
||||
|
1. Web app to give rarity rankings to NFT’s and check which are listed on the OpenSea marketplace using their API. |
||||
|
2. Reverse engineered the ranking algorithm to match the leading rarity ranking site’s rankings (scraped using Selenium) with a discrepancy of <0.25%. |
||||
|
3. Used app to frontrun purchases of top 0.5% rarity NFT’s against competing buyers. |
||||
|
4. Wrote Django (Python) backend to fetch metadata from IPFS, store rarity rankings in PostgreSQL and serve rarity data using GraphQL. |
||||
|
5. Wrote React frontend with hooks to dynamically load rarity data. Styled with Tailwind. |
||||
|
|
||||
|
# AWS |
||||
|
1. Deployed various web apps using Docker (Compose) on an AWS EC2 Debian/Linux server. |
||||
|
2. Created Kubernetes manifest files to quickly recreate my server setup with persistent storage/restarts and open ports. |
||||
|
3. Created Terraform files to deploy an AWS EC2 instance and Docker containers. |
||||
|
4. Used Amazon Route 53’s DNS and NGINX to route subdomains to each web application. |
||||
|
5. Wrote a JavaScript server script and systemd service/timer to display the uptime of my pages every hour. |
@ -0,0 +1,8 @@ |
|||||
|
# DevOps |
||||
|
AWS, Kubernetes, Terraform, Docker (Compose), Jenkins, Groovy, Go(Lang), Bash, **Linux**, **JavaScript**, **React**, **Python**, **Django**, Node.js, PostgreSQL, MongoDB, Solidity, C, **Git**, **Command Line** |
||||
|
|
||||
|
# Web Dev |
||||
|
**JavaScript**, **React**, **Python**, **Django**, Node.js, PostgreSQL, MongoDB, Bash, **Git**, **Linux**, **Command Line**, Go(Lang), AWS, Kubernetes, Terraform, Docker (Compose), Jenkins, Groovy, Solidity, C |
||||
|
|
||||
|
# Python |
||||
|
**Python**, **Django**, **Linux**, **Git**, AWS, Kubernetes, Docker (Compose), Ansible, Jenkins, Selenium, Terraform, Go(Lang), PostgreSQL, **Command Line**, Groovy, Bash, **JavaScript**, **React**, Node.js, MongoDB, Solidity, C |
@ -1,7 +1,4 @@ |
|||||
<h1 class="site-title"> |
<h1 class="site-title"> |
||||
<span class="surrounding">[</span><a href="{{ .Site.BaseURL }}"><span class="base08">K</span><span |
|
||||
class="base0f">e</span><span class="base09">v</span><span |
|
||||
class="base0a">i</span><span class="base0b">n </span><span |
|
||||
class="base0c">M</span><span class="base0d">o</span><span |
|
||||
class="base0e">k</span></a><span class="surrounding">] # _</span> |
|
||||
|
<span class="surrounding"></span><a href="{{ .Site.BaseURL }}"> |
||||
|
<span>Kevin Mok</span> |
||||
</h1> |
</h1> |
@ -1 +1 @@ |
|||||
Subproject commit f96e4a7485601fe51a4171a83063f28e79a5a06a |
|
||||
|
Subproject commit 5224501fcf9bfd456f0446ba4b579437a7e82a13 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue