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:opta
						
							Kevin-Mok:rbc-aml
						
							Kevin-Mok:resume-call-centre
						
							Kevin-Mok:resume-call-centre-stb
						
							Kevin-Mok:resume-call-centre-verisk
						
							Kevin-Mok:resume-it-support
						
							Kevin-Mok:resume-it-support-aws
						
							Kevin-Mok:resume-it-support-aws-2
						
							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-call-centre-stb
					
				
				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:opta
						
							Kevin-Mok:rbc-aml
						
							Kevin-Mok:resume-call-centre
						
							Kevin-Mok:resume-call-centre-stb
						
							Kevin-Mok:resume-call-centre-verisk
						
							Kevin-Mok:resume-it-support
						
							Kevin-Mok:resume-it-support-aws
						
							Kevin-Mok:resume-it-support-aws-2
						
							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
						
						
						
						
					
	
		
			31 Commits 
		
	
	
		
			master
			...
			resume-cal
		
	
    
				 16 changed files with 494 additions and 231 deletions
			
			
		- 
					1.gitignore
 - 
					85assets/sass/main.scss
 - 
					2content/letter
 - 
					144content/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
 - 
					2layouts/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 90365fbffeb33843719a3aa4fae284db5ac702ff | 
			
		||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue