mirror of
https://github.com/posquit0/Awesome-CV.git
synced 2026-07-17 14:35:29 +08:00
Merge branch 'master' into larry_gouger
This commit is contained in:
commit
38195822fe
41 changed files with 1420 additions and 376 deletions
|
|
@ -1,21 +0,0 @@
|
|||
version: 2
|
||||
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
# Primary container
|
||||
- image: thomasweise/texlive
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
name: Compile
|
||||
command: make
|
||||
- run:
|
||||
name: Move artifacts
|
||||
command: |
|
||||
mkdir -p ~/results
|
||||
mv examples/cv.pdf ~/results
|
||||
mv examples/resume.pdf ~/results
|
||||
mv examples/coverletter.pdf ~/results
|
||||
- store_artifacts:
|
||||
path: ~/results
|
||||
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@v6
|
||||
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@v6
|
||||
|
||||
- name: Lint YAML Files
|
||||
id: yaml-lint
|
||||
run: |
|
||||
yamllint .
|
||||
30
.github/workflows/main.yml
vendored
Normal file
30
.github/workflows/main.yml
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
name: Compile PDFs
|
||||
|
||||
on:
|
||||
push: {}
|
||||
pull_request: {}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container: texlive/texlive:latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Install fonts
|
||||
run: |
|
||||
apt update
|
||||
apt install --yes \
|
||||
fonts-roboto \
|
||||
fonts-adobe-sourcesans3 \
|
||||
;
|
||||
|
||||
- name: Compile
|
||||
run: make
|
||||
|
||||
- uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: examples
|
||||
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@v6
|
||||
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@v6
|
||||
|
||||
- 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
|
||||
417
LICENCE
Normal file
417
LICENCE
Normal file
|
|
@ -0,0 +1,417 @@
|
|||
The LaTeX Project Public License
|
||||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
|
||||
LPPL Version 1.3c 2008-05-04
|
||||
|
||||
Copyright 1999 2002-2008 LaTeX3 Project
|
||||
Everyone is allowed to distribute verbatim copies of this
|
||||
license document, but modification of it is not allowed.
|
||||
|
||||
|
||||
PREAMBLE
|
||||
========
|
||||
|
||||
The LaTeX Project Public License (LPPL) is the primary license under
|
||||
which the LaTeX kernel and the base LaTeX packages are distributed.
|
||||
|
||||
You may use this license for any work of which you hold the copyright
|
||||
and which you wish to distribute. This license may be particularly
|
||||
suitable if your work is TeX-related (such as a LaTeX package), but
|
||||
it is written in such a way that you can use it even if your work is
|
||||
unrelated to TeX.
|
||||
|
||||
The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
|
||||
below, gives instructions, examples, and recommendations for authors
|
||||
who are considering distributing their works under this license.
|
||||
|
||||
This license gives conditions under which a work may be distributed
|
||||
and modified, as well as conditions under which modified versions of
|
||||
that work may be distributed.
|
||||
|
||||
We, the LaTeX3 Project, believe that the conditions below give you
|
||||
the freedom to make and distribute modified versions of your work
|
||||
that conform with whatever technical specifications you wish while
|
||||
maintaining the availability, integrity, and reliability of
|
||||
that work. If you do not see how to achieve your goal while
|
||||
meeting these conditions, then read the document `cfgguide.tex'
|
||||
and `modguide.tex' in the base LaTeX distribution for suggestions.
|
||||
|
||||
|
||||
DEFINITIONS
|
||||
===========
|
||||
|
||||
In this license document the following terms are used:
|
||||
|
||||
`Work'
|
||||
Any work being distributed under this License.
|
||||
|
||||
`Derived Work'
|
||||
Any work that under any applicable law is derived from the Work.
|
||||
|
||||
`Modification'
|
||||
Any procedure that produces a Derived Work under any applicable
|
||||
law -- for example, the production of a file containing an
|
||||
original file associated with the Work or a significant portion of
|
||||
such a file, either verbatim or with modifications and/or
|
||||
translated into another language.
|
||||
|
||||
`Modify'
|
||||
To apply any procedure that produces a Derived Work under any
|
||||
applicable law.
|
||||
|
||||
`Distribution'
|
||||
Making copies of the Work available from one person to another, in
|
||||
whole or in part. Distribution includes (but is not limited to)
|
||||
making any electronic components of the Work accessible by
|
||||
file transfer protocols such as FTP or HTTP or by shared file
|
||||
systems such as Sun's Network File System (NFS).
|
||||
|
||||
`Compiled Work'
|
||||
A version of the Work that has been processed into a form where it
|
||||
is directly usable on a computer system. This processing may
|
||||
include using installation facilities provided by the Work,
|
||||
transformations of the Work, copying of components of the Work, or
|
||||
other activities. Note that modification of any installation
|
||||
facilities provided by the Work constitutes modification of the Work.
|
||||
|
||||
`Current Maintainer'
|
||||
A person or persons nominated as such within the Work. If there is
|
||||
no such explicit nomination then it is the `Copyright Holder' under
|
||||
any applicable law.
|
||||
|
||||
`Base Interpreter'
|
||||
A program or process that is normally needed for running or
|
||||
interpreting a part or the whole of the Work.
|
||||
|
||||
A Base Interpreter may depend on external components but these
|
||||
are not considered part of the Base Interpreter provided that each
|
||||
external component clearly identifies itself whenever it is used
|
||||
interactively. Unless explicitly specified when applying the
|
||||
license to the Work, the only applicable Base Interpreter is a
|
||||
`LaTeX-Format' or in the case of files belonging to the
|
||||
`LaTeX-format' a program implementing the `TeX language'.
|
||||
|
||||
|
||||
|
||||
CONDITIONS ON DISTRIBUTION AND MODIFICATION
|
||||
===========================================
|
||||
|
||||
1. Activities other than distribution and/or modification of the Work
|
||||
are not covered by this license; they are outside its scope. In
|
||||
particular, the act of running the Work is not restricted and no
|
||||
requirements are made concerning any offers of support for the Work.
|
||||
|
||||
2. You may distribute a complete, unmodified copy of the Work as you
|
||||
received it. Distribution of only part of the Work is considered
|
||||
modification of the Work, and no right to distribute such a Derived
|
||||
Work may be assumed under the terms of this clause.
|
||||
|
||||
3. You may distribute a Compiled Work that has been generated from a
|
||||
complete, unmodified copy of the Work as distributed under Clause 2
|
||||
above, as long as that Compiled Work is distributed in such a way that
|
||||
the recipients may install the Compiled Work on their system exactly
|
||||
as it would have been installed if they generated a Compiled Work
|
||||
directly from the Work.
|
||||
|
||||
4. If you are the Current Maintainer of the Work, you may, without
|
||||
restriction, modify the Work, thus creating a Derived Work. You may
|
||||
also distribute the Derived Work without restriction, including
|
||||
Compiled Works generated from the Derived Work. Derived Works
|
||||
distributed in this manner by the Current Maintainer are considered to
|
||||
be updated versions of the Work.
|
||||
|
||||
5. If you are not the Current Maintainer of the Work, you may modify
|
||||
your copy of the Work, thus creating a Derived Work based on the Work,
|
||||
and compile this Derived Work, thus creating a Compiled Work based on
|
||||
the Derived Work.
|
||||
|
||||
6. If you are not the Current Maintainer of the Work, you may
|
||||
distribute a Derived Work provided the following conditions are met
|
||||
for every component of the Work unless that component clearly states
|
||||
in the copyright notice that it is exempt from that condition. Only
|
||||
the Current Maintainer is allowed to add such statements of exemption
|
||||
to a component of the Work.
|
||||
|
||||
a. If a component of this Derived Work can be a direct replacement
|
||||
for a component of the Work when that component is used with the
|
||||
Base Interpreter, then, wherever this component of the Work
|
||||
identifies itself to the user when used interactively with that
|
||||
Base Interpreter, the replacement component of this Derived Work
|
||||
clearly and unambiguously identifies itself as a modified version
|
||||
of this component to the user when used interactively with that
|
||||
Base Interpreter.
|
||||
|
||||
b. Every component of the Derived Work contains prominent notices
|
||||
detailing the nature of the changes to that component, or a
|
||||
prominent reference to another file that is distributed as part
|
||||
of the Derived Work and that contains a complete and accurate log
|
||||
of the changes.
|
||||
|
||||
c. No information in the Derived Work implies that any persons,
|
||||
including (but not limited to) the authors of the original version
|
||||
of the Work, provide any support, including (but not limited to)
|
||||
the reporting and handling of errors, to recipients of the
|
||||
Derived Work unless those persons have stated explicitly that
|
||||
they do provide such support for the Derived Work.
|
||||
|
||||
d. You distribute at least one of the following with the Derived Work:
|
||||
|
||||
1. A complete, unmodified copy of the Work;
|
||||
if your distribution of a modified component is made by
|
||||
offering access to copy the modified component from a
|
||||
designated place, then offering equivalent access to copy
|
||||
the Work from the same or some similar place meets this
|
||||
condition, even though third parties are not compelled to
|
||||
copy the Work along with the modified component;
|
||||
|
||||
2. Information that is sufficient to obtain a complete,
|
||||
unmodified copy of the Work.
|
||||
|
||||
7. If you are not the Current Maintainer of the Work, you may
|
||||
distribute a Compiled Work generated from a Derived Work, as long as
|
||||
the Derived Work is distributed to all recipients of the Compiled
|
||||
Work, and as long as the conditions of Clause 6, above, are met with
|
||||
regard to the Derived Work.
|
||||
|
||||
8. The conditions above are not intended to prohibit, and hence do not
|
||||
apply to, the modification, by any method, of any component so that it
|
||||
becomes identical to an updated version of that component of the Work as
|
||||
it is distributed by the Current Maintainer under Clause 4, above.
|
||||
|
||||
9. Distribution of the Work or any Derived Work in an alternative
|
||||
format, where the Work or that Derived Work (in whole or in part) is
|
||||
then produced by applying some process to that format, does not relax or
|
||||
nullify any sections of this license as they pertain to the results of
|
||||
applying that process.
|
||||
|
||||
10. a. A Derived Work may be distributed under a different license
|
||||
provided that license itself honors the conditions listed in
|
||||
Clause 6 above, in regard to the Work, though it does not have
|
||||
to honor the rest of the conditions in this license.
|
||||
|
||||
b. If a Derived Work is distributed under a different license, that
|
||||
Derived Work must provide sufficient documentation as part of
|
||||
itself to allow each recipient of that Derived Work to honor the
|
||||
restrictions in Clause 6 above, concerning changes from the Work.
|
||||
|
||||
11. This license places no restrictions on works that are unrelated to
|
||||
the Work, nor does this license place any restrictions on aggregating
|
||||
such works with the Work by any means.
|
||||
|
||||
12. Nothing in this license is intended to, or may be used to, prevent
|
||||
complete compliance by all parties with all applicable laws.
|
||||
|
||||
|
||||
NO WARRANTY
|
||||
===========
|
||||
|
||||
There is no warranty for the Work. Except when otherwise stated in
|
||||
writing, the Copyright Holder provides the Work `as is', without
|
||||
warranty of any kind, either expressed or implied, including, but not
|
||||
limited to, the implied warranties of merchantability and fitness for a
|
||||
particular purpose. The entire risk as to the quality and performance
|
||||
of the Work is with you. Should the Work prove defective, you assume
|
||||
the cost of all necessary servicing, repair, or correction.
|
||||
|
||||
In no event unless required by applicable law or agreed to in writing
|
||||
will The Copyright Holder, or any author named in the components of the
|
||||
Work, or any other party who may distribute and/or modify the Work as
|
||||
permitted above, be liable to you for damages, including any general,
|
||||
special, incidental or consequential damages arising out of any use of
|
||||
the Work or out of inability to use the Work (including, but not limited
|
||||
to, loss of data, data being rendered inaccurate, or losses sustained by
|
||||
anyone as a result of any failure of the Work to operate with any other
|
||||
programs), even if the Copyright Holder or said author or said other
|
||||
party has been advised of the possibility of such damages.
|
||||
|
||||
|
||||
MAINTENANCE OF THE WORK
|
||||
=======================
|
||||
|
||||
The Work has the status `author-maintained' if the Copyright Holder
|
||||
explicitly and prominently states near the primary copyright notice in
|
||||
the Work that the Work can only be maintained by the Copyright Holder
|
||||
or simply that it is `author-maintained'.
|
||||
|
||||
The Work has the status `maintained' if there is a Current Maintainer
|
||||
who has indicated in the Work that they are willing to receive error
|
||||
reports for the Work (for example, by supplying a valid e-mail
|
||||
address). It is not required for the Current Maintainer to acknowledge
|
||||
or act upon these error reports.
|
||||
|
||||
The Work changes from status `maintained' to `unmaintained' if there
|
||||
is no Current Maintainer, or the person stated to be Current
|
||||
Maintainer of the work cannot be reached through the indicated means
|
||||
of communication for a period of six months, and there are no other
|
||||
significant signs of active maintenance.
|
||||
|
||||
You can become the Current Maintainer of the Work by agreement with
|
||||
any existing Current Maintainer to take over this role.
|
||||
|
||||
If the Work is unmaintained, you can become the Current Maintainer of
|
||||
the Work through the following steps:
|
||||
|
||||
1. Make a reasonable attempt to trace the Current Maintainer (and
|
||||
the Copyright Holder, if the two differ) through the means of
|
||||
an Internet or similar search.
|
||||
|
||||
2. If this search is successful, then enquire whether the Work
|
||||
is still maintained.
|
||||
|
||||
a. If it is being maintained, then ask the Current Maintainer
|
||||
to update their communication data within one month.
|
||||
|
||||
b. If the search is unsuccessful or no action to resume active
|
||||
maintenance is taken by the Current Maintainer, then announce
|
||||
within the pertinent community your intention to take over
|
||||
maintenance. (If the Work is a LaTeX work, this could be
|
||||
done, for example, by posting to comp.text.tex.)
|
||||
|
||||
3a. If the Current Maintainer is reachable and agrees to pass
|
||||
maintenance of the Work to you, then this takes effect
|
||||
immediately upon announcement.
|
||||
|
||||
b. If the Current Maintainer is not reachable and the Copyright
|
||||
Holder agrees that maintenance of the Work be passed to you,
|
||||
then this takes effect immediately upon announcement.
|
||||
|
||||
4. If you make an `intention announcement' as described in 2b. above
|
||||
and after three months your intention is challenged neither by
|
||||
the Current Maintainer nor by the Copyright Holder nor by other
|
||||
people, then you may arrange for the Work to be changed so as
|
||||
to name you as the (new) Current Maintainer.
|
||||
|
||||
5. If the previously unreachable Current Maintainer becomes
|
||||
reachable once more within three months of a change completed
|
||||
under the terms of 3b) or 4), then that Current Maintainer must
|
||||
become or remain the Current Maintainer upon request provided
|
||||
they then update their communication data within one month.
|
||||
|
||||
A change in the Current Maintainer does not, of itself, alter the fact
|
||||
that the Work is distributed under the LPPL license.
|
||||
|
||||
If you become the Current Maintainer of the Work, you should
|
||||
immediately provide, within the Work, a prominent and unambiguous
|
||||
statement of your status as Current Maintainer. You should also
|
||||
announce your new status to the same pertinent community as
|
||||
in 2b) above.
|
||||
|
||||
|
||||
WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
|
||||
======================================================
|
||||
|
||||
This section contains important instructions, examples, and
|
||||
recommendations for authors who are considering distributing their
|
||||
works under this license. These authors are addressed as `you' in
|
||||
this section.
|
||||
|
||||
Choosing This License or Another License
|
||||
----------------------------------------
|
||||
|
||||
If for any part of your work you want or need to use *distribution*
|
||||
conditions that differ significantly from those in this license, then
|
||||
do not refer to this license anywhere in your work but, instead,
|
||||
distribute your work under a different license. You may use the text
|
||||
of this license as a model for your own license, but your license
|
||||
should not refer to the LPPL or otherwise give the impression that
|
||||
your work is distributed under the LPPL.
|
||||
|
||||
The document `modguide.tex' in the base LaTeX distribution explains
|
||||
the motivation behind the conditions of this license. It explains,
|
||||
for example, why distributing LaTeX under the GNU General Public
|
||||
License (GPL) was considered inappropriate. Even if your work is
|
||||
unrelated to LaTeX, the discussion in `modguide.tex' may still be
|
||||
relevant, and authors intending to distribute their works under any
|
||||
license are encouraged to read it.
|
||||
|
||||
A Recommendation on Modification Without Distribution
|
||||
-----------------------------------------------------
|
||||
|
||||
It is wise never to modify a component of the Work, even for your own
|
||||
personal use, without also meeting the above conditions for
|
||||
distributing the modified component. While you might intend that such
|
||||
modifications will never be distributed, often this will happen by
|
||||
accident -- you may forget that you have modified that component; or
|
||||
it may not occur to you when allowing others to access the modified
|
||||
version that you are thus distributing it and violating the conditions
|
||||
of this license in ways that could have legal implications and, worse,
|
||||
cause problems for the community. It is therefore usually in your
|
||||
best interest to keep your copy of the Work identical with the public
|
||||
one. Many works provide ways to control the behavior of that work
|
||||
without altering any of its licensed components.
|
||||
|
||||
How to Use This License
|
||||
-----------------------
|
||||
|
||||
To use this license, place in each of the components of your work both
|
||||
an explicit copyright notice including your name and the year the work
|
||||
was authored and/or last substantially modified. Include also a
|
||||
statement that the distribution and/or modification of that
|
||||
component is constrained by the conditions in this license.
|
||||
|
||||
Here is an example of such a notice and statement:
|
||||
|
||||
%% pig.dtx
|
||||
%% Copyright 2005 M. Y. Name
|
||||
%
|
||||
% This work may be distributed and/or modified under the
|
||||
% conditions of the LaTeX Project Public License, either version 1.3
|
||||
% of this license or (at your option) any later version.
|
||||
% The latest version of this license is in
|
||||
% http://www.latex-project.org/lppl.txt
|
||||
% and version 1.3 or later is part of all distributions of LaTeX
|
||||
% version 2005/12/01 or later.
|
||||
%
|
||||
% This work has the LPPL maintenance status `maintained'.
|
||||
%
|
||||
% The Current Maintainer of this work is M. Y. Name.
|
||||
%
|
||||
% This work consists of the files pig.dtx and pig.ins
|
||||
% and the derived file pig.sty.
|
||||
|
||||
Given such a notice and statement in a file, the conditions
|
||||
given in this license document would apply, with the `Work' referring
|
||||
to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
|
||||
generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
|
||||
referring to any `LaTeX-Format', and both `Copyright Holder' and
|
||||
`Current Maintainer' referring to the person `M. Y. Name'.
|
||||
|
||||
If you do not want the Maintenance section of LPPL to apply to your
|
||||
Work, change `maintained' above into `author-maintained'.
|
||||
However, we recommend that you use `maintained', as the Maintenance
|
||||
section was added in order to ensure that your Work remains useful to
|
||||
the community even when you can no longer maintain and support it
|
||||
yourself.
|
||||
|
||||
Derived Works That Are Not Replacements
|
||||
---------------------------------------
|
||||
|
||||
Several clauses of the LPPL specify means to provide reliability and
|
||||
stability for the user community. They therefore concern themselves
|
||||
with the case that a Derived Work is intended to be used as a
|
||||
(compatible or incompatible) replacement of the original Work. If
|
||||
this is not the case (e.g., if a few lines of code are reused for a
|
||||
completely different task), then clauses 6b and 6d shall not apply.
|
||||
|
||||
|
||||
Important Recommendations
|
||||
-------------------------
|
||||
|
||||
Defining What Constitutes the Work
|
||||
|
||||
The LPPL requires that distributions of the Work contain all the
|
||||
files of the Work. It is therefore important that you provide a
|
||||
way for the licensee to determine which files constitute the Work.
|
||||
This could, for example, be achieved by explicitly listing all the
|
||||
files of the Work near the copyright notice of each file or by
|
||||
using a line such as:
|
||||
|
||||
% This work consists of all files listed in manifest.txt.
|
||||
|
||||
in that place. In the absence of an unequivocal list it might be
|
||||
impossible for the licensee to determine what is considered by you
|
||||
to comprise the Work and, in such a case, the licensee would be
|
||||
entitled to make reasonable conjectures as to which files comprise
|
||||
the Work.
|
||||
|
||||
|
||||
2
Makefile
2
Makefile
|
|
@ -1,6 +1,6 @@
|
|||
.PHONY: examples
|
||||
|
||||
CC = xelatex
|
||||
CC = lualatex
|
||||
EXAMPLES_DIR = examples
|
||||
RESUME_DIR = examples/resume
|
||||
CV_DIR = examples/cv
|
||||
|
|
|
|||
31
README.md
31
README.md
|
|
@ -14,8 +14,8 @@
|
|||
<a href="https://www.paypal.me/posquit0">
|
||||
<img alt="Donate" src="https://img.shields.io/badge/Donate-PayPal-blue.svg" />
|
||||
</a>
|
||||
<a href="https://circleci.com/gh/posquit0/Awesome-CV">
|
||||
<img alt="CircleCI" src="https://circleci.com/gh/posquit0/Awesome-CV.svg?style=shield" />
|
||||
<a href="https://github.com/posquit0/Awesome-CV/actions/workflows/main.yml">
|
||||
<img alt="GitHub Actions" src="https://github.com/posquit0/Awesome-CV/actions/workflows/main.yml/badge.svg" />
|
||||
</a>
|
||||
<a href="https://raw.githubusercontent.com/posquit0/Awesome-CV/master/examples/resume.pdf">
|
||||
<img alt="Example Resume" src="https://img.shields.io/badge/resume-pdf-green.svg" />
|
||||
|
|
@ -40,10 +40,6 @@
|
|||
Please help keep this project alive! Donations are welcome and will go towards further development of this project.
|
||||
|
||||
PayPal: paypal.me/posquit0
|
||||
BTC: 1Je3DxJVM2a9nTVPNo55SfQwpmxA6N2KKb
|
||||
BCH: 1Mg1wG7PwHGrHYSWS67TsGSjo5GHEVbF16
|
||||
ETH: 0x77ED9B4659F80205E9B9C9FB1E26EDB9904AFCC7
|
||||
QTUM: QZT7D6m3QtTTqp7s4ZWAwLtGDsoHMMaM8E
|
||||
|
||||
*Thank you for your support!*
|
||||
|
||||
|
|
@ -79,24 +75,32 @@ You can see [PDF](https://raw.githubusercontent.com/posquit0/Awesome-CV/master/e
|
|||
#### Requirements
|
||||
|
||||
A full TeX distribution is assumed. [Various distributions for different operating systems (Windows, Mac, \*nix) are available](http://tex.stackexchange.com/q/55437) but TeX Live is recommended.
|
||||
You can [install TeX from upstream](http://tex.stackexchange.com/q/1092) (recommended; most up-to-date) or use `sudo apt-get install texlive-full` if you really want that. (It's generally a few years behind.)
|
||||
You can [install TeX from upstream](https://tex.stackexchange.com/q/1092) (recommended; most up-to-date) or use `sudo apt-get install texlive-full` if you really want that. (It's generally a few years behind.)
|
||||
|
||||
If you don't want to install the dependencies on your system, this can also be obtained via [Docker](https://docker.com).
|
||||
|
||||
#### Usage
|
||||
|
||||
At a command prompt, run
|
||||
|
||||
```bash
|
||||
$ xelatex {your-cv}.tex
|
||||
xelatex {your-cv}.tex
|
||||
```
|
||||
|
||||
This should result in the creation of ``{your-cv}.pdf``
|
||||
Or using docker:
|
||||
|
||||
```bash
|
||||
docker run --rm --user $(id -u):$(id -g) -i -w "/doc" -v "$PWD":/doc texlive/texlive:latest make
|
||||
```
|
||||
|
||||
In either case, this should result in the creation of ``{your-cv}.pdf``
|
||||
|
||||
|
||||
## Credit
|
||||
|
||||
[**LaTeX**](http://www.latex-project.org) is a fantastic typesetting program that a lot of people use these days, especially the math and computer science people in academia.
|
||||
[**LaTeX**](https://www.latex-project.org) is a fantastic typesetting program that a lot of people use these days, especially the math and computer science people in academia.
|
||||
|
||||
[**LaTeX FontAwesome**](https://github.com/furl/latex-fontawesome) is bindings for FontAwesome icons to be used in XeLaTeX.
|
||||
[**FontAwesome6 LaTeX Package**](https://github.com/braniii/fontawesome) is a LaTeX package that provides access to the [Font Awesome 6](https://fontawesome.com/v6/icons) icon set.
|
||||
|
||||
[**Roboto**](https://github.com/google/roboto) is the default font on Android and ChromeOS, and the recommended font for Google’s visual language, Material Design.
|
||||
|
||||
|
|
@ -112,6 +116,11 @@ If you have any questions, feel free to join me at [`#posquit0` on Freenode](irc
|
|||
Good luck!
|
||||
|
||||
|
||||
## Maintainers
|
||||
- [posquit0](https://github.com/posquit0)
|
||||
- [OJFord](https://github.com/OJFord)
|
||||
|
||||
|
||||
## See Also
|
||||
|
||||
* [Awesome Identity](https://github.com/posquit0/hugo-awesome-identity) - A single-page Hugo theme to introduce yourself.
|
||||
|
|
|
|||
282
awesome-cv.cls
282
awesome-cv.cls
|
|
@ -48,13 +48,14 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% Needed to make fixed length table
|
||||
\RequirePackage{array}
|
||||
\RequirePackage{tabularx}
|
||||
% Needed to handle list environment
|
||||
\RequirePackage{enumitem}
|
||||
% Needed to handle text alignment
|
||||
\RequirePackage{ragged2e}
|
||||
% Needed to configure page layout
|
||||
\RequirePackage{geometry}
|
||||
% Needed to make header & footer effeciently
|
||||
% Needed to make header & footer efficiently
|
||||
\RequirePackage{fancyhdr}
|
||||
% Needed to manage colors
|
||||
\RequirePackage{xcolor}
|
||||
|
|
@ -62,6 +63,8 @@
|
|||
\RequirePackage{ifxetex}
|
||||
% Needed to use \if-\then-\else statement
|
||||
\RequirePackage{xifthen}
|
||||
% Needed to strip chars from telephone number
|
||||
\RequirePackage{xstring}
|
||||
% Needed to use a toolbox of programming tools
|
||||
\RequirePackage{etoolbox}
|
||||
% Needed to change line spacing in specific environment
|
||||
|
|
@ -73,30 +76,56 @@
|
|||
% Needed to manage math fonts
|
||||
\RequirePackage{unicode-math}
|
||||
% Needed to use icons from font-awesome
|
||||
% (https://github.com/posquit0/latex-fontawesome)
|
||||
\RequirePackage{fontawesome}
|
||||
\RequirePackage[default,opentype]{sourcesanspro}
|
||||
\RequirePackage{fontawesome6}
|
||||
\RequirePackage{accsupp}
|
||||
\defaultfontfeatures{
|
||||
Renderer=HarfBuzz,
|
||||
}
|
||||
\setmainfont{Source Sans 3}[
|
||||
UprightFont=*,
|
||||
ItalicFont=* Italic,
|
||||
BoldFont=* Bold,
|
||||
BoldItalicFont=* Bold Italic,
|
||||
FontFace={l}{n}{Font=* Light},
|
||||
FontFace={l}{it}{Font=* Light Italic},
|
||||
]
|
||||
\setsansfont{Source Sans 3}[
|
||||
UprightFont=*,
|
||||
ItalicFont=* Italic,
|
||||
BoldFont=* Bold,
|
||||
BoldItalicFont=* Bold Italic,
|
||||
FontFace={l}{n}{Font=* Light},
|
||||
FontFace={l}{it}{Font=* Light Italic},
|
||||
]
|
||||
\newfontfamily\roboto{Roboto}[
|
||||
UprightFont=*,
|
||||
ItalicFont=* Italic,
|
||||
BoldFont=* Bold,
|
||||
BoldItalicFont=* Bold Italic,
|
||||
FontFace={l}{n}{Font=* Light},
|
||||
FontFace={l}{it}{Font=* Light Italic},
|
||||
]
|
||||
% Needed for the photo ID
|
||||
\RequirePackage[skins]{tcolorbox}
|
||||
% Needed to deal a paragraphs
|
||||
\RequirePackage{parskip}
|
||||
% Needed to deal hyperlink
|
||||
\RequirePackage[hidelinks,unicode]{hyperref}
|
||||
\RequirePackage[hidelinks,unicode,pdfpagelabels=false]{hyperref}
|
||||
\hypersetup{%
|
||||
pdftitle={},
|
||||
pdfauthor={},
|
||||
pdfsubject={},
|
||||
pdfkeywords={}
|
||||
}
|
||||
|
||||
% Solves issues Warning: File `cv.out' has changed
|
||||
\RequirePackage{bookmark}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% 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}}
|
||||
\fontdir
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% Configuration for layout
|
||||
|
|
@ -136,6 +165,7 @@
|
|||
\colorlet{text}{darkgray}
|
||||
\colorlet{graytext}{gray}
|
||||
\colorlet{lighttext}{lightgray}
|
||||
\colorlet{sectiondivider}{gray}
|
||||
% Awesome colors
|
||||
\definecolor{awesome-emerald}{HTML}{00A388}
|
||||
\definecolor{awesome-skyblue}{HTML}{0395DE}
|
||||
|
|
@ -151,37 +181,14 @@
|
|||
\newbool{acvSectionColorHighlight}
|
||||
\setbool{acvSectionColorHighlight}{true}
|
||||
|
||||
% Awesome section color
|
||||
\def\@sectioncolor#1#2#3{%
|
||||
\ifbool{acvSectionColorHighlight}{{\color{awesome}#1#2#3}}{#1#2#3}%
|
||||
}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% Configuration for fonts
|
||||
%-------------------------------------------------------------------------------
|
||||
% Set the FontAwesome font to be up-to-date.
|
||||
\setfontfamily\FA[Path=\@fontdir]{FontAwesome}
|
||||
% 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*{\bodyfont}{\sourcesanspro}
|
||||
\newcommand*{\bodyfontlight}{\sourcesansprolight}
|
||||
\newcommand*{\headerfont}{\roboto\selectfont}
|
||||
\newcommand*{\headerfontlight}{\roboto\fontseries{l}\selectfont}
|
||||
\newcommand*{\footerfont}{\sffamily}
|
||||
\newcommand*{\bodyfont}{\sffamily}
|
||||
\newcommand*{\bodyfontlight}{\sffamily\fontseries{l}\selectfont}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% Configuration for styles
|
||||
|
|
@ -195,7 +202,14 @@
|
|||
\newcommand*{\headersocialstyle}[1]{{\fontsize{6.8pt}{1em}\headerfont\color{text} #1}}
|
||||
\newcommand*{\headerquotestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\itshape\color{darktext} #1}}
|
||||
\newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}}
|
||||
\newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
|
||||
\newcommand*{\sectionstyleface}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries #1}}
|
||||
\newcommand*{\sectionstyle}[1]{%
|
||||
\def\@acvSectionTmp{#1}
|
||||
\ifthenelse{\boolean{acvSectionColorHighlight}}{%
|
||||
\StrSplit{\@acvSectionTmp}{3}{\acvSectionStringAwesome}{\acvSectionStringPlain}%
|
||||
\color{awesome}\sectionstyleface{\acvSectionStringAwesome%
|
||||
\color{text}{\acvSectionStringPlain}}}%
|
||||
{\color{text}\sectionstyleface{\@acvSectionTmp}}}
|
||||
\newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}}
|
||||
\newcommand*{\paragraphstyle}{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text}}
|
||||
|
||||
|
|
@ -224,7 +238,14 @@
|
|||
\newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}}
|
||||
|
||||
% For elements of the cover letter
|
||||
\newcommand*{\lettersectionstyle}[1]{{\fontsize{14pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
|
||||
\newcommand*{\lettersectionstyleface}[1]{{\fontsize{14pt}{1em}\bodyfont\bfseries #1}}
|
||||
\newcommand*{\lettersectionstyle}[1]{%
|
||||
\def\@acvLetterSectionTmp{#1}
|
||||
\ifthenelse{\boolean{acvSectionColorHighlight}}{%
|
||||
\StrSplit{\@acvLetterSectionTmp}{3}{\acvLetterSectionStringAwesome}{\acvLetterSectionStringPlain}%
|
||||
\color{awesome}\sectionstyleface{\acvLetterSectionStringAwesome%
|
||||
\color{text}{\acvLetterSectionStringPlain}}}%
|
||||
{\color{text}\lettersectionstyleface{\@acvLetterSectionTmp}}}
|
||||
\newcommand*{\recipientaddressstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\scshape\color{graytext} #1}}
|
||||
\newcommand*{\recipienttitlestyle}[1]{{\fontsize{11pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
|
||||
\newcommand*{\lettertitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\bfseries\color{darktext} \underline{#1}}}
|
||||
|
|
@ -275,12 +296,39 @@
|
|||
|
||||
% Defines writer's mobile (optional)
|
||||
% 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 WhatsApp (optional)
|
||||
% Usage: \whatsapp{<mobile number>}
|
||||
\newcommand*{\whatsapp}[1]
|
||||
{
|
||||
\def\@whatsapp{#1}
|
||||
\def\@wameuri{https://wa.me/\@whatsapp}
|
||||
% Strip unwanted characters
|
||||
\StrDel{\@wameuri}{ }[\@wameuri]%
|
||||
\StrDel{\@wameuri}{+}[\@wameuri]%
|
||||
\StrDel{\@wameuri}{-}[\@wameuri]%
|
||||
\StrDel{\@wameuri}{(}[\@wameuri]%
|
||||
\StrDel{\@wameuri}{)}[\@wameuri]%
|
||||
}
|
||||
|
||||
% Defines writer's email (optional)
|
||||
% Usage: \email{<email address>}
|
||||
\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)
|
||||
% Usage: \homepage{<url>}
|
||||
\newcommand*{\homepage}[1]{\def\@homepage{#1}}
|
||||
|
|
@ -293,6 +341,10 @@
|
|||
% Usage: \gitlab{<gitlab-nick>}
|
||||
\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)
|
||||
% Usage: \stackoverflow{<so userid>}{<so username>}
|
||||
% e.g.https://stackoverflow.com/users/123456/sam-smith
|
||||
|
|
@ -303,10 +355,26 @@
|
|||
% Usage: \linkedin{<linked-in-nick>}
|
||||
\newcommand*{\linkedin}[1]{\def\@linkedin{#1}}
|
||||
|
||||
% Defines writer's orcid (optional)
|
||||
% Usage: \orcid{<orcid-num>}
|
||||
\newcommand*{\orcid}[1]{\def\@orcid{#1}}
|
||||
|
||||
% Defines writer's twitter (optional)
|
||||
% Usage: \twitter{<twitter handle>}
|
||||
\newcommand*{\twitter}[1]{\def\@twitter{#1}}
|
||||
|
||||
% Defines writer's x (formerly twitter) (optional)
|
||||
% Usage: \x{<x account>}
|
||||
\newcommand*{\x}[1]{\def\@x{#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)
|
||||
% Usage: \researchgate{<researchgate-account>}
|
||||
\newcommand*{\researchgate}[1]{\def\@researchgate{#1}}
|
||||
|
||||
% Defines writer's skype (optional)
|
||||
% Usage: \skype{<skype account>}
|
||||
\newcommand*{\skype}[1]{\def\@skype{#1}}
|
||||
|
|
@ -323,6 +391,18 @@
|
|||
% Usage: \medium{<medium account>}
|
||||
\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 Telegram (optional)
|
||||
% Usage: \telegram{<Telegram username>}
|
||||
\newcommand*{\telegram}[1]{\def\@telegram{#1}}
|
||||
|
||||
% Defines writer's google scholar profile (optional)
|
||||
% Usage: \googlescholar{<googlescholar userid>}{<googlescholar username>}
|
||||
% e.g.https://scholar.google.co.uk/citations?user=wpZDx1cAAAAJ
|
||||
|
|
@ -338,8 +418,8 @@
|
|||
}%
|
||||
}
|
||||
|
||||
% Defines writer's extra informations (optional)
|
||||
% Usage: \extrainfo{<extra informations>}
|
||||
% Defines writer's extra information (optional)
|
||||
% Usage: \extrainfo{<extra information>}
|
||||
\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
|
||||
|
||||
% Defines writer's quote (optional)
|
||||
|
|
@ -390,7 +470,7 @@
|
|||
\newcommand{\acvHeaderAfterPositionSkip}{.4mm}
|
||||
\newcommand{\acvHeaderAfterAddressSkip}{-.5mm}
|
||||
\newcommand{\acvHeaderIconSep}{\space}
|
||||
\newcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
|
||||
\newcommand{\acvHeaderSocialSep}{\BeginAccSupp{ActualText={}}\quad\textbar\quad\EndAccSupp{}}
|
||||
\newcommand{\acvHeaderAfterSocialSkip}{6mm}
|
||||
\newcommand{\acvHeaderAfterQuoteSkip}{5mm}
|
||||
|
||||
|
|
@ -403,6 +483,7 @@
|
|||
% Commands for utilities
|
||||
%-------------------------------------------------------------------------------
|
||||
% Use to align an element of tabular table
|
||||
\renewcommand{\tabularxcolumn}{p}
|
||||
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
|
||||
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
|
||||
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
|
||||
|
|
@ -414,6 +495,11 @@
|
|||
\newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}}
|
||||
\newcommand*{\whennotempty}[2]{\ifthenelse{\isempty{#1}}{}{#2}}
|
||||
|
||||
\newcommand{\faAlt}[3]{%
|
||||
\BeginAccSupp{ActualText={#1}}%
|
||||
\mbox{#2\acvHeaderIconSep#3}%
|
||||
\EndAccSupp{}%
|
||||
}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% Commands for elements of CV structure
|
||||
|
|
@ -459,80 +545,140 @@
|
|||
\ifthenelse{\isundefined{\@mobile}}%
|
||||
{}%
|
||||
{%
|
||||
\faMobile\acvHeaderIconSep\@mobile%
|
||||
\href{\@teluri}{\faAlt{tel:\@mobile}{\faMobile}{\@mobile}}%
|
||||
\setbool{isstart}{false}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@whatsapp}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{\@wameuri}{\faAlt{WhatsApp: \@whatsapp}{\faSquareWhatsapp}{\@whatsapp}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@email}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{mailto:\@email}{\faEnvelope\acvHeaderIconSep\@email}%
|
||||
\href{mailto:\@email}{\faAlt{mailto:\@email}{\faEnvelope}{\@email}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@dateofbirth}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\faAlt{DoB: \@dateofbirth}{\faCakeCandles}{\@dateofbirth}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@homepage}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{http://\@homepage}{\faHome\acvHeaderIconSep\@homepage}%
|
||||
\href{\@homepage}{\faAlt{homepage: \@homepage}{\faHouseChimney}{\@homepage}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@github}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://github.com/\@github}{\faGithubSquare\acvHeaderIconSep\@github}%
|
||||
\href{https://github.com/\@github}{\faAlt{GitHub: @\@github}{\faSquareGithub}{\@github}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@gitlab}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}%
|
||||
\href{https://gitlab.com/\@gitlab}{\faAlt{GitLab: @\@gitlab}{\faGitlab}{\@gitlab}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@bitbucket}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://bitbucket.com/\@bitbucket}{\faAlt{BitBucket: @\@bitbucket}{\faBitbucket}{\@bitbucket}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@stackoverflowid}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\acvHeaderIconSep\@stackoverflowname}%
|
||||
\href{https://stackoverflow.com/users/\@stackoverflowid}{\faAlt{StackOverflow: @\@stackoverflowname}{\faStackOverflow}{\@stackoverflowname}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@linkedin}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://www.linkedin.com/in/\@linkedin}{\faLinkedinSquare\acvHeaderIconSep\@linkedin}%
|
||||
\href{https://www.linkedin.com/in/\@linkedin}{\faAlt{LinkedIn: /in/\@linkedin}{\faLinkedin}{\@linkedin}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@orcid}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://orcid.org/\@orcid}{\faAlt{OrcID: \@orcid}{\faOrcid}{\@orcid}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@twitter}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}%
|
||||
\href{https://twitter.com/\@twitter}{\faAlt{Twitter: @\@twitter}{\faTwitter}{\@twitter}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@x}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://x.com/\@x}{\faAlt{X: @\@x}{\faXTwitter}{\@x}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@mastodonname}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://\@mastodoninstance/@\@mastodonname}{\faAlt{Mastodon: \@mastodonname{}@\@mastodoninstance}{\faMastodon}{\@mastodonname}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@skype}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\faSkype\acvHeaderIconSep\@skype%
|
||||
\faAlt{Skype: \@skype}{\faSkype}{\@skype}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@reddit}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://www.reddit.com/user/\@reddit}{\faReddit\acvHeaderIconSep\@reddit}%
|
||||
\href{https://www.reddit.com/user/\@reddit}{\faAlt{Reddit: /u/\@reddit}{\faReddit}{\@reddit}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@researchgate}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://www.researchgate.net/profile/\@researchgate}{\faAlt{ResearchGate: \@researchgate}{\faResearchgate}{\@researchgate}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@xing}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://www.xing.com/profile/\@xing}{\faXingSquare\acvHeaderIconSep\@xing}
|
||||
\href{https://www.xing.com/profile/\@xing}{\faAlt{Xing: \@xing}{\faSquareXing}{\@xing}}
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@medium}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://medium.com/@\@medium}{\faMedium\acvHeaderIconSep\@medium}%
|
||||
\href{https://medium.com/@\@medium}{\faAlt{Medium: @\@medium}{\faMedium}{\@medium}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@kaggle}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://kaggle.com/\@kaggle}{\faAlt{Kaggle: \@kaggle}{\faKaggle}{\@kaggle}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@hackerrank}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://www.hackerrank.com/\@hackerrank}{\faAlt{HackerRank: \@hackerrank}{\faHackerrank}{\@hackerrank}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@telegram}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://t.me/\@telegram}{\faAlt{Telegram: \@telegram}{\faTelegram}{\@telegram}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@googlescholarid}}%
|
||||
{}%
|
||||
{%
|
||||
\ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
|
||||
\href{https://scholar.google.com/citations?user=\@googlescholarid}{\faGraduationCap\acvHeaderIconSep\@googlescholarname}%
|
||||
\href{https://scholar.google.com/citations?user=\@googlescholarid}{\faAlt{Google Scholar: \@googlescholarid}{\faGraduationCap}{\@googlescholarname}}%
|
||||
}%
|
||||
\ifthenelse{\isundefined{\@extrainfo}}%
|
||||
{}%
|
||||
|
|
@ -565,7 +711,7 @@
|
|||
\vspace{\acvSectionTopSkip}
|
||||
\sectionstyle{#1}
|
||||
\phantomsection
|
||||
\color{gray}\vhrulefill{0.9pt}
|
||||
\color{sectiondivider}\vhrulefill{0.9pt}
|
||||
}
|
||||
|
||||
% Define a subsection for CV
|
||||
|
|
@ -605,7 +751,11 @@
|
|||
{\entrytitlestyle{#2} & \entrylocationstyle{#3} \\}
|
||||
\whennotempty{#1#4}
|
||||
{\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
||||
\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}
|
||||
{\entrytitlestyle{#2} & \entrylocationstyle{#3} \\
|
||||
\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
|
||||
\ifstrempty{#5}
|
||||
{}
|
||||
{\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}} \\}
|
||||
\end{tabular*}%
|
||||
}
|
||||
|
||||
|
|
@ -648,25 +798,24 @@
|
|||
% Define a line of cv information(honor, award or something else)
|
||||
% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
|
||||
\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
|
||||
\newenvironment{cvskills}{%
|
||||
\vspace{\acvSectionContentTopSkip}
|
||||
\vspace{-2.0mm}
|
||||
\begin{center}
|
||||
\setlength\tabcolsep{1ex}
|
||||
\setlength{\extrarowheight}{0pt}
|
||||
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{\textwidth * \real{0.9}}}
|
||||
\tabularx{\textwidth}{r>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}X}
|
||||
}{%
|
||||
\end{tabular*}
|
||||
\end{center}
|
||||
\endtabularx\par
|
||||
}
|
||||
|
||||
% Define a line of cv information(skill)
|
||||
% Usage: \cvskill{<type>}{<skillset>}
|
||||
\newcommand*{\cvskill}[2]{%
|
||||
\skilltypestyle{#1} & \skillsetstyle{#2} \\
|
||||
\skilltypestyle{#1} & \leavevmode\skillsetstyle{#2} \\
|
||||
}
|
||||
|
||||
% Define an environment for cvitems(for cventry)
|
||||
|
|
@ -679,7 +828,7 @@
|
|||
}{%
|
||||
\end{itemize}
|
||||
\end{justify}
|
||||
\vspace{-4.0mm}
|
||||
\vspace{1.0mm}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -698,8 +847,9 @@
|
|||
\par\addvspace{2.5ex}
|
||||
\phantomsection{}
|
||||
\lettersectionstyle{#1}
|
||||
\color{gray}\vhrulefill{0.9pt}
|
||||
\color{sectiondivider}\vhrulefill{0.9pt}
|
||||
\par\nobreak\addvspace{0.4ex}
|
||||
\lettertextstyle
|
||||
}
|
||||
|
||||
% Define a title of the cover letter
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -23,9 +23,6 @@
|
|||
% Configure page margins with geometry
|
||||
\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
|
||||
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||
|
|
@ -39,6 +36,7 @@
|
|||
% \definecolor{text}{HTML}{333333}
|
||||
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||
% \definecolor{lighttext}{HTML}{999999}
|
||||
% \definecolor{sectiondivider}{HTML}{5D5D5D}
|
||||
|
||||
% Set false if you don't want to highlight section with awesome color
|
||||
\setbool{acvSectionColorHighlight}{true}
|
||||
|
|
@ -54,24 +52,30 @@
|
|||
% Available options: circle|rectangle,edge/noedge,left/right
|
||||
\photo[circle,noedge,left]{./examples/profile}
|
||||
\name{Claud D.}{Park}
|
||||
\position{Software Architect{\enskip\cdotp\enskip}Security Expert}
|
||||
\address{42-8, Bangbae-ro 15-gil, Seocho-gu, Seoul, 00681, Rep. of KOREA}
|
||||
\position{Site Reliability Engineer{\enskip\cdotp\enskip}Software Architect}
|
||||
\address{235, World Cup buk-ro, Mapo-gu, Seoul, 03936, Republic of Korea}
|
||||
|
||||
\mobile{(+82) 10-9030-1843}
|
||||
%\whatsapp{(+82) 10-9030-1843}
|
||||
\email{posquit0.bj@gmail.com}
|
||||
%\dateofbirth{January 1st, 1970}
|
||||
\homepage{www.posquit0.com}
|
||||
\github{posquit0}
|
||||
\linkedin{posquit0}
|
||||
% \gitlab{gitlab-id}
|
||||
% \stackoverflow{SO-id}{SO-name}
|
||||
% \twitter{@twit}
|
||||
% \x{x-id}
|
||||
% \skype{skype-id}
|
||||
% \reddit{reddit-id}
|
||||
% \medium{madium-id}
|
||||
% \kaggle{kaggle-id}
|
||||
% \hackerrank{hackerrank-id}
|
||||
% \telegram{telegram-username}
|
||||
% \googlescholar{googlescholar-id}{name-to-display}
|
||||
%% \firstname and \lastname will be used
|
||||
% \googlescholar{googlescholar-id}{}
|
||||
% \extrainfo{extra informations}
|
||||
% \extrainfo{extra information}
|
||||
|
||||
\quote{``Be the change that you want to see in the world."}
|
||||
|
||||
|
|
@ -99,7 +103,7 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
\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)
|
||||
\makecvheader[R]
|
||||
|
||||
|
|
@ -110,7 +114,7 @@
|
|||
{Claud D. Park~~~·~~~Cover Letter}
|
||||
{}
|
||||
|
||||
% Print the title with above letter informations
|
||||
% Print the title with above letter information
|
||||
\makelettertitle
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
@ -131,7 +135,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
|
||||
|
||||
\end{document}
|
||||
|
|
|
|||
BIN
examples/cv.pdf
BIN
examples/cv.pdf
Binary file not shown.
|
|
@ -23,9 +23,6 @@
|
|||
% Configure page margins with geometry
|
||||
\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
|
||||
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||
|
|
@ -39,6 +36,7 @@
|
|||
% \definecolor{text}{HTML}{333333}
|
||||
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||
% \definecolor{lighttext}{HTML}{999999}
|
||||
% \definecolor{sectiondivider}{HTML}{5D5D5D}
|
||||
|
||||
% Set false if you don't want to highlight section with awesome color
|
||||
\setbool{acvSectionColorHighlight}{true}
|
||||
|
|
@ -54,24 +52,30 @@
|
|||
% Available options: circle|rectangle,edge/noedge,left/right
|
||||
% \photo{./examples/profile.png}
|
||||
\name{Claud D.}{Park}
|
||||
\position{Software Architect{\enskip\cdotp\enskip}Security Expert}
|
||||
\address{42-8, Bangbae-ro 15-gil, Seocho-gu, Seoul, 00681, Rep. of KOREA}
|
||||
\position{DevOps Engineer{\enskip\cdotp\enskip}Software Architect}
|
||||
\address{Mapo-gu, Seoul, Republic of Korea}
|
||||
|
||||
\mobile{(+82) 10-9030-1843}
|
||||
%\whatsapp{(+82) 10-9030-1843}
|
||||
\email{posquit0.bj@gmail.com}
|
||||
%\dateofbirth{January 1st, 1970}
|
||||
\homepage{www.posquit0.com}
|
||||
\github{posquit0}
|
||||
\linkedin{posquit0}
|
||||
% \gitlab{gitlab-id}
|
||||
% \stackoverflow{SO-id}{SO-name}
|
||||
% \twitter{@twit}
|
||||
% \x{x-id}
|
||||
% \skype{skype-id}
|
||||
% \reddit{reddit-id}
|
||||
% \medium{madium-id}
|
||||
% \medium{medium-id}
|
||||
% \kaggle{kaggle-id}
|
||||
% \hackerrank{hackerrank-id}
|
||||
% \telegram{telegram-username}
|
||||
% \googlescholar{googlescholar-id}{name-to-display}
|
||||
%% \firstname and \lastname will be used
|
||||
% \googlescholar{googlescholar-id}{}
|
||||
% \extrainfo{extra informations}
|
||||
% \extrainfo{extra information}
|
||||
|
||||
\quote{``Be the change that you want to see in the world."}
|
||||
|
||||
|
|
@ -79,7 +83,7 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
\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)
|
||||
\makecvheader
|
||||
|
||||
|
|
@ -100,6 +104,7 @@
|
|||
\input{cv/experience.tex}
|
||||
\input{cv/extracurricular.tex}
|
||||
\input{cv/honors.tex}
|
||||
\input{cv/certificates.tex}
|
||||
\input{cv/presentation.tex}
|
||||
\input{cv/writing.tex}
|
||||
\input{cv/committees.tex}
|
||||
|
|
|
|||
111
examples/cv/certificates.tex
Normal file
111
examples/cv/certificates.tex
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% 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: Terraform Authoring and Operations Professional} % Name
|
||||
{HashiCorp} % Issuer
|
||||
{} % Credential ID
|
||||
{2024} % 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)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{HashiCorp Certified: Consul Associate (003)} % Name
|
||||
{HashiCorp} % Issuer
|
||||
{} % Credential ID
|
||||
{2024} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{HashiCorp Certified: Consul Associate (002)} % Name
|
||||
{HashiCorp} % Issuer
|
||||
{} % Credential ID
|
||||
{2023} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{HashiCorp Certified: Vault Associate (003)} % Name
|
||||
{HashiCorp} % Issuer
|
||||
{} % Credential ID
|
||||
{2025} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\end{cvhonors}
|
||||
|
|
@ -9,12 +9,59 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
\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
|
||||
{Software Architect} % Job title
|
||||
{Omnious. Co., Ltd.} % Organization
|
||||
{Seoul, S.Korea} % Location
|
||||
{Jun. 2017 - May. 2018} % Date(s)
|
||||
{Jun. 2017 - May 2018} % Date(s)
|
||||
{
|
||||
\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.}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% SUBSECTION TITLE
|
||||
%-------------------------------------------------------------------------------
|
||||
\cvsubsection{International}
|
||||
\cvsubsection{International Awards}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
@ -15,6 +15,20 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
\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
|
||||
{Finalist} % Award
|
||||
|
|
@ -64,7 +78,7 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% SUBSECTION TITLE
|
||||
%-------------------------------------------------------------------------------
|
||||
\cvsubsection{Domestic}
|
||||
\cvsubsection{Domestic Awards}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
@ -72,6 +86,13 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
\begin{cvhonors}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{2nd Place} % Award
|
||||
{AWS Korea GameDay} % Event
|
||||
{Seoul, S.Korea} % Location
|
||||
{2021} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{3rd Place} % Award
|
||||
|
|
@ -130,3 +151,31 @@
|
|||
|
||||
%---------------------------------------------------------
|
||||
\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.
|
|
@ -18,20 +18,17 @@
|
|||
% CONFIGURATIONS
|
||||
%-------------------------------------------------------------------------------
|
||||
% A4 paper size by default, use 'letterpaper' for US letter
|
||||
\documentclass[11pt, letterpaper]{awesome-cv}
|
||||
\documentclass[11pt, a4paper]{awesome-cv}
|
||||
|
||||
% Configure page margins with geometry
|
||||
\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
|
||||
% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange
|
||||
% awesome-nephritis, awesome-concrete, awesome-darknight
|
||||
\colorlet{awesome}{awesome-skyblue}
|
||||
\colorlet{awesome}{awesome-red}
|
||||
% Uncomment if you would like to specify your own color
|
||||
% \definecolor{awesome}{HTML}{CA63A8}
|
||||
% \definecolor{awesome}{HTML}{3E6D9C}
|
||||
|
||||
% Colors for text
|
||||
% Uncomment if you would like to specify your own color
|
||||
|
|
@ -39,6 +36,7 @@
|
|||
% \definecolor{text}{HTML}{333333}
|
||||
% \definecolor{graytext}{HTML}{5D5D5D}
|
||||
% \definecolor{lighttext}{HTML}{999999}
|
||||
% \definecolor{sectiondivider}{HTML}{5D5D5D}
|
||||
|
||||
% Set false if you don't want to highlight section with awesome color
|
||||
\setbool{acvSectionColorHighlight}{true}
|
||||
|
|
@ -46,11 +44,6 @@
|
|||
% If you would like to change the social information separator from a pipe (|) to something else
|
||||
\renewcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
|
||||
|
||||
\frenchspacing
|
||||
|
||||
\newcommand{\CC}{C\nolinebreak\hspace{-.05em}\raisebox{.4ex}{\tiny\bf +}\nolinebreak\hspace{-.10em}\raisebox{.4ex}{\tiny\bf +}}
|
||||
\newcommand{\CS}{C\nolinebreak\hspace{-.05em}\raisebox{.6ex}{\scriptsize\bf \#}}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% PERSONAL INFORMATION
|
||||
|
|
@ -58,33 +51,39 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% Available options: circle|rectangle,edge/noedge,left/right
|
||||
% \photo[rectangle,edge,right]{./examples/profile}
|
||||
\name{Lawrence P.}{Gouger}
|
||||
\position{Lead Software Engineer}
|
||||
\address{566 Irish Hill Rd., Shelburne, VT, 05482, USA}
|
||||
\name{Byungjin}{Park}
|
||||
\position{DevOps Engineer{\enskip\cdotp\enskip}Software Architect}
|
||||
\address{Mapo-gu, Seoul, Republic of Korea}
|
||||
|
||||
\mobile{+1 (310) 989-5684}
|
||||
\email{larry.gouger@gmail.com}
|
||||
\homepage{www.bunimo.com}
|
||||
\github{lgouger}
|
||||
\linkedin{lgouger}
|
||||
\mobile{(+82) 10-9030-1843}
|
||||
%\whatsapp{(+82) 10-9030-1843}
|
||||
\email{posquit0.bj@gmail.com}
|
||||
%\dateofbirth{January 1st, 1970}
|
||||
\homepage{www.posquit0.com}
|
||||
\github{posquit0}
|
||||
\linkedin{posquit0}
|
||||
% \gitlab{gitlab-id}
|
||||
% \stackoverflow{SO-id}{SO-name}
|
||||
\twitter{@lgouger}
|
||||
% \twitter{@twit}
|
||||
% \x{x-id}
|
||||
% \skype{skype-id}
|
||||
% \reddit{reddit-id}
|
||||
% \medium{madium-id}
|
||||
% \kaggle{kaggle-id}
|
||||
% \hackerrank{hackerrank-id}
|
||||
% \telegram{telegram-username}
|
||||
% \googlescholar{googlescholar-id}{name-to-display}
|
||||
%% \firstname and \lastname will be used
|
||||
% \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."}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
\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)
|
||||
\makecvheader[C]
|
||||
|
||||
|
|
@ -92,7 +91,7 @@
|
|||
% Leave any of these blank if they are not needed
|
||||
\makecvfooter
|
||||
{\today}
|
||||
{Lawrence P. Gouger~~~·~~~Résumé}
|
||||
{Byungjin Park~~~·~~~Résumé}
|
||||
{\thepage}
|
||||
|
||||
|
||||
|
|
@ -101,14 +100,14 @@
|
|||
% Each section is imported separately, open each file in turn to modify content
|
||||
%-------------------------------------------------------------------------------
|
||||
\input{resume/summary.tex}
|
||||
\input{resume/skills.tex}
|
||||
\input{resume/experience.tex}
|
||||
\input{resume/honors.tex}
|
||||
\input{resume/certificates.tex}
|
||||
% \input{resume/presentation.tex}
|
||||
% \input{resume/writing.tex}
|
||||
% \input{resume/committees.tex}
|
||||
\input{resume/education.tex}
|
||||
%% \input{resume/honors.tex}
|
||||
%% \input{resume/presentation.tex}
|
||||
%% \input{resume/writing.tex}
|
||||
%% \input{resume/committees.tex}
|
||||
%% \input{resume/extracurricular.tex}
|
||||
% \input{resume/extracurricular.tex}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
|
|||
76
examples/resume/certificates.tex
Normal file
76
examples/resume/certificates.tex
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% 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: Terraform Authoring and Operations Professional} % Name
|
||||
{HashiCorp} % Issuer
|
||||
{} % Credential ID
|
||||
{2024} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{HashiCorp Certified: Terraform Associate (003)} % Name
|
||||
{HashiCorp} % Issuer
|
||||
{} % Credential ID
|
||||
{2023} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{HashiCorp Certified: Consul Associate (003)} % Name
|
||||
{HashiCorp} % Issuer
|
||||
{} % Credential ID
|
||||
{2024} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{HashiCorp Certified: Vault Associate (003)} % Name
|
||||
{HashiCorp} % Issuer
|
||||
{} % Credential ID
|
||||
{2025} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\end{cvhonors}
|
||||
|
|
@ -1,261 +1,129 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% SECTION TITLE
|
||||
%-------------------------------------------------------------------------------
|
||||
\cvsection{Current Work Experience - Cox Automotive, Inc.}
|
||||
\cvsection{Work Experience}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% CONTENT
|
||||
%-------------------------------------------------------------------------------
|
||||
|
||||
\begin{cvparagraph}
|
||||
I was hired by Cox Automotive, then called Dealer.com, as an
|
||||
Engineering Manager, one of two in their Manhattan Beach, CA office.
|
||||
I managed engineers who were part of 2 scrum teams, a total of 7
|
||||
individuals.
|
||||
\end{cvparagraph}
|
||||
|
||||
\vspace{-1.00mm}
|
||||
|
||||
\begin{cvparagraph}
|
||||
Prior to becoming an Engineering Manager in my career, I had been a
|
||||
senior software engineer, and as an Engineering Manager, I kept my
|
||||
hands in the code, usually by intercepting one-off requests that
|
||||
risked derailing my team's planned efforts.\@ In late 2016, Cox
|
||||
Automotive decided to end it's engineering presence in the Manhattan
|
||||
Beach office.\@ After helping to wind down the engineering effort in
|
||||
the office, I transitioned to an individual contributor role as a
|
||||
Senior Developer.\@ In 2017 the entire Manhattan Beach office was
|
||||
closed, and I began working remotely as a member of a Scrum team based
|
||||
in Burlington, VT.\@ Being a California based developer working with a
|
||||
team based in Burlington VT was difficult.\@ After working remotely for
|
||||
a year I decided to relocate to Burlington, VT and work with my team
|
||||
in person.\@ Moving to Burlington had two benefits, the direct, in
|
||||
person interaction was more fun and it led to more advancement
|
||||
opportunities.
|
||||
\end{cvparagraph}
|
||||
|
||||
|
||||
\begin{cventries}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cventry
|
||||
{Senior Software Engineer{\enskip\cdotp\enskip}Scrum Tech Lead} % Job title
|
||||
{Dealer.com --- Platform Engineering} % Organization
|
||||
{Burlington, VT} % Location
|
||||
{July 2020 --- Present} % Date(s)
|
||||
{}
|
||||
\end{cventries}
|
||||
|
||||
\vspace{-4.00mm}
|
||||
\begin{cvparagraph}
|
||||
Joined new Scrum team to pursue Scrum Team Tech Lead role. Dealer.com's Platform Engineering team is responsible for several backend systems supporting Dealer.com's Websites, Advertising and Inventory systems.
|
||||
\end{cvparagraph}
|
||||
|
||||
\vspace{-2.00mm}
|
||||
\begin{cventries}
|
||||
\cventry
|
||||
{New Skills} % Job title
|
||||
{} % Organization
|
||||
{} % Location
|
||||
{} % Date(s)
|
||||
{
|
||||
{DevOps Engineer} % Job title
|
||||
{Dunamu Inc.} % Organization
|
||||
{Seoul, S.Korea} % Location
|
||||
{Sep. 2023 - Mar. 2024} % Date(s)
|
||||
{
|
||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||
\item {\textbf{AWS:} ECS/Fargate, EKS}
|
||||
\item {\textbf{Containers:} Docker, Kubernetes}
|
||||
\item {\textbf{Infrastructure as Code (IaC):} Terragrunt \& Terraform}
|
||||
\item {Led service mesh technology research and implementation across enterprise cross-cluster environments, evaluating Istio, Cilium, Kuma, Consul, and AWS VPC Lattice for enhanced security and scalability.}
|
||||
\item {Designed Terraform modules to efficiently manage and scale infrastructure across dozens of AWS accounts, enabling standardized, repeatable deployments.}
|
||||
\end{cvitems}
|
||||
}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cventry
|
||||
{Senior Software Engineer} % Job title
|
||||
{Dealer.com --- Agency Advertising} % Organization
|
||||
{Burlington, VT \linebreak Manhattan Beach, CA} % Location
|
||||
{May 2017 --- July 2020} % Date(s)
|
||||
{}
|
||||
\end{cventries}
|
||||
|
||||
\vspace{-4.00mm}
|
||||
\begin{cvparagraph}
|
||||
Joined team as an individual contributor following the closing of the
|
||||
Dealer.com office in Manhattan Beach, CA.\@ For the first year I worked
|
||||
remotely from CA for a VT based team.\@ In June 2018, I moved to VT
|
||||
seeking to improve advancement opportunities.
|
||||
\end{cvparagraph}
|
||||
|
||||
\vspace{-1.00mm}
|
||||
|
||||
\begin{cvparagraph}
|
||||
The team's focus was on systems to support digital advertising at Google, Microsoft, Facebook, and Youtube.\@
|
||||
Our systems enabled advertising the inventory of our dealership clients as their inventory changed.\@
|
||||
I was responsible for the design, implementation, testing, deployment, and support of these systems.
|
||||
\end{cvparagraph}
|
||||
|
||||
\vspace{-2.00mm}
|
||||
\begin{cventries}
|
||||
|
||||
\cventry
|
||||
{New Skills} % Job title
|
||||
{} % Organization
|
||||
{} % Location
|
||||
{} % Date(s)
|
||||
{
|
||||
{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 {\textbf{AWS:} Lambda, API Gateway, SQS, SNS, RDS, DynamoDB, IAM, SSM, Secrets Manager, EC2, Elastic Beanstalk, Networking (vpc, subnets, security groups)}
|
||||
\item {\textbf{IaC:} Terraform \& Serverless}
|
||||
\item {\textbf{Python:} async programming using libraries: trio \& asks}
|
||||
\item {\textbf{Kotlin}}
|
||||
\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}
|
||||
}
|
||||
|
||||
\pagebreak
|
||||
%---------------------------------------------------------
|
||||
\cventry
|
||||
{Site Reliability Engineer} % Job title
|
||||
{Danggeun Market Inc.} % Organization
|
||||
{Seoul, S.Korea} % Location
|
||||
{Feb. 2021 - Mar. 2021} % Date(s)
|
||||
{
|
||||
}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cventry
|
||||
{Engineering Manager} % Job title
|
||||
{Dealer.com --- Social Applications Development} % Organization
|
||||
{Manhattan Beach, CA} % Location
|
||||
{Jan. 2013 --- May 2017} % Date(s)
|
||||
{}
|
||||
\vspace{-4.00mm}
|
||||
|
||||
\cventry
|
||||
{Management Skills} % Job title
|
||||
{} % Organization
|
||||
{} % Location
|
||||
{} % Date(s)
|
||||
{ \vspace{-0.5mm}
|
||||
{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 {Team Building, Sustainable development pace and Work/Life balance}
|
||||
\item {Regular 1-on-1 meetings and Quarterly checkins/reviews}
|
||||
\item {Hiring and Termination}
|
||||
\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
|
||||
{Agile Skills} % Job title
|
||||
{} % Organization
|
||||
{} % Location
|
||||
{} % Date(s)
|
||||
{ \vspace{-0.5mm}
|
||||
{Software Architect} % Job title
|
||||
{Omnious. Co., Ltd.} % Organization
|
||||
{Seoul, S.Korea} % Location
|
||||
{Jun. 2017 - May. 2018} % Date(s)
|
||||
{
|
||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||
\item {Scrum, Kanban}
|
||||
\item {SAFe 3.0 (A Cox variant of SAFe called CAFe)}
|
||||
\item {Provisioned an easily managable hybrid infrastructure(Amazon AWS + On-premise) utilizing IaC(Infrastructure as Code) tools like Ansible, Packer and Terraform.}
|
||||
\item {Built fully automated CI/CD pipelines on CircleCI for containerized applications using Docker, AWS ECR and Rancher.}
|
||||
\item {Designed an overall service architecture and pipelines of the Machine Learning based Fashion Tagging API SaaS product with the micro-services architecture.}
|
||||
\item {Implemented several API microservices in Node.js Koa and in the serverless AWS Lambda functions.}
|
||||
\item {Deployed a centralized logging environment(ELK, Filebeat, CloudWatch, S3) which gather log data from docker containers and AWS resources.}
|
||||
\item {Deployed a centralized monitoring environment(Grafana, InfluxDB, CollectD) which gather system metrics as well as docker run-time metrics.}
|
||||
\end{cvitems}
|
||||
}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cventry
|
||||
{Technical Skills} % Job title
|
||||
{} % Organization
|
||||
{} % Location
|
||||
{} % Date(s)
|
||||
{ \vspace{-0.5mm}
|
||||
{Co-founder \& Software Engineer} % Job title
|
||||
{PLAT Corp.} % Organization
|
||||
{Seoul, S.Korea} % Location
|
||||
{Jan. 2016 - Jun. 2017} % Date(s)
|
||||
{
|
||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||
\item {\textbf{Languages:} Java, Perl, Groovy}
|
||||
\item {\textbf{Spring:} Spring Boot, Spring Data, Spring AMQP, Spring Core Framework}
|
||||
\item {\textbf{Tools:} IntelliJ IDEA, maven, git, Grails}
|
||||
\item {Implemented RESTful API server for car rental booking application(CARPLAT in Google Play).}
|
||||
\item {Built and deployed overall service infrastructure utilizing Docker container, CircleCI, and several AWS stack(Including EC2, ECS, Route 53, S3, CloudFront, RDS, ElastiCache, IAM), focusing on high-availability, fault tolerance, and auto-scaling.}
|
||||
\item {Developed an easy-to-use Payment module which connects to major PG(Payment Gateway) companies in Korea.}
|
||||
\end{cvitems}
|
||||
}
|
||||
|
||||
\end{cventries}
|
||||
|
||||
%---------------------------------------------------------
|
||||
%---------------------------------------------------------
|
||||
|
||||
\cvsection{Previous Experience - ITG, Inc.}
|
||||
|
||||
\cvsubsection{Skills at ITG}
|
||||
|
||||
\begin{cventries}
|
||||
\cventry
|
||||
{Management Skills} % Job title
|
||||
{} % Organization
|
||||
{} % Location
|
||||
{} % Date(s)
|
||||
{\vspace{-0.5mm}
|
||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||
\item {Lead technological transitions (eg. from \CC{} on Solaris to \CS{} on Win32), Launched a remote team in NYC.}
|
||||
\item {Team Building, Team member reviews and one-on-ones, Hiring, Performance Improvement Plans, and Firing}
|
||||
\end{cvitems}
|
||||
{Software Engineer \& Security Researcher (Compulsory Military Service)} % Job title
|
||||
{R.O.K Cyber Command, MND} % Organization
|
||||
{Seoul, S.Korea} % Location
|
||||
{Aug. 2014 - Apr. 2016} % Date(s)
|
||||
{
|
||||
\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.}
|
||||
\end{cvitems}
|
||||
}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cventry
|
||||
{Development Skills} % Job title
|
||||
{} % Organization
|
||||
{} % Location
|
||||
{} % Date(s)
|
||||
{\vspace{-0.5mm}
|
||||
\begin{cvitems}
|
||||
\item {\textbf{Platforms:} Linux, Solaris, unix, JVM, Win32, CLR}
|
||||
\item {\textbf{Agile Skills:} Scrum, Extreme Programming, Pair Programming}
|
||||
\item {\textbf{Development Languages:} Java, C, \CC{} (gcc), \CS{}, Perl}
|
||||
\item {\textbf{Development Tools:} SVN, Clearcase, Eclipse, Visual Studio, Rally}
|
||||
\end{cvitems}
|
||||
{Software Engineer} % Job title
|
||||
{ShitOne Corp.} % Organization
|
||||
{Seoul, S.Korea} % Location
|
||||
{Dec. 2011 - Feb. 2012} % Date(s)
|
||||
{
|
||||
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||
\item {Developed a proxy drive smartphone application which connects proxy driver and customer.}
|
||||
\item {Implemented overall Android application logic and wrote API server for community service, along with lead engineer who designed bidding protocol on raw socket and implemented API server for bidding.}
|
||||
\end{cvitems}
|
||||
}
|
||||
\end{cventries}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvsubsection{Summary of Responsibilities}
|
||||
|
||||
\begin{cventries}
|
||||
|
||||
\cventry
|
||||
{Senior Engineering Manger} % Job title
|
||||
{ITG Platform Tools} % Organization
|
||||
{Culver City, CA} % Location
|
||||
{Oct. 2009 --- July 2011} % Date(s)
|
||||
{I managed a team developing tools to monitor trading within the firm.}
|
||||
|
||||
\cventry
|
||||
{Engineering Manger} % Job title
|
||||
{POSIT Now \& Match NOW} % Organization
|
||||
{Culver City, CA} % Location
|
||||
{Sept. 2004 --- Oct. 2009} % Date(s)
|
||||
{POSIT Now and MATCHNow in Canada were ATSs (Automated Trading Systems)
|
||||
for trading equities.\@ Orders submitted to these systems were
|
||||
anonymous to minimize potential market impact, and trades executed by
|
||||
the systems were at the midpoint of the national best bid and offer.}
|
||||
|
||||
\cventry
|
||||
{Engineering Manger \& Senior Software Engineer} % Job title
|
||||
{Algorithmic Trading Systems} % Organization
|
||||
{Culver City, CA} % Location
|
||||
{May 1997 --- Sept. 2004} % Date(s)
|
||||
{I started as the developer of the first Algorithmic Trading System at
|
||||
ITG, a VWAP Server.\@ It used the "Auto-Trading" capability of ITG's
|
||||
QuantEX equity trading system.\@ I went on to lead the development of
|
||||
four generations of very successful Algorithmic Trading systems at
|
||||
ITG.}
|
||||
|
||||
\cventry
|
||||
{Senior Software Engineering} % Job title
|
||||
{QuantEX \& Canadian QuantEX.} % Organization
|
||||
{Culver City, CA} % Location
|
||||
{Oct. 1991 --- May 1997} % Date(s)
|
||||
{ITG's QuantEX was an Equity Trading and Analytics application on a Sun
|
||||
workstation.\@ While a member of the team I had the following roles,
|
||||
Senior Developer, Tech Lead, and Manager.\@ My first engineering
|
||||
management role was as the leader of the Canadian QuantEX development
|
||||
team.}
|
||||
|
||||
\end{cventries}
|
||||
|
||||
%---------------------------------------------------------
|
||||
%---------------------------------------------------------
|
||||
|
||||
\cvsection{Previous Experience --- TRW, Inc.}
|
||||
|
||||
\begin{cventries}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cventry
|
||||
{Senior Member of Technical Staff} % Job title
|
||||
{TRW Inc.} % Organization
|
||||
{Redondo Beach, CA} % Location
|
||||
{June 1985 --- Oct. 1991} % Date(s)
|
||||
{Senior Developer, C, SunOS/Solaris, worked on applications that exploited a TRW search technology called the Fast Data Finder.}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\end{cventries}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% SUBSECTION TITLE
|
||||
%-------------------------------------------------------------------------------
|
||||
\cvsubsection{International}
|
||||
\cvsubsection{International Awards}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
@ -15,6 +15,20 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
\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
|
||||
{Finalist} % Award
|
||||
|
|
@ -57,7 +71,7 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
% SUBSECTION TITLE
|
||||
%-------------------------------------------------------------------------------
|
||||
\cvsubsection{Domestic}
|
||||
\cvsubsection{Domestic Awards}
|
||||
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
@ -65,6 +79,13 @@
|
|||
%-------------------------------------------------------------------------------
|
||||
\begin{cvhonors}
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{2nd Place} % Award
|
||||
{AWS Korea GameDay} % Event
|
||||
{Seoul, S.Korea} % Location
|
||||
{2021} % Date(s)
|
||||
|
||||
%---------------------------------------------------------
|
||||
\cvhonor
|
||||
{3rd Place} % Award
|
||||
|
|
@ -88,3 +109,38 @@
|
|||
|
||||
%---------------------------------------------------------
|
||||
\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}
|
||||
|
|
|
|||
|
|
@ -8,13 +8,9 @@
|
|||
% CONTENT
|
||||
%-------------------------------------------------------------------------------
|
||||
\begin{cvparagraph}
|
||||
I'm seeking a role as a Lead Software Engineer. My career includes
|
||||
time as a Senior Developer and as an Engineering Manager. I've reached
|
||||
the conclusion that I enjoy the former more. I enjoy having my hands
|
||||
in the architecture, design, coding, testing, deploying, monitoring,
|
||||
and overall ownership of a software system. I understand that there's
|
||||
more to developing reliable, scalable, maintainable, and performant
|
||||
software systems than simply writing the code. I enjoy the team
|
||||
building process and helping mentor all team members as they grow and
|
||||
develop.
|
||||
|
||||
%---------------------------------------------------------
|
||||
Seasoned SRE/DevOps leader currently on a career sabbatical cherishing family moments, seeking high-impact opportunities in fast-growing start-up companies. With 15+ years of hands-on software engineering expertise — specializing in service architecture, DevOps \& SRE practices, infrastructure operations, and security engineering — proven in scaling infrastructure teams as lead engineer and founding member at two fintech companies. Delivered technical advisory and consulting for DeFi, AI, and B2B SaaS startups, optimizing cloud-native architectures (AWS multi-account, Kubernetes, Terraform) for reliability and scalability.
|
||||
|
||||
Passionate to contribute to open-source projects and tech communities through knowledge sharing knowledge and experience. Big fan of terminal-centric workflows on macOS with zsh, Tmux, NeoVim, and chezmoi; relentlessly optimizes personal setups and experiments with Claude Code-powered AI workflows to tackle complex challenges faster.
|
||||
\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…
Add table
Add a link
Reference in a new issue