Compare commits
7 Commits
master
...
cover-lett
| Author | SHA1 | Date | |
|---|---|---|---|
| ef89cf3dce | |||
| 6a02840844 | |||
| 7daf438efb | |||
| 28d697c815 | |||
| 0c51ba1b76 | |||
| 29f8b13011 | |||
| b196251595 |
@@ -14,6 +14,7 @@ $base-sky-blue: #66cccc;
|
||||
$base-blue: #6699cc;
|
||||
$base-violet: #cc99cc;
|
||||
$base-dark-orange: #d27b53;
|
||||
$link-color: #4287cd;
|
||||
|
||||
/* .base00 { color: #2d2d2d; }
|
||||
.base01 { color: #393939; }
|
||||
@@ -103,14 +104,17 @@ body {
|
||||
margin: 0;
|
||||
background-color: $background-color;
|
||||
color: $color;
|
||||
// line-height: 1.5;
|
||||
line-height: 1.57;
|
||||
line-height: 1.5;
|
||||
// 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;
|
||||
@@ -172,8 +176,7 @@ footer {
|
||||
margin-top: 2rem;
|
||||
$vertical-margin: .2em;
|
||||
text-align: center;
|
||||
// font-size: 0.8em;
|
||||
font-size: .85em;
|
||||
font-size: 0.8em;
|
||||
color: #747369;
|
||||
// bottom: 0;
|
||||
// position: absolute;
|
||||
@@ -213,8 +216,7 @@ footer {
|
||||
// padding-right: .9em;
|
||||
|
||||
img {
|
||||
// height: 1.5em;
|
||||
height: 3em;
|
||||
height: 1.5em;
|
||||
@include vert-margin-rem(.2);
|
||||
padding-left: .5em;
|
||||
opacity: .6;
|
||||
@@ -372,7 +374,7 @@ header {// {{{
|
||||
display: inline;
|
||||
|
||||
&#gnu {
|
||||
// background-color: $base04;
|
||||
background-color: $base04;
|
||||
// background-color: $base05;
|
||||
}
|
||||
}
|
||||
@@ -503,18 +505,20 @@ header {// {{{
|
||||
}
|
||||
}
|
||||
a {// {{{
|
||||
color: $link-color;
|
||||
text-decoration: none;
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}// }}}
|
||||
|
||||
// font-size: .9em;
|
||||
font-size: .8em;
|
||||
font-size: 1.4em;
|
||||
// font-size: .8em;
|
||||
|
||||
.row {
|
||||
// flex-grow: 1;
|
||||
color: $base05;
|
||||
// color: $base05;
|
||||
color: $link-color;
|
||||
|
||||
img {
|
||||
height: 1em;
|
||||
@@ -532,7 +536,6 @@ header {// {{{
|
||||
}
|
||||
|
||||
.url-info {
|
||||
font-size: 1em;
|
||||
margin-left: 5px;
|
||||
// position: relative;
|
||||
// left: -8px;
|
||||
@@ -548,9 +551,7 @@ header {// {{{
|
||||
#resume {// {{{
|
||||
a {// {{{
|
||||
// text-decoration: none;
|
||||
// color: $base-blue;
|
||||
color: #4287cd;
|
||||
// color: blue;
|
||||
color: $link-color;
|
||||
text-decoration: underline;
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
@@ -558,11 +559,11 @@ header {// {{{
|
||||
}// }}}
|
||||
|
||||
h1 {// {{{
|
||||
color: $base-orange;
|
||||
// color: $base-orange;
|
||||
color: black;
|
||||
// margin-top: 1.3rem;
|
||||
margin-top: 1rem;
|
||||
// font-size: 1.2em;
|
||||
font-size: 1.3em;
|
||||
font-size: 1.2em;
|
||||
|
||||
// @media (max-width: $phone-width) {
|
||||
// margin-top: .75rem;
|
||||
@@ -598,19 +599,10 @@ header {// {{{
|
||||
// }
|
||||
}// }}}
|
||||
|
||||
.section-header {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 0.4em;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.work-experience {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#projects {// {{{
|
||||
// // h1 {
|
||||
// // margin-bottom: 3px;
|
||||
@@ -622,7 +614,6 @@ header {// {{{
|
||||
h2 {
|
||||
color: $base-sky-blue;
|
||||
display: inline;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
img {
|
||||
@@ -636,13 +627,11 @@ header {// {{{
|
||||
}
|
||||
|
||||
.project-title {
|
||||
color: $base-blue;
|
||||
// color: $base-blue;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.project-link {
|
||||
&:link {
|
||||
text-decoration: none;
|
||||
}
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
@@ -677,7 +666,8 @@ header {// {{{
|
||||
}// }}}
|
||||
|
||||
.company {
|
||||
color: #fe4646;
|
||||
// color: #fe4646;
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 5px;
|
||||
@@ -686,10 +676,12 @@ header {// {{{
|
||||
.position {
|
||||
// color: black;
|
||||
// color: $base-sky-blue;
|
||||
color: $base-blue;
|
||||
// color: $base-blue;
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
// font-style: italic;
|
||||
font-size: 1.1em;
|
||||
// font-size: 1.1em;
|
||||
font-size: 1em;
|
||||
// margin-bottom: 5px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
@@ -697,7 +689,8 @@ header {// {{{
|
||||
.institution {
|
||||
// color: $base-yellow;
|
||||
// color: $base-dark-orange;
|
||||
color: $base-blue;
|
||||
// color: $base-blue;
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
font-size: 1.1em;
|
||||
margin-bottom: 5px;
|
||||
@@ -719,6 +712,8 @@ header {// {{{
|
||||
// }
|
||||
|
||||
&.letter {
|
||||
font-size: 1.4em;
|
||||
// font-size: 2em;
|
||||
margin-top: 2em;
|
||||
line-height: 1.5em;
|
||||
|
||||
@@ -803,16 +798,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) {
|
||||
|
||||
10
config.yaml
10
config.yaml
@@ -1,5 +1,5 @@
|
||||
# baseURL: http://localhost:1313/
|
||||
baseURL: https://kevin-mok.com/
|
||||
baseURL: http://localhost:1313/
|
||||
# baseURL: https://kevin-mok.com/
|
||||
# baseURL: /home/kevin/coding/mf-site/public
|
||||
languageCode: en-us
|
||||
# title: Kevin Mok's Website
|
||||
@@ -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
|
||||
|
||||
@@ -6,7 +6,7 @@ layout: single
|
||||
---
|
||||
<!--- Intro {{{ -->
|
||||
|
||||

|
||||

|
||||
*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](https://git.kevin-mok.com/Kevin-Mok/linux-config/src/branch/master/txt/arch-2-pkgs.txt))
|
||||
* **OS**: [Arch Linux](https://www.archlinux.org/) ([packages](txt/nzxt-pkgs.txt))
|
||||
```
|
||||
$ systemd-analyze
|
||||
Startup finished in 2.341s (kernel) + 1.085s (userspace) = 3.426s
|
||||
graphical.target reached after 1.085s in userspace
|
||||
```
|
||||
* **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)
|
||||
* **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/)
|
||||
<!--- }}} Basic Info -->
|
||||
|
||||
<!--- Setup {{{ -->
|
||||
|
||||
@@ -5,93 +5,90 @@ draft: false
|
||||
---
|
||||
{{% resume/section "Work Experience" %}}<!--- {{{ -->
|
||||
|
||||
{{% 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
|
||||
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%**.
|
||||
- **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
|
||||
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/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 %}}<!--- {{{ -->
|
||||
|
||||
<!--- Astronofty {{{ -->
|
||||
|
||||
{{% resume/project name="Astronofty"
|
||||
url="https://github.com/Kevin-Mok/astronofty" date="Jan 2023"
|
||||
show="true" %}}
|
||||
|
||||
- Created for a 36 hour hackathon (UofTHacks X) where it **came 2nd overall**.
|
||||
- Created and deployed a smart contract with **Solidity** on
|
||||
the Ethereum blockchain to create/buy/sell NFT's
|
||||
using MetaMask.
|
||||
- Wrote a **React** hook to fetch and show listed NFT's, NFT details and owned NFT's.
|
||||
- Used API to synchronously upload images and metadata to IPFS.
|
||||
|
||||
{{% /resume/project %}}
|
||||
|
||||
<!--- Astronofty }}} -->
|
||||
|
||||
<!--- 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%**.
|
||||
- Web app to give rarity rankings to NFT's within minutes of their metadata being revealed and check which are listed (based on rarity and price filters) on the OpenSea marketplace using their API.
|
||||
- Reverse engineered the ranking algorithm to match the
|
||||
leading rarity ranking site's rankings (scraped using
|
||||
Selenium) with a **discrepancy of <0.25%**.
|
||||
- Used app to frontrun purchases of **top 5%** rarity NFT's
|
||||
against competing buyers.
|
||||
- Wrote **Django** backend to fetch metadata from IPFS, store rarity rankings in PostgreSQL and serve rarity data using GraphQL.
|
||||
- Wrote **React** frontend with hooks to dynamically load rarity data. Styled with Tailwind.
|
||||
|
||||
{{% /resume/project %}}
|
||||
|
||||
<!--- Rarity Surf }}} -->
|
||||
|
||||
<!--- DigitalOcean {{{ -->
|
||||
|
||||
{{% 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.
|
||||
|
||||
[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 }}} -->
|
||||
|
||||
{{% /resume/section %}}<!--- }}} -->
|
||||
|
||||
{{% resume/section skills %}}<!--- {{{ -->
|
||||
|
||||
**JavaScript**, **React**, **Python**, **Django**, Node.js, PostgreSQL, MongoDB, Bash, **Git**, **Linux**, **Command Line**, Go(Lang), AWS, Kubernetes, Terraform, Docker (Compose), Jenkins, Groovy, Solidity, C
|
||||
Kubernetes, **JavaScript**, **React**, **Python**, Go, Bash, Solidity, C, **Django**, Node.js, Jenkins, PostgreSQL, **Linux**, **Git**, **Command Line**
|
||||
|
||||
{{% /resume/section %}}<!--- }}} -->
|
||||
|
||||
{{% resume/section education %}}<!--- {{{ -->
|
||||
|
||||
{{% resume/education name="University of Toronto"
|
||||
title="Computer Science Specialist — 3.84 GPA (CS). Graduated with High Distinction." date="2019 — 2024" %}}
|
||||
title="Computer Science Specialist — 3.84 GPA (CS)" date="2018 — 2023" %}}
|
||||
|
||||
{{% /resume/section %}}<!--- }}} -->
|
||||
|
||||
|
||||
@@ -1,19 +1,3 @@
|
||||
<!--- 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"
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
# To-Do
|
||||
- check price of AWS server
|
||||
- run Docker apps on it
|
||||
- run domain
|
||||
- run/create Docker compose
|
||||
- Dockerize app
|
||||
|
||||
# Done
|
||||
|
||||
# Points
|
||||
- run/deploy K8s locally on minikube using kubectl
|
||||
- features
|
||||
- Dockerize app
|
||||
- run Docker on server (AWS)
|
||||
|
||||
# Replace
|
||||
- personal server
|
||||
- Astronofy
|
||||
@@ -1,20 +1,16 @@
|
||||
---
|
||||
title: "Server Apps"
|
||||
date: 2024-06-10
|
||||
date: 2019-09-22
|
||||
draft: false
|
||||
layout: single
|
||||
js: ["server-table"]
|
||||
---
|
||||
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
|
||||
Here is a list of apps that I am running on my [DigitalOcean
|
||||
droplet][do-droplet]. 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
|
||||
|
||||
@@ -15,18 +15,11 @@
|
||||
<!-- <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">
|
||||
</a>
|
||||
<a href="https://git.kevin-mok.com/Kevin-Mok?tab=activity" target="_blank">
|
||||
<a href="https://git.kevin-mok.com/" target="_blank">
|
||||
<img src="{{ "img/social/gitea.svg" | relURL }}" alt="gitea-logo">
|
||||
</a>
|
||||
·
|
||||
@@ -43,6 +36,12 @@
|
||||
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">
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
{{ hugo.Generator }}
|
||||
<meta name="google-site-verification" content="3aZhrY5bFgQY0HY2DNNUhbkuIfVEcwkrQHnbJd8jCCQ" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- <script src="https://cdn.khkm.tk/live.js" charset="utf-8"></script> -->
|
||||
<!-- <script src="https://cdn.khkm.gq/live.js" charset="utf-8"></script> -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
||||
@@ -20,6 +20,8 @@
|
||||
<!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Code+Pro:400,700" type="text/css"> -->
|
||||
<!-- <link rel='stylesheet' href='//cdn.jsdelivr.net/npm/hack-font@3.3.0/build/web/hack-subset.css'> -->
|
||||
<!-- <link rel="stylesheet" href="https://meyerweb.com/eric/tools/css/reset/reset.css" type="text/css" media="all" /> -->
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="https://cdn.rawgit.com/dreampulse/computer-modern-web-font/master/fonts.css">
|
||||
<link rel="stylesheet" href="{{ "css/style.css" | relURL }}" type="text/css">
|
||||
{{ $main_sass := resources.Get "sass/main.scss" }}
|
||||
{{ $main_style := $main_sass | resources.ToCSS }}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
<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>
|
||||
|
||||
@@ -1,33 +1,10 @@
|
||||
<div id="about">
|
||||
<h2>Welcome to my site!</h2>
|
||||
<p>
|
||||
I'm Kevin Mok. Here are a few things about myself!
|
||||
<ul>
|
||||
<li>I'm an Ex-Cloud Engineer Intern at
|
||||
<a href="https://www.redhat.com/" target="_blank">Red Hat</a>.
|
||||
</li>
|
||||
<li>
|
||||
I'm graduated University of Toronto as a Computer
|
||||
Science Scecialist in 2023.
|
||||
</li>
|
||||
<li>
|
||||
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
|
||||
I'm Kevin Mok - a Computer Science
|
||||
student at the University of Toronto, and I'm greatly interested in all things Linux and
|
||||
<a href="https://www.gnu.org/philosophy/floss-and-foss.en.html"
|
||||
target="_blank">FOSS/FLOSS</a>.
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
{{ partial "home/me-equation.html" . }}
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
<div class="me-equation">
|
||||
<div class="equation-part">
|
||||
<a href="https://www.redhat.com/" target="_blank">
|
||||
<img src="{{ "img/home/red-hat.svg" | relURL }}"
|
||||
alt="red-hat-logo">
|
||||
<a href="https://www.gnu.org/" target="_blank">
|
||||
<img src="{{ "img/home/gnu.svg" | relURL }}" id="gnu" alt="gnu-logo">
|
||||
</a>
|
||||
<p>+</p>
|
||||
</div>
|
||||
<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 href="https://www.wikiwand.com/en/Arch_Linux" target="_blank">
|
||||
<img src="{{ "img/home/arch.svg" | relURL }}" alt="linux-logo">
|
||||
<!-- <img src="{{ "img/home/larbs.png" | relURL }}" alt="linux-logo"> -->
|
||||
</a>
|
||||
<p>+</p>
|
||||
</div>
|
||||
@@ -17,8 +16,8 @@
|
||||
<a href="https://www.utoronto.ca/" target="_blank">
|
||||
<img src="{{ "img/home/uoft-logo.svg" | relURL }}" alt="uoft-logo">
|
||||
</a>
|
||||
</div>
|
||||
<p>=</p>
|
||||
</div>
|
||||
<div class="equation-part">
|
||||
<img src="{{ "img/home/hexatar.png" | relURL }}" id="hexatar" alt="my-avatar">
|
||||
</div>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<div id="linkedin" class="col text-right">
|
||||
<a href="https://www.linkedin.com/in/Kev-Mok" target="_blank">
|
||||
<span class="url-info">
|
||||
Kev-Mok
|
||||
linkedin.com/in/Kev-Mok
|
||||
</span>
|
||||
<img src="{{ "img/social/linkedin.svg" | relURL }}" alt="linkedin-icon">
|
||||
</a>
|
||||
@@ -28,11 +28,11 @@
|
||||
</a>
|
||||
</div>
|
||||
<div id="website" class="col text-right">
|
||||
<a href="https://kevin-mok.com/" target="_blank">
|
||||
<a href="https://github.com/Kevin-Mok" target="_blank">
|
||||
<span class="url-info">
|
||||
kevin-mok.com
|
||||
github.com/Kevin-Mok
|
||||
</span>
|
||||
<img src="{{ "img/resume/link.svg" | relURL }}" alt="link-icon">
|
||||
<img src="{{ "img/social/github.svg" | relURL }}" alt="link-icon">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
</div>
|
||||
<div class="col text-right date">{{ .Get "date" }}</div>
|
||||
</div>
|
||||
<!-- <span class="title"> -->
|
||||
<span>
|
||||
<span class="title">
|
||||
{{ .Get "title" }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,9 +1,17 @@
|
||||
<div class="project">
|
||||
<div class="row project-header">
|
||||
<div class="col-8 text-left">
|
||||
<a class="project-link" href="{{ .Get "url" }}" target="_blank">
|
||||
<img src="{{ "img/resume/link.svg" | relURL }}" alt="link-icon">
|
||||
</a>
|
||||
<button class="btn" type="button" data-toggle="collapse"
|
||||
data-target="#{{ .Get "name" | lower | urlize }}-details"
|
||||
aria-expanded="false" aria-controls="{{ .Get "name" | lower | urlize }}-details">
|
||||
<h2 class="project-title">
|
||||
{{ .Get "name" }}
|
||||
<img class="down-triangle" src="{{ "img/resume/down-triangle.png" | relURL }}" alt="link-icon">
|
||||
</h2>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-4 text-right date">{{ .Get "date" }}</div>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
<div class="references">
|
||||
<span>
|
||||
See my LinkedIn for
|
||||
<a href="https://www.linkedin.com/in/kev-mok/details/recommendations/?detailScreenTabIndex=0"
|
||||
See my
|
||||
<a href="https://www.linkedin.com/in/Kev-Mok"
|
||||
target="_blank">
|
||||
references</a> from my
|
||||
Red Hat managers/mentee, a startup client and a graduate
|
||||
student mentor.
|
||||
LinkedIn
|
||||
</a>
|
||||
for references from my Red Hat managers/mentee and a
|
||||
startup client.
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
<div class="work-experience">
|
||||
<div class="row">
|
||||
<div class="col-8 text-left">
|
||||
<p class="company">
|
||||
{{ .Get "name" }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col text-right date">{{ .Get "date" }}</div>
|
||||
</div>
|
||||
<!-- <span class="title"> -->
|
||||
<span class="position">
|
||||
{{ .Get "title" }}
|
||||
</span>
|
||||
</div>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.9 MiB |
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="b6bdd2b4-52ab-488a-9a30-1e6d1d7dd2d4" data-name="Layer 1" viewBox="0 0 192.30001 146" version="1.1" sodipodi:docname="logo.svg" width="192.3" height="146" inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||
<metadata id="metadata15">
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1920" inkscape:window-height="1007" id="namedview13" showgrid="false" fit-margin-top="1" fit-margin-right="1" fit-margin-bottom="1" fit-margin-left="1" inkscape:zoom="0.45930043" inkscape:cx="306.89999" inkscape:cy="73" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="b6bdd2b4-52ab-488a-9a30-1e6d1d7dd2d4"/>
|
||||
<defs id="defs4">
|
||||
<style id="style2">.a737459c-e8c7-4afa-8008-f6cfd15ccda2{fill:#e00;}</style>
|
||||
</defs>
|
||||
<path class="a737459c-e8c7-4afa-8008-f6cfd15ccda2" d="m 128,84 c 12.5,0 30.6,-2.6 30.6,-17.5 a 19.53,19.53 0 0 0 -0.3,-3.4 L 150.9,30.7 C 149.2,23.6 147.7,20.3 135.2,14.1 125.5,9.1 104.4,1 98.1,1 92.2,1 90.5,8.5 83.6,8.5 76.9,8.5 72,2.9 65.7,2.9 c -6,0 -9.9,4.1 -12.9,12.5 0,0 -8.4,23.7 -9.5,27.2 a 6.15,6.15 0 0 0 -0.2,1.9 C 43,53.7 79.3,83.9 128,84 m 32.5,-11.4 c 1.7,8.2 1.7,9.1 1.7,10.1 0,14 -15.7,21.8 -36.4,21.8 C 79,104.5 38.1,77.1 38.1,59 a 18.35,18.35 0 0 1 1.5,-7.3 C 22.8,52.5 1,55.5 1,74.7 1,106.2 75.6,145 134.6,145 c 45.3,0 56.7,-20.5 56.7,-36.7 0,-12.7 -11,-27.1 -30.8,-35.7" id="path8" inkscape:connector-curvature="0" style="fill:#ee0000"/>
|
||||
<path d="m 160.5,72.6 c 1.7,8.2 1.7,9.1 1.7,10.1 0,14 -15.7,21.8 -36.4,21.8 C 79,104.5 38.1,77.1 38.1,59 a 18.35,18.35 0 0 1 1.5,-7.3 l 3.7,-9.1 a 6.15,6.15 0 0 0 -0.2,1.9 c 0,9.2 36.3,39.4 84.9,39.4 12.5,0 30.6,-2.6 30.6,-17.5 A 19.53,19.53 0 0 0 158.3,63 Z" id="path10" inkscape:connector-curvature="0"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 465 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 465 KiB |
Submodule static/pdf updated: 404fd021d2...a0d59bda6c
Reference in New Issue
Block a user