Compare commits

..

21 Commits

Author SHA1 Message Date
58a3eeab3b Update resume 2024-10-09 10:55:12 -04:00
c6f9ad9ad1 Add Terraform/K8s links to server 2024-07-19 16:47:07 -04:00
56aa499c6a Update resume 2024-07-15 16:15:43 -04:00
87c293ce13 Bold Golang 2024-06-14 11:34:51 -04:00
9be9043b6c Rearrage socials 2024-06-13 11:18:09 -04:00
26d63d2e6a Increase socials size 2024-06-13 11:14:30 -04:00
b1f3cfdf57 Home: update education/looking for work 2024-06-13 10:58:32 -04:00
461eb2aeb6 Update Linux config 2024-06-12 10:45:19 -04:00
a7fa6b9f3e Fix config desktop screenshot, update server date
- rm card
2024-06-10 12:41:01 -04:00
d21758675c Server: AWS EC2 link 2024-06-10 12:32:22 -04:00
14c6827b79 Resume: fix Jenkins 2024-06-10 12:07:08 -04:00
052f98860d Resume: increase readability 2024-06-03 18:08:00 -04:00
7c08682c66 Resume: Terraform 2024-06-03 17:50:09 -04:00
179b3f7c7e Resume: Terraform 2024-06-01 15:45:18 -04:00
2abc9de891 Add link to site 2024-05-29 13:52:37 -04:00
16bff441df Minor changes 2024-05-29 13:50:09 -04:00
6b2a29b078 Kogito PR links 2024-05-24 10:08:12 -04:00
1881fd9778 Resume spacing/font sizes 2024-05-24 09:43:39 -04:00
24f58db4f9 Work exp colors 2024-05-24 09:28:07 -04:00
61dc603da2 Add Astronofty to resume 2024-05-23 19:27:01 -04:00
c9e307dd70 AWS server to resume 2024-05-23 19:17:27 -04:00
16 changed files with 138 additions and 141 deletions

1
README.md Normal file
View File

@@ -0,0 +1 @@
https://kevin-mok.com/

View File

@@ -106,16 +106,11 @@ body {
// line-height: 1.5;
line-height: 1.57;
// font-size: 100%;
// font-size: 15px;
font-size: 17px;
font-size: 15px;
// font-size: 20px;
// font-size: 22px;
/* font-family: 'Source Code Pro', monospace; */
// font-family: 'Hack', monospace;
// body {
// font-family: 'Times New Roman', serif;
font-family: "Computer Modern Serif";
// }
font-family: 'Hack', monospace;
display: flex;
flex-direction: column;
min-height: 100vh;
@@ -500,7 +495,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{
@@ -508,7 +503,6 @@ header {// {{{
}
}
a {// {{{
color: #4287cd;
text-decoration: none;
&:hover {
text-decoration: none;
@@ -520,8 +514,7 @@ header {// {{{
.row {
// flex-grow: 1;
// color: $base05;
color: #4287cd;
color: $base05;
img {
height: 1em;
@@ -541,7 +534,6 @@ header {// {{{
.url-info {
font-size: 1em;
margin-left: 5px;
// text-decoration: underline;
// position: relative;
// left: -8px;
// @media (max-width: $phone-width) {
@@ -566,8 +558,7 @@ header {// {{{
}// }}}
h1 {// {{{
// color: $base-orange;
color: black;
color: $base-orange;
// margin-top: 1.3rem;
margin-top: 1rem;
// font-size: 1.2em;
@@ -578,7 +569,7 @@ header {// {{{
// }
}// }}}
h2 {// {{{
//color: $base-orange;
color: $base-orange;
margin-top: .5rem;
font-size: 1em;
@@ -608,7 +599,7 @@ header {// {{{
}// }}}
.section-header {
margin-top: .7em;
margin-top: 1em;
margin-bottom: 0.4em;
}
@@ -645,9 +636,7 @@ header {// {{{
}
.project-title {
// color: $base-blue;
color: black;
display: inline;
color: $base-blue;
}
.project-link {
@@ -688,8 +677,7 @@ header {// {{{
}// }}}
.company {
// color: #fe4646;
color: black;
color: #fe4646;
font-weight: bold;
font-size: 1.2em;
margin-bottom: 5px;
@@ -698,26 +686,18 @@ header {// {{{
.position {
// color: black;
// color: $base-sky-blue;
// color: $base-blue;
color: black;
color: $base-blue;
font-weight: bold;
// font-style: italic;
// font-size: 1.1em;
font-size: 1em;
font-size: 1.1em;
// margin-bottom: 5px;
margin-bottom: 15px;
}
.languages {
// font-style: italic;
// font-size: .9em;
}
.institution {
// color: $base-yellow;
// color: $base-dark-orange;
// color: $base-blue;
color: black;
color: $base-blue;
font-weight: bold;
font-size: 1.1em;
margin-bottom: 5px;
@@ -823,21 +803,16 @@ header {// {{{
h1.site-title {// {{{
text-align: center;
// font-size: 4.2em;
// font-size: 3.2em;
font-size: 2.5em;
font-size: 3.2em;
// 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 {
color: black;
// text-decoration: none;
text-decoration: underline;
text-decoration-thickness: 2px;
text-underline-offset: 5px;
text-decoration: none;
}
// @media (max-width: $phone-width) {
@@ -1003,8 +978,7 @@ 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 */

View File

@@ -26,9 +26,9 @@ menu:
- name: config
url: /config
weight: 10
- name: card
url: /card
weight: 15
# - name: card
# url: /card
# weight: 15
# - name: letter
# url: /letter
# weight: 17

View File

@@ -6,7 +6,7 @@ layout: single
---
<!--- Intro {{{ -->
![desktop-screenshot](https://img.khkm.tk/uploads/big/b2bd45e8f436d389ecb787b5c61c951a.png)
![desktop-screenshot](/img/config/desktop-screenshot.png)
*Screenshot from my dual-monitor setup.*
This [repository][lc-repo] contains the dotfiles to increase my workflow
@@ -18,17 +18,17 @@ efficiency. They are also for my Linux [rice][ricing_explanation].
<!--- Main Programs {{{ -->
## Main Programs
* **OS**: [Arch Linux](https://www.archlinux.org/) ([packages](txt/nzxt-pkgs.txt))
* **OS**: [Arch Linux](https://www.archlinux.org/) ([packages](https://git.kevin-mok.com/Kevin-Mok/linux-config/src/branch/master/txt/arch-2-pkgs.txt))
```
$ systemd-analyze
Startup finished in 2.341s (kernel) + 1.085s (userspace) = 3.426s
graphical.target reached after 1.085s in userspace
```
* **Terminal**: [rxvt-unicode-pixbuf](https://www.wikiwand.com/en/Rxvt)
* **Shell**: [Zsh](http://zsh.sourceforge.net/) + [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh)
* **Window Manager**: [i3-gaps](https://github.com/Airblader/i3)
* **Editor**: [Neovim](https://github.com/neovim/neovim) ([plugins](dotfiles/.vimrc#L51))
* **File Manager**: [ranger](https://ranger.github.io/)
* **Terminal**: [kitty](https://sw.kovidgoyal.net/kitty/)
* **Shell**: [fish](https://fishshell.com/)
* **Window Manager**: [i3-gaps](https://i3wm.org/)
* **Editor**: [neovim](https://neovim.io/) ([plugins](https://git.kevin-mok.com/Kevin-Mok/linux-config/src/branch/master/dot_vimrc.tmpl#L147-L359))
* **File Manager**: [ranger](https://github.com/ranger/ranger?tab=readme-ov-file#ranger-193)/[PCManFM](https://en.wikipedia.org/wiki/PCMan_File_Manager)
<!--- }}} Basic Info -->
<!--- Setup {{{ -->

View File

@@ -3,59 +3,10 @@ title: "Resume"
date: 2019-02-11T07:50:51-05:00
draft: false
---
{{% resume/section "Web Dev Projects" %}}<!--- {{{ -->
<!--- Rarity Surf {{{ -->
{{% 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
marketplaces 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 %}}
<!--- Rarity Surf }}} -->
<!--- Astronofty {{{ -->
{{% 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 80%** during the demo.
{{% /resume/project %}}
<!--- Astronofty }}} -->
{{% resume/section "Work Experience" %}}<!--- {{{ -->
{{% resume/work-experience name="Red Hat" title="Cloud/Software Engineer Intern" languages="Kubernetes, GoLang, Jenkins" date="May 2022 — Aug 2023" %}}
{{% resume/work-experience name="Red Hat"
title="Cloud/Software Engineer Intern" languages="Kubernetes, GoLang, Jenkins" date="May 2020 — Aug 2021" %}}
- **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
@@ -73,12 +24,17 @@ show="true" %}}
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.
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%**.
- **Demonstrated leadership and collaboration** by actively
contributing to **Agile** sprint planning in a 12-member team,
driving improvement in sprint velocity through
optimized task delegation and idea generation.
- **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
@@ -91,21 +47,58 @@ show="true" %}}
{{% /resume/section %}}<!--- }}} -->
{{% resume/section projects %}}<!--- {{{ -->
<!--- 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 sites 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 }}} -->
{{% /resume/section %}}<!--- }}} -->
{{% resume/section skills %}}<!--- {{{ -->
**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
**JavaScript**, **React**, **Python**, **Django**, Node.js, 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 (St. George)"
{{% resume/education name="University of Toronto"
title="Computer Science Specialist — 3.84 GPA (CS). Graduated with High Distinction." date="2019 — 2024" %}}
{{% /resume/section %}}<!--- }}} -->
<!-- vim: fdm=marker -->
{{% resume/section "References" %}}<!--- {{{ -->
{{% resume/references %}}
{{% /resume/section %}}<!--- }}} -->
<!-- vim: fdm=marker -->

View File

@@ -1,3 +1,19 @@
<!--- 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"

View File

@@ -1,16 +1,20 @@
---
title: "Server Apps"
date: 2019-09-22
date: 2024-06-10
draft: false
layout: single
js: ["server-table"]
---
Here is a list of apps that I am running on my [DigitalOcean
droplet][do-droplet]. Their [statuses] are updated every hour using a
Here is a list of apps that I am running on my [AWS EC2][AWS EC2 info]
Debian instance/[DigitalOcean
droplet][do-droplet] using Docker (Compose) and my [Terraform
files](https://github.com/Kevin-Mok/terraform-deploys/tree/main).
I also have [Kubernetes manifest files](https://github.com/Kevin-Mok/aws-minicube)
that can recreate this server setup. Their statuses are updated every hour using a
[Node.js script][update-script] and a [systemd service]/[timer].
[AWS EC2 info]: https://aws.amazon.com/pm/ec2/?gclid=CjwKCAjwyJqzBhBaEiwAWDRJVA8xkzlFBVRieWU_oiTxnHHfRgTnfN9WlnYON3UptS4aTtjaYRbVJRoCju8QAvD_BwE&trk=8c0f4d22-7932-45ae-9a50-7ec3d0775c47&sc_channel=ps&ef_id=CjwKCAjwyJqzBhBaEiwAWDRJVA8xkzlFBVRieWU_oiTxnHHfRgTnfN9WlnYON3UptS4aTtjaYRbVJRoCju8QAvD_BwE:G:s&s_kwcid=AL!4422!3!472464674288!e!!g!!aws%20ec2!11346198414!112250790958
[do-droplet]: https://www.digitalocean.com/products/droplets/
[statuses]: https://kevin-mok.com/server-apps.json
[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
[update-script]: https://git.kevin-mok.com/Kevin-Mok/server-pages/src/branch/master/server-status.js

View File

@@ -15,6 +15,13 @@
<!-- <a href="{{ "credits" | relURL }}">Credits</a> · -->
</span>
<span id="social-icons" class="col-xs-4">
<a href="https://www.linkedin.com/in/Kev-Mok" target="_blank">
<img src="{{ "img/social/linkedin.svg" | relURL }}" alt="linkedin-logo">
</a>
<a href="mailto:me@kevin-mok.com" target="_blank">
<img src="{{ "img/social/email.svg" | relURL }}"
alt="envelope">
·
<a href="https://github.com/Kevin-Mok" target="_blank">
<img src="{{ "img/social/github.svg" | relURL }}"
alt="github-logo">
@@ -36,12 +43,6 @@
alt="reddit-logo">
</a>
.
<a href="https://www.linkedin.com/in/Kev-Mok" target="_blank">
<img src="{{ "img/social/linkedin.svg" | relURL }}" alt="linkedin-logo">
</a>
<a href="mailto:me@kevin-mok.com" target="_blank">
<img src="{{ "img/social/email.svg" | relURL }}"
alt="envelope">
</a>
</span>
<span class="col-xs-2">

View File

@@ -7,11 +7,23 @@
<a href="https://www.redhat.com/" target="_blank">Red Hat</a>.
</li>
<li>
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 graduated University of Toronto as a Computer
Science Scecialist in 2023.
</li>
<li>
I'm greatly interested in all things Linux and
I am currently looking for full-time work! You can
view
<a href="http://localhost:1313/resume/" target="_blank">my resume</a>
on my site can
reach me on my
<a href="https://www.linkedin.com/in/kev-mok" target="_blank">LinkedIn</a>
or email me at me at kevin-mok.com.
</li>
<li>
I'm greatly interested in Linux (been using
<a href="https://archlinux.org/" target="_blank">Arch Linux </a>
since 2019) and a supporter of
<a href="https://www.gnu.org/philosophy/floss-and-foss.en.html"
target="_blank">FOSS/FLOSS</a>.
</li>

View File

@@ -6,15 +6,16 @@
</a>
<p>+</p>
</div>
<div class="equation-part" id="uoft-part">
<a href="https://www.utoronto.ca/" target="_blank">
<img src="{{ "img/home/uoft-logo.svg" | relURL }}" alt="uoft-logo">
<div class="equation-part">
<a href="https://archlinux.org/" target="_blank">
<!-- <img src="{{ "img/home/gnu.svg" | relURL }}" id="gnu" alt="gnu-logo"> -->
<img src="{{ "img/home/arch.svg" | relURL }}" id="gnu" alt="gnu-logo">
</a>
<p>+</p>
</div>
<div class="equation-part">
<a href="https://www.gnu.org/" target="_blank">
<img src="{{ "img/home/gnu.svg" | relURL }}" id="gnu" alt="gnu-logo">
<div class="equation-part" id="uoft-part">
<a href="https://www.utoronto.ca/" target="_blank">
<img src="{{ "img/home/uoft-logo.svg" | relURL }}" alt="uoft-logo">
</a>
</div>
<p>=</p>

View File

@@ -4,7 +4,6 @@
<h2 class="project-title">
{{ .Get "name" }}
</h2>
<span><{{ .Get "languages" }}></span>
</div>
<div class="col-4 text-right date">{{ .Get "date" }}</div>
</div>
@@ -14,4 +13,3 @@
</div>
</div>
</div>

View File

@@ -1,9 +1,10 @@
<div class="references">
<span>
See my
<a href="https://www.linkedin.com/in/Kev-Mok"
See my LinkedIn for
<a href="https://www.linkedin.com/in/kev-mok/details/recommendations/?detailScreenTabIndex=0"
target="_blank">
LinkedIn</a> for references from my Red Hat managers/mentee,
a startup client and a graduate student mentor.
references</a> from my
Red Hat managers/mentee, a startup client and a graduate
student mentor.
</span>
</div>

View File

@@ -11,8 +11,4 @@
<span class="position">
{{ .Get "title" }}
</span>
<span class="languages">
<{{ .Get "languages" }}>
</span>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 MiB