forked from mirrors/Awesome-CV
Compare commits
48 commits
379-rg-orc
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
e6efa6be7b | ||
|
d463927a8c | ||
|
74fc25c36f | ||
|
e076d0ed41 | ||
|
560c3f2442 | ||
|
6efaf2ced1 | ||
|
a79de5d426 | ||
|
c5385444d6 | ||
|
a7b4d1b51b | ||
|
da661243bc | ||
|
03df20ccab | ||
|
e140258764 | ||
|
4b55638cc3 | ||
|
72a350157a | ||
|
6771b9fb38 | ||
|
0d11cb0163 | ||
|
7c16e373f9 | ||
|
063fbc0d85 | ||
|
5b05d93565 | ||
|
1a5691e63f | ||
|
af40bb01d9 | ||
|
2d6d8644db | ||
|
aba4de9602 | ||
|
405506037b | ||
|
bdd64051f1 | ||
|
61021a7f70 | ||
|
8bffe694f9 | ||
|
a944c26b24 | ||
|
66a2128cad | ||
|
5c5699a818 | ||
|
e55bd80320 | ||
|
f49d0adf7c | ||
|
d375504c37 | ||
|
0a8e6215b5 | ||
|
2901266b32 | ||
|
e3dbdff290 | ||
|
1c95608002 | ||
|
3280a87599 | ||
|
db80998222 | ||
|
1d0a7d6203 | ||
|
959bae2ef6 | ||
|
c1180c50d7 | ||
|
52ef4af481 | ||
|
44c5ec3e7b | ||
|
a932a66e1e | ||
|
9fb7dadb2f | ||
|
444f0db6ed | ||
|
9d66734e3b |
38 changed files with 746 additions and 120 deletions
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
* @posquit0 @OJFord
|
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
0
.github/labeler.yaml
vendored
Normal file
0
.github/labeler.yaml
vendored
Normal file
40
.github/labels.yaml
vendored
Normal file
40
.github/labels.yaml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# Warning
|
||||||
|
- color: "ee0701"
|
||||||
|
description: "Categorize bug reports."
|
||||||
|
name: ":warning: bug"
|
||||||
|
- color: "ee0701"
|
||||||
|
description: "Categorize vulnerability reports."
|
||||||
|
name: ":warning: vulnerability"
|
||||||
|
|
||||||
|
# Highlight
|
||||||
|
- color: "0e8a16"
|
||||||
|
description: "Good for newcomers."
|
||||||
|
name: ":fire: good first issue"
|
||||||
|
- color: "0e8a16"
|
||||||
|
description: "Extra attention is needed."
|
||||||
|
name: ":fire: help wanted"
|
||||||
|
|
||||||
|
# Cancel
|
||||||
|
- color: "b60205"
|
||||||
|
description: "This issue or pull request already exists."
|
||||||
|
name: ":pray: duplicate"
|
||||||
|
- color: "b60205"
|
||||||
|
description: "This will not be worked on."
|
||||||
|
name: ":pray: wontfix"
|
||||||
|
|
||||||
|
# Size
|
||||||
|
- color: "cfd3d7"
|
||||||
|
description: "Extra Small size issue or PR."
|
||||||
|
name: "size/XS"
|
||||||
|
- color: "cfd3d7"
|
||||||
|
description: "Small size issue or PR."
|
||||||
|
name: "size/S"
|
||||||
|
- color: "cfd3d7"
|
||||||
|
description: "Medium size issue or PR."
|
||||||
|
name: "size/M"
|
||||||
|
- color: "cfd3d7"
|
||||||
|
description: "Large size issue or PR."
|
||||||
|
name: "size/L"
|
||||||
|
- color: "cfd3d7"
|
||||||
|
description: "Extra Large size issue or PR."
|
||||||
|
name: "size/XL"
|
57
.github/workflows/integration.yaml
vendored
Normal file
57
.github/workflows/integration.yaml
vendored
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
name: Integration
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request: {}
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: integration-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
changed:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
yaml_changed: ${{ steps.filter-yaml.outputs.changed }}
|
||||||
|
yaml_files: ${{ steps.filter-yaml.outputs.files }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Get Changed Files
|
||||||
|
id: changed-files
|
||||||
|
uses: dorny/paths-filter@v3
|
||||||
|
with:
|
||||||
|
list-files: json
|
||||||
|
filters: |
|
||||||
|
yaml:
|
||||||
|
- '**/*.yaml'
|
||||||
|
- '**/*.yml'
|
||||||
|
|
||||||
|
- name: Filter changed YAML files to outputs
|
||||||
|
id: filter-yaml
|
||||||
|
run: |
|
||||||
|
echo ::set-output name=changed::${{ steps.changed-files.outputs.yaml }}
|
||||||
|
echo ::set-output name=files::${{ steps.changed-files.outputs.yaml_files }}
|
||||||
|
|
||||||
|
|
||||||
|
yaml:
|
||||||
|
needs:
|
||||||
|
- changed
|
||||||
|
if: ${{ needs.changed.outputs.yaml_changed != 'false' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Lint YAML Files
|
||||||
|
id: yaml-lint
|
||||||
|
run: |
|
||||||
|
yamllint .
|
7
.github/workflows/main.yml
vendored
7
.github/workflows/main.yml
vendored
|
@ -2,20 +2,21 @@ name: Compile PDFs
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push: {}
|
push: {}
|
||||||
|
pull_request: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: thomasweise/texlive
|
container: texlive/texlive:latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Compile
|
- name: Compile
|
||||||
run: make
|
run: make
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: examples
|
name: examples
|
||||||
path: examples/*.pdf
|
path: examples/*.pdf
|
||||||
|
|
41
.github/workflows/pull-request-labeler.yaml
vendored
Normal file
41
.github/workflows/pull-request-labeler.yaml
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
name: Label Pull Requests
|
||||||
|
|
||||||
|
on:
|
||||||
|
- pull_request_target
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
label-pr:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Add Labels for PR
|
||||||
|
uses: actions/labeler@v5
|
||||||
|
with:
|
||||||
|
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
configuration-path: .github/labeler.yaml
|
||||||
|
sync-labels: true
|
||||||
|
|
||||||
|
- name: Add PR Size Labels for PR
|
||||||
|
uses: codelytv/pr-size-labeler@v1
|
||||||
|
with:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
xs_label: 'size/XS'
|
||||||
|
xs_max_size: '20'
|
||||||
|
s_label: 'size/S'
|
||||||
|
s_max_size: '100'
|
||||||
|
m_label: 'size/M'
|
||||||
|
m_max_size: '500'
|
||||||
|
l_label: 'size/L'
|
||||||
|
l_max_size: '1000'
|
||||||
|
xl_label: 'size/XL'
|
||||||
|
fail_if_xl: 'false'
|
||||||
|
message_if_xl: >
|
||||||
|
'This PR has too many changes.
|
||||||
|
Please make sure you are NOT addressing multiple issues with one PR.'
|
||||||
|
files_to_ignore: |
|
||||||
|
"examples/*"
|
||||||
|
"*.otf"
|
||||||
|
"*.pdf"
|
||||||
|
"*.png"
|
||||||
|
"*.sty"
|
||||||
|
"*.ttf"
|
25
.github/workflows/sync-labels.yaml
vendored
Normal file
25
.github/workflows/sync-labels.yaml
vendored
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
name: Sync labels
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- .github/labels.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync-labels:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Sync labels
|
||||||
|
uses: crazy-max/ghaction-github-labeler@v5
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
yaml-file: .github/labels.yaml
|
||||||
|
skip-delete: false
|
||||||
|
dry-run: false
|
||||||
|
# exclude: |
|
27
.github/workflows/welcome.yaml
vendored
Normal file
27
.github/workflows/welcome.yaml
vendored
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
name: Welcome for First Issue or Pull Request
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
issues:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
welcome:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Welcome for First Issue or Pull Request
|
||||||
|
uses: actions/first-interaction@v1
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
issue-message: |
|
||||||
|
### :wave: Welcome! Looks like this is your first issue.
|
||||||
|
|
||||||
|
Hey, thanks for your contribution! Please give us a bit of time to review it. 😄
|
||||||
|
pr-message: |
|
||||||
|
### :wave: Welcome! Looks like this is your first pull request.
|
||||||
|
|
||||||
|
Hey, thanks for your contribution! Please give us a bit of time to review it. 😄
|
53
.yamllint.yaml
Normal file
53
.yamllint.yaml
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
yaml-files:
|
||||||
|
- '*.yaml'
|
||||||
|
- '*.yml'
|
||||||
|
|
||||||
|
rules:
|
||||||
|
braces:
|
||||||
|
min-spaces-inside: 0
|
||||||
|
max-spaces-inside: 1
|
||||||
|
min-spaces-inside-empty: 0
|
||||||
|
max-spaces-inside-empty: 0
|
||||||
|
brackets:
|
||||||
|
min-spaces-inside: 0
|
||||||
|
max-spaces-inside: 1
|
||||||
|
min-spaces-inside-empty: 0
|
||||||
|
max-spaces-inside-empty: 0
|
||||||
|
colons:
|
||||||
|
max-spaces-before: 0
|
||||||
|
max-spaces-after: 1
|
||||||
|
commas:
|
||||||
|
max-spaces-before: 0
|
||||||
|
comments:
|
||||||
|
level: warning
|
||||||
|
require-starting-space: true
|
||||||
|
min-spaces-from-content: 1
|
||||||
|
comments-indentation: disable
|
||||||
|
document-end: disable
|
||||||
|
document-start: disable
|
||||||
|
empty-lines:
|
||||||
|
level: warning
|
||||||
|
max: 2
|
||||||
|
max-start: 0
|
||||||
|
max-end: 1
|
||||||
|
empty-values:
|
||||||
|
forbid-in-block-mappings: true
|
||||||
|
forbid-in-flow-mappings: true
|
||||||
|
hyphens:
|
||||||
|
max-spaces-after: 1
|
||||||
|
indentation:
|
||||||
|
spaces: consistent
|
||||||
|
indent-sequences: false
|
||||||
|
key-duplicates: enable
|
||||||
|
key-ordering: disable
|
||||||
|
line-length: disable
|
||||||
|
new-line-at-end-of-file: enable
|
||||||
|
# Use UNIX new line characters `\n` instead of DOS new line characters `\r\n`
|
||||||
|
new-lines:
|
||||||
|
type: unix
|
||||||
|
octal-values: disable
|
||||||
|
quoted-strings:
|
||||||
|
quote-type: any
|
||||||
|
required: false
|
||||||
|
trailing-spaces: enable
|
||||||
|
truthy: disable
|
|
@ -40,10 +40,6 @@
|
||||||
Please help keep this project alive! Donations are welcome and will go towards further development of this project.
|
Please help keep this project alive! Donations are welcome and will go towards further development of this project.
|
||||||
|
|
||||||
PayPal: paypal.me/posquit0
|
PayPal: paypal.me/posquit0
|
||||||
BTC: 1Je3DxJVM2a9nTVPNo55SfQwpmxA6N2KKb
|
|
||||||
BCH: 1Mg1wG7PwHGrHYSWS67TsGSjo5GHEVbF16
|
|
||||||
ETH: 0x77ED9B4659F80205E9B9C9FB1E26EDB9904AFCC7
|
|
||||||
QTUM: QZT7D6m3QtTTqp7s4ZWAwLtGDsoHMMaM8E
|
|
||||||
|
|
||||||
*Thank you for your support!*
|
*Thank you for your support!*
|
||||||
|
|
||||||
|
@ -88,13 +84,13 @@ If you don't want to install the dependencies on your system, this can also be o
|
||||||
At a command prompt, run
|
At a command prompt, run
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ xelatex {your-cv}.tex
|
xelatex {your-cv}.tex
|
||||||
```
|
```
|
||||||
|
|
||||||
Or using docker:
|
Or using docker:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker run --rm --user $(id -u):$(id -g) -i -w "/doc" -v "$PWD":/doc thomasweise/texlive make
|
docker run --rm --user $(id -u):$(id -g) -i -w "/doc" -v "$PWD":/doc thomasweise/texlive make
|
||||||
```
|
```
|
||||||
|
|
||||||
In either case, this should result in the creation of ``{your-cv}.pdf``
|
In either case, this should result in the creation of ``{your-cv}.pdf``
|
||||||
|
|
117
awesome-cv.cls
117
awesome-cv.cls
|
@ -54,7 +54,7 @@
|
||||||
\RequirePackage{ragged2e}
|
\RequirePackage{ragged2e}
|
||||||
% Needed to configure page layout
|
% Needed to configure page layout
|
||||||
\RequirePackage{geometry}
|
\RequirePackage{geometry}
|
||||||
% Needed to make header & footer effeciently
|
% Needed to make header & footer efficiently
|
||||||
\RequirePackage{fancyhdr}
|
\RequirePackage{fancyhdr}
|
||||||
% Needed to manage colors
|
% Needed to manage colors
|
||||||
\RequirePackage{xcolor}
|
\RequirePackage{xcolor}
|
||||||
|
@ -62,6 +62,8 @@
|
||||||
\RequirePackage{ifxetex}
|
\RequirePackage{ifxetex}
|
||||||
% Needed to use \if-\then-\else statement
|
% Needed to use \if-\then-\else statement
|
||||||
\RequirePackage{xifthen}
|
\RequirePackage{xifthen}
|
||||||
|
% Needed to strip chars from telephone number
|
||||||
|
\RequirePackage{xstring}
|
||||||
% Needed to use a toolbox of programming tools
|
% Needed to use a toolbox of programming tools
|
||||||
\RequirePackage{etoolbox}
|
\RequirePackage{etoolbox}
|
||||||
% Needed to change line spacing in specific environment
|
% Needed to change line spacing in specific environment
|
||||||
|
@ -73,30 +75,30 @@
|
||||||
% Needed to manage math fonts
|
% Needed to manage math fonts
|
||||||
\RequirePackage{unicode-math}
|
\RequirePackage{unicode-math}
|
||||||
% Needed to use icons from font-awesome
|
% Needed to use icons from font-awesome
|
||||||
% (https://github.com/posquit0/latex-fontawesome)
|
|
||||||
\RequirePackage{fontawesome5}
|
\RequirePackage{fontawesome5}
|
||||||
|
\RequirePackage{roboto}
|
||||||
\RequirePackage[default,opentype]{sourcesanspro}
|
\RequirePackage[default,opentype]{sourcesanspro}
|
||||||
% Needed for the photo ID
|
% Needed for the photo ID
|
||||||
\RequirePackage[skins]{tcolorbox}
|
\RequirePackage[skins]{tcolorbox}
|
||||||
% Needed to deal a paragraphs
|
% Needed to deal a paragraphs
|
||||||
\RequirePackage{parskip}
|
\RequirePackage{parskip}
|
||||||
% Needed to deal hyperlink
|
% Needed to deal hyperlink
|
||||||
\RequirePackage[hidelinks,unicode]{hyperref}
|
\RequirePackage[hidelinks,unicode,pdfpagelabels=false]{hyperref}
|
||||||
\hypersetup{%
|
\hypersetup{%
|
||||||
pdftitle={},
|
pdftitle={},
|
||||||
pdfauthor={},
|
pdfauthor={},
|
||||||
pdfsubject={},
|
pdfsubject={},
|
||||||
pdfkeywords={}
|
pdfkeywords={}
|
||||||
}
|
}
|
||||||
|
% Solves issues Warning: File `cv.out' has changed
|
||||||
|
\RequirePackage{bookmark}
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Configuration for directory locations
|
% Configuration for directory locations
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Configure a directory location for fonts(default: 'fonts/')
|
% Configure an optional directory location for fonts(default: 'fonts/')
|
||||||
|
% Not required anymore but left in place for backward compatability.
|
||||||
\newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}}
|
\newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}}
|
||||||
\fontdir
|
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Configuration for layout
|
% Configuration for layout
|
||||||
|
@ -136,6 +138,7 @@
|
||||||
\colorlet{text}{darkgray}
|
\colorlet{text}{darkgray}
|
||||||
\colorlet{graytext}{gray}
|
\colorlet{graytext}{gray}
|
||||||
\colorlet{lighttext}{lightgray}
|
\colorlet{lighttext}{lightgray}
|
||||||
|
\colorlet{sectiondivider}{gray}
|
||||||
% Awesome colors
|
% Awesome colors
|
||||||
\definecolor{awesome-emerald}{HTML}{00A388}
|
\definecolor{awesome-emerald}{HTML}{00A388}
|
||||||
\definecolor{awesome-skyblue}{HTML}{0395DE}
|
\definecolor{awesome-skyblue}{HTML}{0395DE}
|
||||||
|
@ -160,25 +163,8 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Configuration for fonts
|
% Configuration for fonts
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Set the FontAwesome font to be up-to-date.
|
\newcommand*{\headerfont}{\roboto}
|
||||||
\setfontfamily\FA[Path=\@fontdir]{FontAwesome}
|
\newcommand*{\headerfontlight}{\robotolight}
|
||||||
% Set font for header (default is Roboto)
|
|
||||||
\newfontfamily\headerfont[
|
|
||||||
Path=\@fontdir,
|
|
||||||
UprightFont=*-Regular,
|
|
||||||
ItalicFont=*-Italic,
|
|
||||||
BoldFont=*-Bold,
|
|
||||||
BoldItalicFont=*-BoldItalic,
|
|
||||||
]{Roboto}
|
|
||||||
|
|
||||||
\newfontfamily\headerfontlight[
|
|
||||||
Path=\@fontdir,
|
|
||||||
UprightFont=*-Thin,
|
|
||||||
ItalicFont=*-ThinItalic,
|
|
||||||
BoldFont=*-Medium,
|
|
||||||
BoldItalicFont=*-MediumItalic,
|
|
||||||
]{Roboto}
|
|
||||||
|
|
||||||
\newcommand*{\footerfont}{\sourcesanspro}
|
\newcommand*{\footerfont}{\sourcesanspro}
|
||||||
\newcommand*{\bodyfont}{\sourcesanspro}
|
\newcommand*{\bodyfont}{\sourcesanspro}
|
||||||
\newcommand*{\bodyfontlight}{\sourcesansprolight}
|
\newcommand*{\bodyfontlight}{\sourcesansprolight}
|
||||||
|
@ -275,12 +261,25 @@
|
||||||
|
|
||||||
% Defines writer's mobile (optional)
|
% Defines writer's mobile (optional)
|
||||||
% Usage: \mobile{<mobile number>}
|
% Usage: \mobile{<mobile number>}
|
||||||
\newcommand*{\mobile}[1]{\def\@mobile{#1}}
|
\newcommand*{\mobile}[1]
|
||||||
|
{
|
||||||
|
\def\@mobile{#1}
|
||||||
|
\def\@teluri{tel:\@mobile}
|
||||||
|
% Strip unwanted characters
|
||||||
|
\StrDel{\@teluri}{ }[\@teluri]%
|
||||||
|
\StrDel{\@teluri}{-}[\@teluri]%
|
||||||
|
\StrDel{\@teluri}{(}[\@teluri]%
|
||||||
|
\StrDel{\@teluri}{)}[\@teluri]%
|
||||||
|
}
|
||||||
|
|
||||||
% Defines writer's email (optional)
|
% Defines writer's email (optional)
|
||||||
% Usage: \email{<email address>}
|
% Usage: \email{<email address>}
|
||||||
\newcommand*{\email}[1]{\def\@email{#1}}
|
\newcommand*{\email}[1]{\def\@email{#1}}
|
||||||
|
|
||||||
|
% Defines writer's date of birth (optional)
|
||||||
|
% Usage: \dateofbirth{<date>}
|
||||||
|
\newcommand*{\dateofbirth}[1]{\def\@dateofbirth{#1}}
|
||||||
|
|
||||||
% Defines writer's homepage (optional)
|
% Defines writer's homepage (optional)
|
||||||
% Usage: \homepage{<url>}
|
% Usage: \homepage{<url>}
|
||||||
\newcommand*{\homepage}[1]{\def\@homepage{#1}}
|
\newcommand*{\homepage}[1]{\def\@homepage{#1}}
|
||||||
|
@ -293,6 +292,10 @@
|
||||||
% Usage: \gitlab{<gitlab-nick>}
|
% Usage: \gitlab{<gitlab-nick>}
|
||||||
\newcommand*{\gitlab}[1]{\def\@gitlab{#1}}
|
\newcommand*{\gitlab}[1]{\def\@gitlab{#1}}
|
||||||
|
|
||||||
|
% Defines writer's bitbucket (optional)
|
||||||
|
% Usage: \bitbucket{<bitbucket-nick>}
|
||||||
|
\newcommand*{\bitbucket}[1]{\def\@bitbucket{#1}}
|
||||||
|
|
||||||
% Defines writer's stackoverflow profile (optional)
|
% Defines writer's stackoverflow profile (optional)
|
||||||
% Usage: \stackoverflow{<so userid>}{<so username>}
|
% Usage: \stackoverflow{<so userid>}{<so username>}
|
||||||
% e.g.https://stackoverflow.com/users/123456/sam-smith
|
% e.g.https://stackoverflow.com/users/123456/sam-smith
|
||||||
|
@ -311,6 +314,10 @@
|
||||||
% Usage: \twitter{<twitter handle>}
|
% Usage: \twitter{<twitter handle>}
|
||||||
\newcommand*{\twitter}[1]{\def\@twitter{#1}}
|
\newcommand*{\twitter}[1]{\def\@twitter{#1}}
|
||||||
|
|
||||||
|
% Defines writer's Mastodon (optional)
|
||||||
|
% Usage: \mastodon{<instance>}{<mastodon-nick>}
|
||||||
|
\newcommand*{\mastodon}[2]{\def\@mastodoninstance{#1}\def\@mastodonname{#2}}
|
||||||
|
|
||||||
% Defines writer's resarchgate (optional)
|
% Defines writer's resarchgate (optional)
|
||||||
% Usage: \researchgate{<researchgate-account>}
|
% Usage: \researchgate{<researchgate-account>}
|
||||||
\newcommand*{\researchgate}[1]{\def\@researchgate{#1}}
|
\newcommand*{\researchgate}[1]{\def\@researchgate{#1}}
|
||||||
|
@ -331,6 +338,14 @@
|
||||||
% Usage: \medium{<medium account>}
|
% Usage: \medium{<medium account>}
|
||||||
\newcommand*{\medium}[1]{\def\@medium{#1}}
|
\newcommand*{\medium}[1]{\def\@medium{#1}}
|
||||||
|
|
||||||
|
% Defines writer's kaggle (optional)
|
||||||
|
% Usage: \kaggle{<kaggle handle>}
|
||||||
|
\newcommand*{\kaggle}[1]{\def\@kaggle{#1}}
|
||||||
|
|
||||||
|
% Defines writer's Hackerrank (optional)
|
||||||
|
% Usage: \hackerrank{<Hackerrank profile name>}
|
||||||
|
\newcommand*{\hackerrank}[1]{\def\@hackerrank{#1}}
|
||||||
|
|
||||||
% Defines writer's google scholar profile (optional)
|
% Defines writer's google scholar profile (optional)
|
||||||
% Usage: \googlescholar{<googlescholar userid>}{<googlescholar username>}
|
% Usage: \googlescholar{<googlescholar userid>}{<googlescholar username>}
|
||||||
% e.g.https://scholar.google.co.uk/citations?user=wpZDx1cAAAAJ
|
% e.g.https://scholar.google.co.uk/citations?user=wpZDx1cAAAAJ
|
||||||
|
@ -346,8 +361,8 @@
|
||||||
}%
|
}%
|
||||||
}
|
}
|
||||||
|
|
||||||
% Defines writer's extra informations (optional)
|
% Defines writer's extra information (optional)
|
||||||
% Usage: \extrainfo{<extra informations>}
|
% Usage: \extrainfo{<extra information>}
|
||||||
\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
|
\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
|
||||||
|
|
||||||
% Defines writer's quote (optional)
|
% Defines writer's quote (optional)
|
||||||
|
@ -466,7 +481,7 @@
|
||||||
\ifthenelse{\isundefined{\@mobile}}%
|
\ifthenelse{\isundefined{\@mobile}}%
|
||||||
{}%
|
{}%
|
||||||
{%
|
{%
|
||||||
\faMobile\acvHeaderIconSep\@mobile%
|
\href{\@teluri}{\faMobile\acvHeaderIconSep\@mobile}%
|
||||||
\setbool{isstart}{false}%
|
\setbool{isstart}{false}%
|
||||||
}%
|
}%
|
||||||
\ifthenelse{\isundefined{\@email}}%
|
\ifthenelse{\isundefined{\@email}}%
|
||||||
|
@ -475,6 +490,13 @@
|
||||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
\href{mailto:\@email}{\faEnvelope\acvHeaderIconSep\@email}%
|
\href{mailto:\@email}{\faEnvelope\acvHeaderIconSep\@email}%
|
||||||
}%
|
}%
|
||||||
|
\ifthenelse{\isundefined{\@dateofbirth}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
|
% \mbox prevents wrapping of elements%
|
||||||
|
\mbox{\faBirthdayCake\acvHeaderIconSep\@dateofbirth}%
|
||||||
|
}%
|
||||||
\ifthenelse{\isundefined{\@homepage}}%
|
\ifthenelse{\isundefined{\@homepage}}%
|
||||||
{}%
|
{}%
|
||||||
{%
|
{%
|
||||||
|
@ -493,6 +515,12 @@
|
||||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
\href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}%
|
\href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}%
|
||||||
}%
|
}%
|
||||||
|
\ifthenelse{\isundefined{\@bitbucket}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
|
\href{https://bitbucket.com/\@bitbucket}{\faBitbucket\acvHeaderIconSep\@bitbucket}%
|
||||||
|
}%
|
||||||
\ifthenelse{\isundefined{\@stackoverflowid}}%
|
\ifthenelse{\isundefined{\@stackoverflowid}}%
|
||||||
{}%
|
{}%
|
||||||
{%
|
{%
|
||||||
|
@ -517,6 +545,12 @@
|
||||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
\href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}%
|
\href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}%
|
||||||
}%
|
}%
|
||||||
|
\ifthenelse{\isundefined{\@mastodonname}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
|
\href{https://\@mastodoninstance/@\@mastodonname}{\faMastodon\acvHeaderIconSep\@mastodonname}%
|
||||||
|
}%
|
||||||
\ifthenelse{\isundefined{\@skype}}%
|
\ifthenelse{\isundefined{\@skype}}%
|
||||||
{}%
|
{}%
|
||||||
{%
|
{%
|
||||||
|
@ -547,6 +581,18 @@
|
||||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
\href{https://medium.com/@\@medium}{\faMedium\acvHeaderIconSep\@medium}%
|
\href{https://medium.com/@\@medium}{\faMedium\acvHeaderIconSep\@medium}%
|
||||||
}%
|
}%
|
||||||
|
\ifthenelse{\isundefined{\@kaggle}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
|
\href{https://kaggle.com/\@kaggle}{\faKaggle\acvHeaderIconSep\@kaggle}%
|
||||||
|
}%
|
||||||
|
\ifthenelse{\isundefined{\@hackerrank}}%
|
||||||
|
{}%
|
||||||
|
{%
|
||||||
|
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||||
|
\href{https://www.hackerrank.com/\@hackerrank}{\faHackerrank\acvHeaderIconSep\@hackerrank}%
|
||||||
|
}%
|
||||||
\ifthenelse{\isundefined{\@googlescholarid}}%
|
\ifthenelse{\isundefined{\@googlescholarid}}%
|
||||||
{}%
|
{}%
|
||||||
{%
|
{%
|
||||||
|
@ -584,7 +630,7 @@
|
||||||
\vspace{\acvSectionTopSkip}
|
\vspace{\acvSectionTopSkip}
|
||||||
\sectionstyle{#1}
|
\sectionstyle{#1}
|
||||||
\phantomsection
|
\phantomsection
|
||||||
\color{gray}\vhrulefill{0.9pt}
|
\color{sectiondivider}\vhrulefill{0.9pt}
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define a subsection for CV
|
% Define a subsection for CV
|
||||||
|
@ -624,7 +670,9 @@
|
||||||
{\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
{\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
||||||
{\entrytitlestyle{#2} & \entrylocationstyle{#3} \\
|
{\entrytitlestyle{#2} & \entrylocationstyle{#3} \\
|
||||||
\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
||||||
\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}
|
\ifstrempty{#5}
|
||||||
|
{}
|
||||||
|
{\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}} \\}
|
||||||
\end{tabular*}%
|
\end{tabular*}%
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -667,7 +715,7 @@
|
||||||
% Define a line of cv information(honor, award or something else)
|
% Define a line of cv information(honor, award or something else)
|
||||||
% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
|
% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
|
||||||
\newcommand*{\cvhonor}[4]{%
|
\newcommand*{\cvhonor}[4]{%
|
||||||
\honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} \\
|
\honordatestyle{#4} & \honorpositionstyle{#1}\ifempty{#2}{}{,} \honortitlestyle{#2} & \honorlocationstyle{#3} \\
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define an environment for cvskill
|
% Define an environment for cvskill
|
||||||
|
@ -717,8 +765,9 @@
|
||||||
\par\addvspace{2.5ex}
|
\par\addvspace{2.5ex}
|
||||||
\phantomsection{}
|
\phantomsection{}
|
||||||
\lettersectionstyle{#1}
|
\lettersectionstyle{#1}
|
||||||
\color{gray}\vhrulefill{0.9pt}
|
\color{sectiondivider}\vhrulefill{0.9pt}
|
||||||
\par\nobreak\addvspace{0.4ex}
|
\par\nobreak\addvspace{0.4ex}
|
||||||
|
\lettertextstyle
|
||||||
}
|
}
|
||||||
|
|
||||||
% Define a title of the cover letter
|
% Define a title of the cover letter
|
||||||
|
|
Binary file not shown.
|
@ -23,9 +23,6 @@
|
||||||
% Configure page margins with geometry
|
% Configure page margins with geometry
|
||||||
\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
||||||
|
|
||||||
% Specify the location of the included fonts
|
|
||||||
\fontdir[fonts/]
|
|
||||||
|
|
||||||
% Color for highlights
|
% Color for highlights
|
||||||
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||||
% awesome-nephritis, awesome-concrete, awesome-darknight
|
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||||
|
@ -39,6 +36,7 @@
|
||||||
% \definecolor{text}{HTML}{333333}
|
% \definecolor{text}{HTML}{333333}
|
||||||
% \definecolor{graytext}{HTML}{5D5D5D}
|
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||||
% \definecolor{lighttext}{HTML}{999999}
|
% \definecolor{lighttext}{HTML}{999999}
|
||||||
|
% \definecolor{sectiondivider}{HTML}{5D5D5D}
|
||||||
|
|
||||||
% Set false if you don't want to highlight section with awesome color
|
% Set false if you don't want to highlight section with awesome color
|
||||||
\setbool{acvSectionColorHighlight}{true}
|
\setbool{acvSectionColorHighlight}{true}
|
||||||
|
@ -54,11 +52,12 @@
|
||||||
% Available options: circle|rectangle,edge/noedge,left/right
|
% Available options: circle|rectangle,edge/noedge,left/right
|
||||||
\photo[circle,noedge,left]{./examples/profile}
|
\photo[circle,noedge,left]{./examples/profile}
|
||||||
\name{Claud D.}{Park}
|
\name{Claud D.}{Park}
|
||||||
\position{Software Architect{\enskip\cdotp\enskip}Security Expert}
|
\position{Site Reliability Engineer{\enskip\cdotp\enskip}Software Architect}
|
||||||
\address{42-8, Bangbae-ro 15-gil, Seocho-gu, Seoul, 00681, Rep. of KOREA}
|
\address{235, World Cup buk-ro, Mapo-gu, Seoul, 03936, Republic of Korea}
|
||||||
|
|
||||||
\mobile{(+82) 10-9030-1843}
|
\mobile{(+82) 10-9030-1843}
|
||||||
\email{posquit0.bj@gmail.com}
|
\email{posquit0.bj@gmail.com}
|
||||||
|
%\dateofbirth{January 1st, 1970}
|
||||||
\homepage{www.posquit0.com}
|
\homepage{www.posquit0.com}
|
||||||
\github{posquit0}
|
\github{posquit0}
|
||||||
\linkedin{posquit0}
|
\linkedin{posquit0}
|
||||||
|
@ -68,10 +67,12 @@
|
||||||
% \skype{skype-id}
|
% \skype{skype-id}
|
||||||
% \reddit{reddit-id}
|
% \reddit{reddit-id}
|
||||||
% \medium{madium-id}
|
% \medium{madium-id}
|
||||||
|
% \kaggle{kaggle-id}
|
||||||
|
% \hackerrank{hackerrank-id}
|
||||||
% \googlescholar{googlescholar-id}{name-to-display}
|
% \googlescholar{googlescholar-id}{name-to-display}
|
||||||
%% \firstname and \lastname will be used
|
%% \firstname and \lastname will be used
|
||||||
% \googlescholar{googlescholar-id}{}
|
% \googlescholar{googlescholar-id}{}
|
||||||
% \extrainfo{extra informations}
|
% \extrainfo{extra information}
|
||||||
|
|
||||||
\quote{``Be the change that you want to see in the world."}
|
\quote{``Be the change that you want to see in the world."}
|
||||||
|
|
||||||
|
@ -99,7 +100,7 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
% Print the header with above personal informations
|
% Print the header with above personal information
|
||||||
% Give optional argument to change alignment(C: center, L: left, R: right)
|
% Give optional argument to change alignment(C: center, L: left, R: right)
|
||||||
\makecvheader[R]
|
\makecvheader[R]
|
||||||
|
|
||||||
|
@ -110,7 +111,7 @@
|
||||||
{Claud D. Park~~~·~~~Cover Letter}
|
{Claud D. Park~~~·~~~Cover Letter}
|
||||||
{}
|
{}
|
||||||
|
|
||||||
% Print the title with above letter informations
|
% Print the title with above letter information
|
||||||
\makelettertitle
|
\makelettertitle
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
@ -131,7 +132,7 @@ Duis sit amet magna ante, at sodales diam. Aenean consectetur porta risus et sag
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% Print the signature and enclosures with above letter informations
|
% Print the signature and enclosures with above letter information
|
||||||
\makeletterclosing
|
\makeletterclosing
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
BIN
examples/cv.pdf
BIN
examples/cv.pdf
Binary file not shown.
|
@ -23,9 +23,6 @@
|
||||||
% Configure page margins with geometry
|
% Configure page margins with geometry
|
||||||
\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
||||||
|
|
||||||
% Specify the location of the included fonts
|
|
||||||
\fontdir[fonts/]
|
|
||||||
|
|
||||||
% Color for highlights
|
% Color for highlights
|
||||||
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||||
% awesome-nephritis, awesome-concrete, awesome-darknight
|
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||||
|
@ -39,6 +36,7 @@
|
||||||
% \definecolor{text}{HTML}{333333}
|
% \definecolor{text}{HTML}{333333}
|
||||||
% \definecolor{graytext}{HTML}{5D5D5D}
|
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||||
% \definecolor{lighttext}{HTML}{999999}
|
% \definecolor{lighttext}{HTML}{999999}
|
||||||
|
% \definecolor{sectiondivider}{HTML}{5D5D5D}
|
||||||
|
|
||||||
% Set false if you don't want to highlight section with awesome color
|
% Set false if you don't want to highlight section with awesome color
|
||||||
\setbool{acvSectionColorHighlight}{true}
|
\setbool{acvSectionColorHighlight}{true}
|
||||||
|
@ -54,11 +52,12 @@
|
||||||
% Available options: circle|rectangle,edge/noedge,left/right
|
% Available options: circle|rectangle,edge/noedge,left/right
|
||||||
% \photo{./examples/profile.png}
|
% \photo{./examples/profile.png}
|
||||||
\name{Claud D.}{Park}
|
\name{Claud D.}{Park}
|
||||||
\position{Software Architect{\enskip\cdotp\enskip}Security Expert}
|
\position{Site Reliability Engineer{\enskip\cdotp\enskip}Software Architect}
|
||||||
\address{42-8, Bangbae-ro 15-gil, Seocho-gu, Seoul, 00681, Rep. of KOREA}
|
\address{235, World Cup buk-ro, Mapo-gu, Seoul, 03936, Republic of Korea}
|
||||||
|
|
||||||
\mobile{(+82) 10-9030-1843}
|
\mobile{(+82) 10-9030-1843}
|
||||||
\email{posquit0.bj@gmail.com}
|
\email{posquit0.bj@gmail.com}
|
||||||
|
%\dateofbirth{January 1st, 1970}
|
||||||
\homepage{www.posquit0.com}
|
\homepage{www.posquit0.com}
|
||||||
\github{posquit0}
|
\github{posquit0}
|
||||||
\linkedin{posquit0}
|
\linkedin{posquit0}
|
||||||
|
@ -68,12 +67,12 @@
|
||||||
% \skype{skype-id}
|
% \skype{skype-id}
|
||||||
% \reddit{reddit-id}
|
% \reddit{reddit-id}
|
||||||
% \medium{medium-id}
|
% \medium{medium-id}
|
||||||
\orcid{0000-0000-0000-0000}
|
% \kaggle{kaggle-id}
|
||||||
\researchgate{Claud-Park}
|
% \hackerrank{hackerrank-id}
|
||||||
% \googlescholar{googlescholar-id}{name-to-display}
|
% \googlescholar{googlescholar-id}{name-to-display}
|
||||||
%% \firstname and \lastname will be used
|
%% \firstname and \lastname will be used
|
||||||
% \googlescholar{googlescholar-id}{}
|
% \googlescholar{googlescholar-id}{}
|
||||||
% \extrainfo{extra informations}
|
% \extrainfo{extra information}
|
||||||
|
|
||||||
\quote{``Be the change that you want to see in the world."}
|
\quote{``Be the change that you want to see in the world."}
|
||||||
|
|
||||||
|
@ -81,7 +80,7 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
% Print the header with above personal informations
|
% Print the header with above personal information
|
||||||
% Give optional argument to change alignment(C: center, L: left, R: right)
|
% Give optional argument to change alignment(C: center, L: left, R: right)
|
||||||
\makecvheader
|
\makecvheader
|
||||||
|
|
||||||
|
@ -102,6 +101,7 @@
|
||||||
\input{cv/experience.tex}
|
\input{cv/experience.tex}
|
||||||
\input{cv/extracurricular.tex}
|
\input{cv/extracurricular.tex}
|
||||||
\input{cv/honors.tex}
|
\input{cv/honors.tex}
|
||||||
|
\input{cv/certificates.tex}
|
||||||
\input{cv/presentation.tex}
|
\input{cv/presentation.tex}
|
||||||
\input{cv/writing.tex}
|
\input{cv/writing.tex}
|
||||||
\input{cv/committees.tex}
|
\input{cv/committees.tex}
|
||||||
|
|
90
examples/cv/certificates.tex
Normal file
90
examples/cv/certificates.tex
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\cvsection{Certificates}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\begin{cvhonors}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Advanced Networking - Specialty} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2023} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Developer – Associate} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2023} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Cloud Practitioner} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2023} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Security - Specialty} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2022} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Solutions Architect – Professional} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2022} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Solutions Architect – Associate} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2019} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified SysOps Administrator – Associate} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2021} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{Certified Kubernetes Application Developer (CKAD)} % Name
|
||||||
|
{The Linux Foundation} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2020} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{HashiCorp Certified: Consul Associate (002)} % Name
|
||||||
|
{HashiCorp} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2023} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{HashiCorp Certified: Terraform Associate (003)} % Name
|
||||||
|
{HashiCorp} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2023} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{HashiCorp Certified: Terraform Associate (002)} % Name
|
||||||
|
{HashiCorp} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2020} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\end{cvhonors}
|
|
@ -9,12 +9,59 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{Founding Member \& Site Reliability Engineer \& Infrastructure Team Lead} % Job title
|
||||||
|
{Danggeun Pay Inc. (KarrotPay)} % Organization
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{Mar. 2021 - Present} % Date(s)
|
||||||
|
{
|
||||||
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
|
\item {Everything that matters.}
|
||||||
|
\item {Designed and provisioned the entire infrastructure on the AWS cloud to meet security compliance and acquire a business license for financial services in Korea.}
|
||||||
|
\item {Continuously improved the infrastructure architecture since launching the service. (currently 3.6 million users)}
|
||||||
|
\item {Established a standardized base for declarative management of infrastructures and service deployments, enabling operational efficiency and consistency. Over 90\% of AWS resources were all managed through standardized terraform modules. All add-ons and service workloads on the Kubernetes cluster were managed on a GitOps basis with Kustomize and ArgoCD.}
|
||||||
|
\item {Saved over 30\% of the overall AWS costs by establishing a quarterly purchasing strategiy for RI (Reserved Instance) and SP (Savings Plan) and by introducing Graviton instances.}
|
||||||
|
\item {Established a core architecture for regulating of outbound DNS traffic in multi-account and multi-VPC environments utilizing AWS Route53 DNS Firewall and FMS. This significantly increased the level of security confidence in the financial sector's segregated environment.}
|
||||||
|
\item {Introduced Okta employee identity solution in the company, establishing security policies and configuring SSO integration with over 20 enterprise systems including AWS, GitHub, Slack, Google Workspace. Set up a Hub and Spoke architecture, enabling a collaborative account structure with the parent company, Daangn Market.}
|
||||||
|
\end{cvitems}
|
||||||
|
}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{Site Reliability Engineer} % Job title
|
||||||
|
{Danggeun Market Inc.} % Organization
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{Feb. 2021 - Mar. 2021} % Date(s)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{Founding Member \& Director of Infrastructure Division} % Job title
|
||||||
|
{Kasa} % Organization
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{Jun. 2018 - Jan. 2021} % Date(s)
|
||||||
|
{
|
||||||
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
|
\item {Designed on-boarding process to guide new engineers, help them to focus on the right tasks, and set expectations to help them be successful at Infrastructure team.}
|
||||||
|
\item {Migrated the orchestration system from DC/OS to Kubernetes which is based on AWS EKS. Managed 3 Kubernetes clusters and 300+ pods. Managed all Kubernetes manifests declaratively with Kustomize and ArgoCD.}
|
||||||
|
\item {Designed and managed complex network configurations on AWS with 4 VPC and 100+ subnets. Separated the development network and operation network according to financial regulations. Established dedicated network connections from AWS VPC to partners' on-premise network based on AWS Direct Connect with secure connection using IPsec VPN. Provisioned OpenVPN servers with LDAP integration.}
|
||||||
|
\item {Provisioned a observability system with Kafka, Elastic Stack(Filebeat, Heartbeat, APM Server, Logstash, Elasticsearch, Kibana). Collected log, uptime, tracing data from hosts, containers, pods and more. The ES cluster which has 9 nodes processed more than 1 billion documents per month. Wrote Terraform module to easily provision ES cluster on AWS EC2 instances.}
|
||||||
|
\item {Provisioned a monitoring system with Kafka, Telegraf, InfluxDB, Grafana. Collected metrics from hosts, containers, pods and more. Wrote Terraform module to easily provision InfluxDB with HA on AWS EC2 instances.}
|
||||||
|
\item {Introduced Kong API Gateway to easily connect all API microservices with a declarative management method based on Terraform and Atlantis to collaborate and audit change history.}
|
||||||
|
\item {Provisioned the Directory Service for employee identity management based on OpenLDAP which guarantees HA with multi-master replication.}
|
||||||
|
\item {Implemented Worker microservices consuming Kafka event topics for email, SMS, Kakaotalk and Slack notification. Developed in-house framework to easily build Kafka consumer microservice with common features including retry on failure, DLQ(Dead Letter Queue), event routing and more.}
|
||||||
|
\item {Introduced Elastic APM to help distributed tracing, trouble-shooting and performance testing in MSA.}
|
||||||
|
\end{cvitems}
|
||||||
|
}
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{Software Architect} % Job title
|
{Software Architect} % Job title
|
||||||
{Omnious. Co., Ltd.} % Organization
|
{Omnious. Co., Ltd.} % Organization
|
||||||
{Seoul, S.Korea} % Location
|
{Seoul, S.Korea} % Location
|
||||||
{Jun. 2017 - May. 2018} % Date(s)
|
{Jun. 2017 - May 2018} % Date(s)
|
||||||
{
|
{
|
||||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
\item {Provisioned an easily managable hybrid infrastructure(Amazon AWS + On-premise) utilizing IaC(Infrastructure as Code) tools like Ansible, Packer and Terraform.}
|
\item {Provisioned an easily managable hybrid infrastructure(Amazon AWS + On-premise) utilizing IaC(Infrastructure as Code) tools like Ansible, Packer and Terraform.}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% SUBSECTION TITLE
|
% SUBSECTION TITLE
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\cvsubsection{International}
|
\cvsubsection{International Awards}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
@ -15,6 +15,20 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{2nd Place} % Award
|
||||||
|
{AWS ASEAN AI/ML GameDay} % Event
|
||||||
|
{Online} % Location
|
||||||
|
{2021} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{Finalist} % Award
|
||||||
|
{DEFCON 28th CTF Hacking Competition World Final} % Event
|
||||||
|
{Las Vegas, U.S.A} % Location
|
||||||
|
{2020} % Date(s)
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{Finalist} % Award
|
{Finalist} % Award
|
||||||
|
@ -64,7 +78,7 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% SUBSECTION TITLE
|
% SUBSECTION TITLE
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\cvsubsection{Domestic}
|
\cvsubsection{Domestic Awards}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
@ -72,6 +86,13 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{2nd Place} % Award
|
||||||
|
{AWS Korea GameDay} % Event
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{2021} % Date(s)
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{3rd Place} % Award
|
{3rd Place} % Award
|
||||||
|
@ -130,3 +151,31 @@
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\end{cvhonors}
|
\end{cvhonors}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SUBSECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\cvsubsection{Community}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\begin{cvhonors}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Community Builder (Container)} % Award
|
||||||
|
{Amazon Web Services (AWS)} % Event
|
||||||
|
{} % Location
|
||||||
|
{2022} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{HashiCorp Ambassador} % Award
|
||||||
|
{HashiCorp} % Event
|
||||||
|
{} % Location
|
||||||
|
{2022} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\end{cvhonors}
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
../fontawesome.sty
|
|
|
@ -1 +0,0 @@
|
||||||
../fonts
|
|
Binary file not shown.
|
@ -23,15 +23,12 @@
|
||||||
% Configure page margins with geometry
|
% Configure page margins with geometry
|
||||||
\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm}
|
||||||
|
|
||||||
% Specify the location of the included fonts
|
|
||||||
\fontdir[fonts/]
|
|
||||||
|
|
||||||
% Color for highlights
|
% Color for highlights
|
||||||
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||||
% awesome-nephritis, awesome-concrete, awesome-darknight
|
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||||
\colorlet{awesome}{awesome-red}
|
\colorlet{awesome}{awesome-red}
|
||||||
% Uncomment if you would like to specify your own color
|
% Uncomment if you would like to specify your own color
|
||||||
% \definecolor{awesome}{HTML}{CA63A8}
|
% \definecolor{awesome}{HTML}{3E6D9C}
|
||||||
|
|
||||||
% Colors for text
|
% Colors for text
|
||||||
% Uncomment if you would like to specify your own color
|
% Uncomment if you would like to specify your own color
|
||||||
|
@ -39,6 +36,7 @@
|
||||||
% \definecolor{text}{HTML}{333333}
|
% \definecolor{text}{HTML}{333333}
|
||||||
% \definecolor{graytext}{HTML}{5D5D5D}
|
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||||
% \definecolor{lighttext}{HTML}{999999}
|
% \definecolor{lighttext}{HTML}{999999}
|
||||||
|
% \definecolor{sectiondivider}{HTML}{5D5D5D}
|
||||||
|
|
||||||
% Set false if you don't want to highlight section with awesome color
|
% Set false if you don't want to highlight section with awesome color
|
||||||
\setbool{acvSectionColorHighlight}{true}
|
\setbool{acvSectionColorHighlight}{true}
|
||||||
|
@ -54,11 +52,12 @@
|
||||||
% Available options: circle|rectangle,edge/noedge,left/right
|
% Available options: circle|rectangle,edge/noedge,left/right
|
||||||
% \photo[rectangle,edge,right]{./examples/profile}
|
% \photo[rectangle,edge,right]{./examples/profile}
|
||||||
\name{Byungjin}{Park}
|
\name{Byungjin}{Park}
|
||||||
\position{Software Architect{\enskip\cdotp\enskip}Security Expert}
|
\position{Site Reliability Engineer{\enskip\cdotp\enskip}Software Architect}
|
||||||
\address{42-8, Bangbae-ro 15-gil, Seocho-gu, Seoul, 00681, Rep. of KOREA}
|
\address{235, World Cup buk-ro, Mapo-gu, Seoul, 03936, Republic of Korea}
|
||||||
|
|
||||||
\mobile{(+82) 10-9030-1843}
|
\mobile{(+82) 10-9030-1843}
|
||||||
\email{posquit0.bj@gmail.com}
|
\email{posquit0.bj@gmail.com}
|
||||||
|
%\dateofbirth{January 1st, 1970}
|
||||||
\homepage{www.posquit0.com}
|
\homepage{www.posquit0.com}
|
||||||
\github{posquit0}
|
\github{posquit0}
|
||||||
\linkedin{posquit0}
|
\linkedin{posquit0}
|
||||||
|
@ -68,10 +67,12 @@
|
||||||
% \skype{skype-id}
|
% \skype{skype-id}
|
||||||
% \reddit{reddit-id}
|
% \reddit{reddit-id}
|
||||||
% \medium{madium-id}
|
% \medium{madium-id}
|
||||||
|
% \kaggle{kaggle-id}
|
||||||
|
% \hackerrank{hackerrank-id}
|
||||||
% \googlescholar{googlescholar-id}{name-to-display}
|
% \googlescholar{googlescholar-id}{name-to-display}
|
||||||
%% \firstname and \lastname will be used
|
%% \firstname and \lastname will be used
|
||||||
% \googlescholar{googlescholar-id}{}
|
% \googlescholar{googlescholar-id}{}
|
||||||
% \extrainfo{extra informations}
|
% \extrainfo{extra information}
|
||||||
|
|
||||||
\quote{``Be the change that you want to see in the world."}
|
\quote{``Be the change that you want to see in the world."}
|
||||||
|
|
||||||
|
@ -79,7 +80,7 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
% Print the header with above personal informations
|
% Print the header with above personal information
|
||||||
% Give optional argument to change alignment(C: center, L: left, R: right)
|
% Give optional argument to change alignment(C: center, L: left, R: right)
|
||||||
\makecvheader[C]
|
\makecvheader[C]
|
||||||
|
|
||||||
|
@ -98,11 +99,12 @@
|
||||||
\input{resume/summary.tex}
|
\input{resume/summary.tex}
|
||||||
\input{resume/experience.tex}
|
\input{resume/experience.tex}
|
||||||
\input{resume/honors.tex}
|
\input{resume/honors.tex}
|
||||||
\input{resume/presentation.tex}
|
\input{resume/certificates.tex}
|
||||||
\input{resume/writing.tex}
|
% \input{resume/presentation.tex}
|
||||||
\input{resume/committees.tex}
|
% \input{resume/writing.tex}
|
||||||
|
% \input{resume/committees.tex}
|
||||||
\input{resume/education.tex}
|
\input{resume/education.tex}
|
||||||
\input{resume/extracurricular.tex}
|
% \input{resume/extracurricular.tex}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
|
62
examples/resume/certificates.tex
Normal file
62
examples/resume/certificates.tex
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\cvsection{Certificates}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\begin{cvhonors}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Advanced Networking - Specialty} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2023} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Security - Specialty} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2022} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified Solutions Architect – Professional} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2022} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Certified SysOps Administrator – Associate} % Name
|
||||||
|
{Amazon Web Services (AWS)} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2021} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{Certified Kubernetes Application Developer (CKAD)} % Name
|
||||||
|
{The Linux Foundation} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2020} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{HashiCorp Certified: Consul Associate (002)} % Name
|
||||||
|
{HashiCorp} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2023} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{HashiCorp Certified: Terraform Associate (003)} % Name
|
||||||
|
{HashiCorp} % Issuer
|
||||||
|
{} % Credential ID
|
||||||
|
{2023} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\end{cvhonors}
|
|
@ -9,6 +9,62 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cventries}
|
\begin{cventries}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{DevOps Engineer} % Job title
|
||||||
|
{Dunamu Inc.} % Organization
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{Sep. 2023 - Present} % Date(s)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{Founding Member \& Site Reliability Engineer \& Infrastructure Team Lead} % Job title
|
||||||
|
{Danggeun Pay Inc. (KarrotPay)} % Organization
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{Mar. 2021 - Jun. 2023} % Date(s)
|
||||||
|
{
|
||||||
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
|
\item {Everything that matters.}
|
||||||
|
\item {Designed and provisioned the entire infrastructure on the AWS cloud to meet security compliance and acquire a business license for financial services in Korea.}
|
||||||
|
\item {Continuously improved the infrastructure architecture since launching the service. (currently 3.6 million users)}
|
||||||
|
\item {Established a standardized base for declarative management of infrastructures and service deployments, enabling operational efficiency and consistency. Over 90\% of AWS resources were all managed through standardized terraform modules. All add-ons and service workloads on the Kubernetes cluster were managed on a GitOps basis with Kustomize and ArgoCD.}
|
||||||
|
\item {Saved over 30\% of the overall AWS costs by establishing a quarterly purchasing strategiy for RI (Reserved Instance) and SP (Savings Plan) and by introducing Graviton instances.}
|
||||||
|
\item {Established a core architecture for regulating of outbound DNS traffic in multi-account and multi-VPC environments utilizing AWS Route53 DNS Firewall and FMS. This significantly increased the level of security confidence in the financial sector's segregated environment.}
|
||||||
|
\item {Introduced Okta employee identity solution in the company, establishing security policies and configuring SSO integration with over 20 enterprise systems including AWS, GitHub, Slack, Google Workspace. Set up a Hub and Spoke architecture, enabling a collaborative account structure with the parent company, Daangn Market.}
|
||||||
|
\end{cvitems}
|
||||||
|
}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{Site Reliability Engineer} % Job title
|
||||||
|
{Danggeun Market Inc.} % Organization
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{Feb. 2021 - Mar. 2021} % Date(s)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{Founding Member \& Director of Infrastructure Division} % Job title
|
||||||
|
{Kasa} % Organization
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{Jun. 2018 - Jan. 2021} % Date(s)
|
||||||
|
{
|
||||||
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
|
\item {Designed on-boarding process to guide new engineers, help them to focus on the right tasks, and set expectations to help them be successful at Infrastructure team.}
|
||||||
|
\item {Migrated the orchestration system from DC/OS to Kubernetes which is based on AWS EKS. Managed 3 Kubernetes clusters and 300+ pods. Managed all Kubernetes manifests declaratively with Kustomize and ArgoCD.}
|
||||||
|
\item {Designed and managed complex network configurations on AWS with 4 VPC and 100+ subnets. Separated the development network and operation network according to financial regulations. Established dedicated network connections from AWS VPC to partners' on-premise network based on AWS Direct Connect with secure connection using IPsec VPN. Provisioned OpenVPN servers with LDAP integration.}
|
||||||
|
\item {Provisioned a observability system with Kafka, Elastic Stack(Filebeat, Heartbeat, APM Server, Logstash, Elasticsearch, Kibana). Collected log, uptime, tracing data from hosts, containers, pods and more. The ES cluster which has 9 nodes processed more than 1 billion documents per month. Wrote Terraform module to easily provision ES cluster on AWS EC2 instances.}
|
||||||
|
\item {Provisioned a monitoring system with Kafka, Telegraf, InfluxDB, Grafana. Collected metrics from hosts, containers, pods and more. Wrote Terraform module to easily provision InfluxDB with HA on AWS EC2 instances.}
|
||||||
|
\item {Introduced Kong API Gateway to easily connect all API microservices with a declarative management method based on Terraform and Atlantis to collaborate and audit change history.}
|
||||||
|
\item {Provisioned the Directory Service for employee identity management based on OpenLDAP which guarantees HA with multi-master replication.}
|
||||||
|
\item {Implemented Worker microservices consuming Kafka event topics for email, SMS, Kakaotalk and Slack notification. Developed in-house framework to easily build Kafka consumer microservice with common features including retry on failure, DLQ(Dead Letter Queue), event routing and more.}
|
||||||
|
\item {Introduced Elastic APM to help distributed tracing, trouble-shooting and performance testing in MSA.}
|
||||||
|
\end{cvitems}
|
||||||
|
}
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{Software Architect} % Job title
|
{Software Architect} % Job title
|
||||||
|
@ -49,22 +105,6 @@
|
||||||
{
|
{
|
||||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
\item {Lead engineer on agent-less backtracking system that can discover client device's fingerprint(including public and private IP) independently of the Proxy, VPN and NAT.}
|
\item {Lead engineer on agent-less backtracking system that can discover client device's fingerprint(including public and private IP) independently of the Proxy, VPN and NAT.}
|
||||||
\item {Implemented a distributed web stress test tool with high anonymity.}
|
|
||||||
\item {Implemented a military cooperation system which is web based real time messenger in Scala on Lift.}
|
|
||||||
\end{cvitems}
|
|
||||||
}
|
|
||||||
|
|
||||||
%---------------------------------------------------------
|
|
||||||
\cventry
|
|
||||||
{Game Developer Intern at Global Internship Program} % Job title
|
|
||||||
{NEXON} % Organization
|
|
||||||
{Seoul, S.Korea \& LA, U.S.A} % Location
|
|
||||||
{Jan. 2013 - Feb. 2013} % Date(s)
|
|
||||||
{
|
|
||||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
|
||||||
\item {Developed in Cocos2d-x an action puzzle game(Dragon Buster) targeting U.S. market.}
|
|
||||||
\item {Implemented API server which is communicating with game client and In-App Store, along with two other team members who wrote the game logic and designed game graphics.}
|
|
||||||
\item {Won the 2nd prize in final evaluation.}
|
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,22 +121,5 @@
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}
|
}
|
||||||
|
|
||||||
%---------------------------------------------------------
|
|
||||||
\cventry
|
|
||||||
{Freelance Penetration Tester} % Job title
|
|
||||||
{SAMSUNG Electronics} % Organization
|
|
||||||
{S.Korea} % Location
|
|
||||||
{Sep. 2013, Mar. 2011 - Oct. 2011} % Date(s)
|
|
||||||
{
|
|
||||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
|
||||||
\item {Conducted penetration testing on SAMSUNG KNOX, which is solution for enterprise mobile security.}
|
|
||||||
\item {Conducted penetration testing on SAMSUNG Smart TV.}
|
|
||||||
\end{cvitems}
|
|
||||||
%\begin{cvsubentries}
|
|
||||||
% \cvsubentry{}{KNOX(Solution for Enterprise Mobile Security) Penetration Testing}{Sep. 2013}{}
|
|
||||||
% \cvsubentry{}{Smart TV Penetration Testing}{Mar. 2011 - Oct. 2011}{}
|
|
||||||
%\end{cvsubentries}
|
|
||||||
}
|
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\end{cventries}
|
\end{cventries}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% SUBSECTION TITLE
|
% SUBSECTION TITLE
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\cvsubsection{International}
|
\cvsubsection{International Awards}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
@ -15,6 +15,20 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{2nd Place} % Award
|
||||||
|
{AWS ASEAN AI/ML GameDay} % Event
|
||||||
|
{Online} % Location
|
||||||
|
{2021} % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{Finalist} % Award
|
||||||
|
{DEFCON 28th CTF Hacking Competition World Final} % Event
|
||||||
|
{Las Vegas, U.S.A} % Location
|
||||||
|
{2020} % Date(s)
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{Finalist} % Award
|
{Finalist} % Award
|
||||||
|
@ -57,7 +71,7 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
% SUBSECTION TITLE
|
% SUBSECTION TITLE
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\cvsubsection{Domestic}
|
\cvsubsection{Domestic Awards}
|
||||||
|
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
|
@ -65,6 +79,13 @@
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
\begin{cvhonors}
|
\begin{cvhonors}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{2nd Place} % Award
|
||||||
|
{AWS Korea GameDay} % Event
|
||||||
|
{Seoul, S.Korea} % Location
|
||||||
|
{2021} % Date(s)
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvhonor
|
\cvhonor
|
||||||
{3rd Place} % Award
|
{3rd Place} % Award
|
||||||
|
@ -88,3 +109,38 @@
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\end{cvhonors}
|
\end{cvhonors}
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% SUBSECTION TITLE
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\cvsubsection{Community}
|
||||||
|
|
||||||
|
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
% CONTENT
|
||||||
|
%-------------------------------------------------------------------------------
|
||||||
|
\begin{cvhonors}
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{AWS Community Builder (Container)} % Award
|
||||||
|
{Amazon Web Services (AWS)} % Event
|
||||||
|
{} % Location
|
||||||
|
{2022 - } % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{HashiCorp Ambassador} % Award
|
||||||
|
{HashiCorp} % Event
|
||||||
|
{} % Location
|
||||||
|
{2022 - } % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvhonor
|
||||||
|
{Organizer of HashiCorp Korea User Group} % Award
|
||||||
|
{HashiCorp} % Event
|
||||||
|
{} % Location
|
||||||
|
{2018 - } % Date(s)
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\end{cvhonors}
|
||||||
|
|
|
@ -10,5 +10,7 @@
|
||||||
\begin{cvparagraph}
|
\begin{cvparagraph}
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
Current Site Reliability Engineer at start-up company Kasa. 7+ years experience specializing in the backend development, infrastructure automation, and computer hacking/security. Super nerd who loves Vim, Linux and OS X and enjoys to customize all of the development environment. Interested in devising a better problem-solving method for challenging tasks, and learning new technologies and tools if the need arises.
|
DevOps Engineer at fintech \& blockchain company Dunamu which is known for operating Upbit, the largest cryptocurrency exchange in Korea. Have led growth at infrastructure departments in two fintech companies as lead engineer and founding member. 12+ years of diverse software engineering experience with specialties in software architecture design, infrastructure operation, backend development, and security engineering.
|
||||||
|
|
||||||
|
Love to contribute to open sources and tech communities by sharing knowledge and experience. Prefers a command line interface environment as a big fan of Vim, Linux, and macOS. Always trying to customize to find the most optimal environment. Interested in devising a better problem-solving method for challenging tasks, and learning new technologies and tools.
|
||||||
\end{cvparagraph}
|
\end{cvparagraph}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue