Compare commits
merge into: warricksothr:master
warricksothr:gh-pages
warricksothr:master
pull from: warricksothr:gh-pages
warricksothr:gh-pages
warricksothr:master
No commits in common. 'master' and 'gh-pages' have entirely different histories.
61 changed files with 299 additions and 2343 deletions
-
145.gitignore
-
71.gitlab-ci.yml
-
223DPSResume.css
-
0DPSResume.outline
-
BINDPSResume.pdf
-
0README
-
11README.md
-
BINResumeSite.tar.gz
-
5base.min.css
-
BINbg1.png
-
7compatibility.min.js
-
44cover_letters/2019-09-CL-Elastic-Senior-Java-Engineer-Security.tex
-
72cover_letters/CL-Mozilla-RE.tex
-
66cover_letters/template.tex
-
356datenumber.sty
-
53datenumberUSenglish.ldf
-
57datenumberenglish.ldf
-
BINf1.woff
-
BINf2.woff
-
BINf3.woff
-
BINf4.woff
-
BINf5.woff
-
BINf6.woff
-
BINf7.woff
-
BINf8.woff
-
5fancy.min.css
-
32helvetica.sty
-
32index.html
-
BINpdf2htmlEX-64x64.png
-
27pdf2htmlEX.min.js
-
137pipeline.yml
-
805res.cls
-
9resume.tex
-
9resume_for_recruiters.tex
-
26scripts/build
-
4scripts/build-and-deploy-resume.sh
-
17scripts/build-html-resume-docker.sh
-
13scripts/build-html-resume.sh
-
18scripts/build-pdf-cover-letter-docker.sh
-
16scripts/build-pdf-cover-letter.sh
-
11scripts/build-pdf-resume-docker.sh
-
11scripts/build-pdf-resume-for-recruiters-docker.sh
-
13scripts/build-pdf-resume-for-recruiters.sh
-
28scripts/build-pdf-resume-with-cover-letter-docker.sh
-
13scripts/build-pdf-resume-with-cover-letter.sh
-
13scripts/build-pdf-resume.sh
-
3scripts/cleanup-latex.sh
-
41scripts/package-and-deploy.sh
-
7tex_parts/resume_address.tex
-
5tex_parts/resume_address_recruiters.tex
-
15tex_parts/resume_body.tex
-
6tex_parts/resume_body/achievements.tex
-
7tex_parts/resume_body/education.tex
-
64tex_parts/resume_body/experience.tex
-
9tex_parts/resume_body/intro.tex
-
4tex_parts/resume_body/references.tex
-
12tex_parts/resume_body/skills.tex
-
86tex_parts/resume_commands.tex
-
15tex_parts/resume_head.tex
-
11tex_parts/resume_preamble.tex
-
8upload_pipeline.sh
@ -1,145 +0,0 @@ |
|||
out/ |
|||
*.tar.gz |
|||
|
|||
*~ |
|||
*.xref |
|||
*.lg |
|||
*.idv |
|||
*.4ct |
|||
*.4tc |
|||
*.tmp |
|||
|
|||
## Core latex/pdflatex auxiliary files: |
|||
*.aux |
|||
*.lof |
|||
*.log |
|||
*.lot |
|||
*.fls |
|||
*.out |
|||
*.toc |
|||
|
|||
## Intermediate documents: |
|||
*.dvi |
|||
*-converted-to.* |
|||
# these rules might exclude image files for figures etc. |
|||
*.ps |
|||
*.eps |
|||
*.pdf |
|||
|
|||
## Bibliography auxiliary files (bibtex/biblatex/biber): |
|||
*.bbl |
|||
*.bcf |
|||
*.blg |
|||
*-blx.aux |
|||
*-blx.bib |
|||
*.brf |
|||
*.run.xml |
|||
|
|||
### Build tool auxiliary files: |
|||
*.fdb_latexmk |
|||
*.synctex |
|||
*.synctex.gz |
|||
*.synctex.gz(busy) |
|||
*.pdfsync |
|||
|
|||
## Auxiliary and intermediate files from other packages: |
|||
## algorithms |
|||
*.alg |
|||
*.loa |
|||
|
|||
## achemso |
|||
acs-*.bib |
|||
|
|||
## amsthm |
|||
*.thm |
|||
|
|||
## beamer |
|||
*.nav |
|||
*.snm |
|||
*.vrb |
|||
|
|||
##(e)ledmac/(e)ledpar |
|||
*.end |
|||
*.[1-9] |
|||
*.[1-9][0-9] |
|||
*.[1-9][0-9][0-9] |
|||
*.[1-9]R |
|||
*.[1-9][0-9]R |
|||
*.[1-9][0-9][0-9]R |
|||
*.eledsec[1-9] |
|||
*.eledsec[1-9]R |
|||
*.eledsec[1-9][0-9] |
|||
*.eledsec[1-9][0-9]R |
|||
*.eledsec[1-9][0-9][0-9] |
|||
*.eledsec[1-9][0-9][0-9]R |
|||
|
|||
## glossaries |
|||
*.acn |
|||
*.acr |
|||
*.glg |
|||
*.glo |
|||
*.gls |
|||
|
|||
## gnuplottex |
|||
*-gnuplottex-* |
|||
|
|||
## hyperref |
|||
*.brf |
|||
|
|||
## knitr |
|||
*-concordance.tex |
|||
*.tikz |
|||
*-tikzDictionary |
|||
|
|||
## listings |
|||
*.lol |
|||
|
|||
## makeidx |
|||
*.idx |
|||
*.ilg |
|||
*.ind |
|||
*.ist |
|||
|
|||
## minitoc |
|||
*.maf |
|||
*.mtc |
|||
*.mtc[0-9] |
|||
*.mtc[1-9][0-9] |
|||
|
|||
## minted |
|||
_minted* |
|||
*.pyg |
|||
|
|||
## morewrites |
|||
*.mw |
|||
|
|||
## mylatexformat |
|||
*.fmt |
|||
|
|||
## nomencl |
|||
*.nlo |
|||
|
|||
## sagetex |
|||
*.sagetex.sage |
|||
*.sagetex.py |
|||
*.sagetex.scmd |
|||
|
|||
## sympy |
|||
*.sout |
|||
*.sympy |
|||
sympy-plots-for-*.tex/ |
|||
|
|||
## TikZ & PGF |
|||
*.dpth |
|||
*.md5 |
|||
*.auxlock |
|||
|
|||
## todonotes |
|||
*.tdo |
|||
|
|||
## xindy |
|||
*.xdy |
|||
|
|||
## WinEdt |
|||
*.bak |
|||
*.sav |
@ -1,71 +0,0 @@ |
|||
stages: |
|||
- build |
|||
- deploy |
|||
|
|||
build-resume: |
|||
stage: build |
|||
script: |
|||
- ./scripts/build-pdf-resume.sh |
|||
- ./scripts/build-pdf-resume-for-recruiters.sh |
|||
- ./scripts/build-html-resume.sh |
|||
only: |
|||
- master |
|||
tags: |
|||
- linux |
|||
artifacts: |
|||
paths: |
|||
- resume.pdf |
|||
- resume_for_recruiters.pdf |
|||
- ResumeSite.tar.gz |
|||
|
|||
deploy-resume-site: |
|||
image: sothr.com/deploy:ubuntu |
|||
stage: deploy |
|||
variables: |
|||
TARGET_DIRECTORY: "/srv/www/sothr.com/resume" |
|||
script: |
|||
- eval `ssh-agent -s` |
|||
- ssh-add <(echo "$SSH_DEPLOY_KEY") |
|||
- mkdir -p ~/.ssh |
|||
- ssh-keyscan -p $DEPLOY_PORT sothr.com >> ~/.ssh/known_hosts |
|||
- mkdir /tmp/deploy |
|||
- tar -xvf ResumeSite.tar.gz -C /tmp/deploy |
|||
- cp resume.pdf /tmp/deploy |
|||
- cp resume_for_recruiters.pdf /tmp/deploy |
|||
- rsync -avz --delete-delay -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p $DEPLOY_PORT" --progress /tmp/deploy/* $DEPLOY_USER@$DEPLOY_HOST:$TARGET_DIRECTORY |
|||
only: |
|||
- master |
|||
tags: |
|||
- docker |
|||
environment: production |
|||
|
|||
deploy-resume-github: |
|||
image: sothr.com/deploy:ubuntu |
|||
stage: deploy |
|||
variables: |
|||
GIT_REPO: git@github.com:warricksothr/resume.git |
|||
script: |
|||
- eval `ssh-agent -s` |
|||
- ssh-add <(echo "$SSH_DEPLOY_KEY") |
|||
- mkdir -p ~/.ssh |
|||
- ssh-keyscan github.com >> ~/.ssh/known_hosts |
|||
- git clone $GIT_REPO /tmp/deploy |
|||
- pushd /tmp/deploy |
|||
- git checkout -b gh-pages origin/gh-pages |
|||
- git config --global user.email "warrick@sothr.com" |
|||
- git config --global user.name "Drew Short" |
|||
- rm -rf * |
|||
- popd |
|||
- tar -xvf ResumeSite.tar.gz -C /tmp/deploy |
|||
- cp resume.pdf /tmp/deploy |
|||
- cp resume_for_recruiters.pdf /tmp/deploy |
|||
- pushd /tmp/deploy |
|||
- git add . |
|||
- git commit -am"$CI_COMMIT_MESSAGE" |
|||
- git push |
|||
- popd |
|||
only: |
|||
- master |
|||
tags: |
|||
- docker |
|||
environment: production |
@ -0,0 +1,223 @@ |
|||
.ff0{font-family:sans-serif;visibility:hidden;} |
|||
@font-face{font-family:ff1;src:url(f1.woff)format("woff");}.ff1{font-family:ff1;line-height:0.943000;font-style:normal;font-weight:normal;visibility:visible;} |
|||
@font-face{font-family:ff2;src:url(f2.woff)format("woff");}.ff2{font-family:ff2;line-height:0.947000;font-style:normal;font-weight:normal;visibility:visible;} |
|||
@font-face{font-family:ff3;src:url(f3.woff)format("woff");}.ff3{font-family:ff3;line-height:0.864000;font-style:normal;font-weight:normal;visibility:visible;} |
|||
@font-face{font-family:ff4;src:url(f4.woff)format("woff");}.ff4{font-family:ff4;line-height:0.854000;font-style:normal;font-weight:normal;visibility:visible;} |
|||
@font-face{font-family:ff5;src:url(f5.woff)format("woff");}.ff5{font-family:ff5;line-height:0.388000;font-style:normal;font-weight:normal;visibility:visible;} |
|||
@font-face{font-family:ff6;src:url(f6.woff)format("woff");}.ff6{font-family:ff6;line-height:0.939000;font-style:normal;font-weight:normal;visibility:visible;} |
|||
@font-face{font-family:ff7;src:url(f7.woff)format("woff");}.ff7{font-family:ff7;line-height:0.752000;font-style:normal;font-weight:normal;visibility:visible;} |
|||
@font-face{font-family:ff8;src:url(f8.woff)format("woff");}.ff8{font-family:ff8;line-height:0.939000;font-style:normal;font-weight:normal;visibility:visible;} |
|||
.m0{transform:matrix(0.375000,0.000000,0.000000,0.375000,0,0);-ms-transform:matrix(0.375000,0.000000,0.000000,0.375000,0,0);-webkit-transform:matrix(0.375000,0.000000,0.000000,0.375000,0,0);} |
|||
.m1{transform:matrix(1.500000,0.000000,0.000000,1.500000,0,0);-ms-transform:matrix(1.500000,0.000000,0.000000,1.500000,0,0);-webkit-transform:matrix(1.500000,0.000000,0.000000,1.500000,0,0);} |
|||
.v0{vertical-align:0.000000px;} |
|||
.ls0{letter-spacing:0.000000px;} |
|||
.sc_{text-shadow:none;} |
|||
.sc0{text-shadow:-0.015em 0 transparent,0 0.015em transparent,0.015em 0 transparent,0 -0.015em transparent;} |
|||
@media screen and (-webkit-min-device-pixel-ratio:0){ |
|||
.sc_{-webkit-text-stroke:0px transparent;} |
|||
.sc0{-webkit-text-stroke:0.015em transparent;text-shadow:none;} |
|||
} |
|||
.ws0{word-spacing:0.000000px;} |
|||
._1{margin-left:-7.173120px;} |
|||
._3{margin-left:-4.662497px;} |
|||
._a{margin-left:-3.227882px;} |
|||
._2{margin-left:-2.191772px;} |
|||
._9{margin-left:-1.099842px;} |
|||
._f{width:7.452025px;} |
|||
._7{width:9.444545px;} |
|||
._8{width:10.480655px;} |
|||
._6{width:11.636317px;} |
|||
._0{width:13.724570px;} |
|||
._4{width:15.065254px;} |
|||
._e{width:17.334924px;} |
|||
._12{width:18.530436px;} |
|||
._5{width:19.922800px;} |
|||
._b{width:80.019603px;} |
|||
._15{width:105.852154px;} |
|||
._16{width:420.180750px;} |
|||
._10{width:446.979010px;} |
|||
._13{width:480.329310px;} |
|||
._c{width:521.704714px;} |
|||
._19{width:592.416046px;} |
|||
._1a{width:631.902834px;} |
|||
._17{width:737.830156px;} |
|||
._11{width:745.800236px;} |
|||
._14{width:753.889867px;} |
|||
._d{width:819.643027px;} |
|||
._18{width:1135.497298px;} |
|||
.fc1{color:rgb(0,0,255);} |
|||
.fc0{color:rgb(0,0,0);} |
|||
.fs0{font-size:39.850400px;} |
|||
.fs1{font-size:47.820800px;} |
|||
.y31{bottom:45.235500px;} |
|||
.y30{bottom:110.899500px;} |
|||
.y2f{bottom:148.135500px;} |
|||
.y2d{bottom:153.366000px;} |
|||
.y2e{bottom:168.309000px;} |
|||
.y2c{bottom:171.298500px;} |
|||
.y2b{bottom:208.533000px;} |
|||
.y2a{bottom:226.465500px;} |
|||
.y29{bottom:263.701500px;} |
|||
.y28{bottom:283.876500px;} |
|||
.y27{bottom:304.050000px;} |
|||
.y0{bottom:319.500000px;} |
|||
.y26{bottom:325.420500px;} |
|||
.y25{bottom:342.904500px;} |
|||
.y24{bottom:374.287500px;} |
|||
.y23{bottom:392.220000px;} |
|||
.y22{bottom:412.393500px;} |
|||
.y21{bottom:430.326000px;} |
|||
.y20{bottom:450.501000px;} |
|||
.y1f{bottom:468.433500px;} |
|||
.y1e{bottom:488.608500px;} |
|||
.y1d{bottom:506.541000px;} |
|||
.y1c{bottom:527.911500px;} |
|||
.y1b{bottom:545.395500px;} |
|||
.y1a{bottom:576.777000px;} |
|||
.y19{bottom:594.709500px;} |
|||
.y18{bottom:614.884500px;} |
|||
.y17{bottom:632.817000px;} |
|||
.y16{bottom:652.992000px;} |
|||
.y15{bottom:670.924500px;} |
|||
.y14{bottom:692.295000px;} |
|||
.y13{bottom:709.779000px;} |
|||
.y12{bottom:747.013500px;} |
|||
.y11{bottom:764.947500px;} |
|||
.y10{bottom:782.880000px;} |
|||
.yf{bottom:800.812500px;} |
|||
.ye{bottom:838.047000px;} |
|||
.yd{bottom:855.981000px;} |
|||
.yc{bottom:876.154500px;} |
|||
.yb{bottom:894.087000px;} |
|||
.ya{bottom:914.262000px;} |
|||
.y9{bottom:932.194500px;} |
|||
.y8{bottom:950.127000px;} |
|||
.y7{bottom:953.116500px;} |
|||
.y6{bottom:971.049000px;} |
|||
.y5{bottom:1008.283500px;} |
|||
.y4{bottom:1026.217500px;} |
|||
.y3{bottom:1047.123000px;} |
|||
.y1{bottom:1055.940000px;} |
|||
.y2{bottom:1056.015000px;} |
|||
.h2{height:29.369745px;} |
|||
.h4{height:29.529146px;} |
|||
.h3{height:35.243930px;} |
|||
.h1{height:724.500000px;} |
|||
.h0{height:1188.000000px;} |
|||
.w1{width:729.000000px;} |
|||
.w0{width:918.000000px;} |
|||
.x0{left:93.000000px;} |
|||
.x8{left:233.457000px;} |
|||
.x9{left:255.873000px;} |
|||
.xa{left:270.816000px;} |
|||
.x6{left:309.333000px;} |
|||
.x7{left:313.486500px;} |
|||
.xb{left:625.486500px;} |
|||
.x1{left:760.621500px;} |
|||
.x3{left:772.801500px;} |
|||
.x2{left:774.601500px;} |
|||
.x5{left:813.478500px;} |
|||
.x4{left:815.278500px;} |
|||
@media print{ |
|||
.v0{vertical-align:0.000000pt;} |
|||
.ls0{letter-spacing:0.000000pt;} |
|||
.ws0{word-spacing:0.000000pt;} |
|||
._1{margin-left:-6.376107pt;} |
|||
._3{margin-left:-4.144442pt;} |
|||
._a{margin-left:-2.869229pt;} |
|||
._2{margin-left:-1.948242pt;} |
|||
._9{margin-left:-0.977637pt;} |
|||
._f{width:6.624022pt;} |
|||
._7{width:8.395151pt;} |
|||
._8{width:9.316138pt;} |
|||
._6{width:10.343393pt;} |
|||
._0{width:12.199617pt;} |
|||
._4{width:13.391337pt;} |
|||
._e{width:15.408821pt;} |
|||
._12{width:16.471499pt;} |
|||
._5{width:17.709156pt;} |
|||
._b{width:71.128536pt;} |
|||
._15{width:94.090804pt;} |
|||
._16{width:373.494000pt;} |
|||
._10{width:397.314675pt;} |
|||
._13{width:426.959386pt;} |
|||
._c{width:463.737524pt;} |
|||
._19{width:526.592041pt;} |
|||
._1a{width:561.691408pt;} |
|||
._17{width:655.849028pt;} |
|||
._11{width:662.933543pt;} |
|||
._14{width:670.124326pt;} |
|||
._d{width:728.571580pt;} |
|||
._18{width:1009.330931pt;} |
|||
.fs0{font-size:35.422578pt;} |
|||
.fs1{font-size:42.507378pt;} |
|||
.y31{bottom:40.209333pt;} |
|||
.y30{bottom:98.577333pt;} |
|||
.y2f{bottom:131.676000pt;} |
|||
.y2d{bottom:136.325333pt;} |
|||
.y2e{bottom:149.608000pt;} |
|||
.y2c{bottom:152.265333pt;} |
|||
.y2b{bottom:185.362667pt;} |
|||
.y2a{bottom:201.302667pt;} |
|||
.y29{bottom:234.401333pt;} |
|||
.y28{bottom:252.334667pt;} |
|||
.y27{bottom:270.266667pt;} |
|||
.y0{bottom:284.000000pt;} |
|||
.y26{bottom:289.262667pt;} |
|||
.y25{bottom:304.804000pt;} |
|||
.y24{bottom:332.700000pt;} |
|||
.y23{bottom:348.640000pt;} |
|||
.y22{bottom:366.572000pt;} |
|||
.y21{bottom:382.512000pt;} |
|||
.y20{bottom:400.445333pt;} |
|||
.y1f{bottom:416.385333pt;} |
|||
.y1e{bottom:434.318667pt;} |
|||
.y1d{bottom:450.258667pt;} |
|||
.y1c{bottom:469.254667pt;} |
|||
.y1b{bottom:484.796000pt;} |
|||
.y1a{bottom:512.690667pt;} |
|||
.y19{bottom:528.630667pt;} |
|||
.y18{bottom:546.564000pt;} |
|||
.y17{bottom:562.504000pt;} |
|||
.y16{bottom:580.437333pt;} |
|||
.y15{bottom:596.377333pt;} |
|||
.y14{bottom:615.373333pt;} |
|||
.y13{bottom:630.914667pt;} |
|||
.y12{bottom:664.012000pt;} |
|||
.y11{bottom:679.953333pt;} |
|||
.y10{bottom:695.893333pt;} |
|||
.yf{bottom:711.833333pt;} |
|||
.ye{bottom:744.930667pt;} |
|||
.yd{bottom:760.872000pt;} |
|||
.yc{bottom:778.804000pt;} |
|||
.yb{bottom:794.744000pt;} |
|||
.ya{bottom:812.677333pt;} |
|||
.y9{bottom:828.617333pt;} |
|||
.y8{bottom:844.557333pt;} |
|||
.y7{bottom:847.214667pt;} |
|||
.y6{bottom:863.154667pt;} |
|||
.y5{bottom:896.252000pt;} |
|||
.y4{bottom:912.193333pt;} |
|||
.y3{bottom:930.776000pt;} |
|||
.y1{bottom:938.613333pt;} |
|||
.y2{bottom:938.680000pt;} |
|||
.h2{height:26.106440pt;} |
|||
.h4{height:26.248130pt;} |
|||
.h3{height:31.327937pt;} |
|||
.h1{height:644.000000pt;} |
|||
.h0{height:1056.000000pt;} |
|||
.w1{width:648.000000pt;} |
|||
.w0{width:816.000000pt;} |
|||
.x0{left:82.666667pt;} |
|||
.x8{left:207.517333pt;} |
|||
.x9{left:227.442667pt;} |
|||
.xa{left:240.725333pt;} |
|||
.x6{left:274.962667pt;} |
|||
.x7{left:278.654667pt;} |
|||
.xb{left:555.988000pt;} |
|||
.x1{left:676.108000pt;} |
|||
.x3{left:686.934667pt;} |
|||
.x2{left:688.534667pt;} |
|||
.x5{left:723.092000pt;} |
|||
.x4{left:724.692000pt;} |
|||
} |
@ -1,11 +0,0 @@ |
|||
# Drew's Resume |
|||
[![Concourse](https://concourse.nulloctet.com/api/v1/teams/sothr/pipelines/resume/jobs/publish/badge)](https://concourse.nulloctet.com/teams/sothr/pipelines/resume) |
|||
|
|||
# Github Links |
|||
## [View Resume](https://warricksothr.github.io/resume) |
|||
## [Download Resume](https://warricksothr.github.io/resume/resume.pdf) |
|||
|
|||
# Personal Site |
|||
## [Site](https://sothr.com) |
|||
## [View Resume](https://sothr.com/resume/) |
|||
## [Download Resume](https://sothr.com/resume/resume.pdf) |
@ -0,0 +1,5 @@ |
|||
/*! |
|||
* Base CSS for pdf2htmlEX |
|||
* Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com> |
|||
* https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE |
|||
*/#sidebar{position:absolute;top:0;left:0;bottom:0;width:250px;padding:0;margin:0;overflow:auto}#page-container{position:absolute;top:0;left:0;margin:0;padding:0;border:0}@media screen{#sidebar.opened+#page-container{left:250px}#page-container{bottom:0;right:0;overflow:auto}.loading-indicator{display:none}.loading-indicator.active{display:block;position:absolute;width:64px;height:64px;top:50%;left:50%;margin-top:-32px;margin-left:-32px}.loading-indicator img{position:absolute;top:0;left:0;bottom:0;right:0}}@media print{@page{margin:0}html{margin:0}body{margin:0;-webkit-print-color-adjust:exact}#sidebar{display:none}#page-container{width:auto;height:auto;overflow:visible;background-color:transparent}.d{display:none}}.pf{position:relative;background-color:white;overflow:hidden;margin:0;border:0}.pc{position:absolute;border:0;padding:0;margin:0;top:0;left:0;width:100%;height:100%;overflow:hidden;display:block;transform-origin:0 0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0}.pc.opened{display:block}.bf{position:absolute;border:0;margin:0;top:0;bottom:0;width:100%;height:100%;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.bi{position:absolute;border:0;margin:0;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}@media print{.pf{margin:0;box-shadow:none;page-break-after:always;page-break-inside:avoid}@-moz-document url-prefix(){.pf{overflow:visible;border:1px solid #fff}.pc{overflow:visible}}}.c{position:absolute;border:0;padding:0;margin:0;overflow:hidden;display:block}.t{position:absolute;white-space:pre;font-size:1px;transform-origin:0 100%;-ms-transform-origin:0 100%;-webkit-transform-origin:0 100%;unicode-bidi:bidi-override;-moz-font-feature-settings:"liga" 0}.t:after{content:''}.t:before{content:'';display:inline-block}.t span{position:relative;unicode-bidi:bidi-override}._{display:inline-block;color:transparent;z-index:-1}::selection{background:rgba(127,255,255,0.4)}::-moz-selection{background:rgba(127,255,255,0.4)}.pi{display:none}.d{position:absolute;transform-origin:0 100%;-ms-transform-origin:0 100%;-webkit-transform-origin:0 100%}.it{border:0;background-color:rgba(255,255,255,0.0)}.ir:hover{cursor:pointer} |
After Width: 972 | Height: 966 | Size: 4.1 KiB |
@ -0,0 +1,7 @@ |
|||
/* |
|||
Copyright 2012 Mozilla Foundation |
|||
Copyright 2013 Lu Wang <coolwanglu@gmail.com> |
|||
Apachine License Version 2.0 |
|||
*/ |
|||
(function(){function b(a,b,e,f){var c=(a.className||"").split(/\s+/g);""===c[0]&&c.shift();var d=c.indexOf(b);0>d&&e&&c.push(b);0<=d&&f&&c.splice(d,1);a.className=c.join(" ");return 0<=d}if(!("classList"in document.createElement("div"))){var e={add:function(a){b(this.element,a,!0,!1)},contains:function(a){return b(this.element,a,!1,!1)},remove:function(a){b(this.element,a,!1,!0)},toggle:function(a){b(this.element,a,!0,!0)}};Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){if(this._classList)return this._classList; |
|||
var a=Object.create(e,{element:{value:this,writable:!1,enumerable:!0}});Object.defineProperty(this,"_classList",{value:a,writable:!1,enumerable:!1});return a},enumerable:!0})}})(); |
@ -1,44 +0,0 @@ |
|||
% Cover letter using letter.sty |
|||
\documentclass{letter} % Uses 10pt |
|||
%Use \documentstyle[newcent]{letter} for New Century Schoolbook postscript font |
|||
% the following commands control the margins: |
|||
\topmargin=-1in % Make letterhead start about 1 inch from top of page |
|||
\textheight=8in % text height can be bigger for a longer letter |
|||
\oddsidemargin=0pt % leftmargin is 1 inch |
|||
\textwidth=6.5in % textwidth of 6.5in leaves 1 inch for right margin |
|||
|
|||
\begin{document} |
|||
|
|||
\signature{\vspace{-30pt} Drew Short} % name for signature |
|||
\longindentation=0pt % needed to get closing flush left |
|||
\let\raggedleft\raggedright % needed to get date flush left |
|||
|
|||
\begin{letter}{Elastic \\ |
|||
3300 N Interstate 35, 7th Floor \\ |
|||
Austin, TX 78705} |
|||
|
|||
\begin{flushleft} |
|||
{\large\bf Drew Short} |
|||
\end{flushleft} |
|||
\medskip\hrule height 1pt |
|||
\begin{tabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}r@{}} |
|||
drew@sothr.com & 1430 Taylor Ave W \\ |
|||
(651) 285-4565 & Saint Paul, MN 55104 |
|||
\end{tabular*} |
|||
\vfill % forces letterhead to top of page |
|||
|
|||
\opening{Dear Hiring Manager for the Senior Java Engineer - Security Position:} |
|||
|
|||
\noindent I've been an avid supporter of Elastic products stretching back to my push for the ELK stack as a log aggregation, searching, and data visualization platform within Cargill Risk Management. So, when I found your open Senior Java Engineer position through the LinkedIn job boards I was excited to consider the possibility of directly contributing to the Elasticsearch platform. |
|||
|
|||
\noindent In my 8 years of professional software engineering experience, I've moved through testing, development, mentoring and leadership roles and have spent a significant amount of that time addressing performance and security issues within both large Spring applications and Spring Boot microservices. I recently transitioned to a lead role within a DevOps group as part of a long term initiative to align the operations team with the technical architecture team. As a result of that role change I've also been responsible for the technical analysis, triaging, and assignment of security issues to domain teams. Security is a complicated field and often a series of innocuous choices lead to a vulnerabilities. I believe with my varied experience I can offer unique insights and solutions. |
|||
|
|||
\noindent I look forward to connecting about this opportunity. Please feel free to reach out to me at (651) 285-4565 or drew@sothr.com |
|||
|
|||
\closing{Thank you for your time,} |
|||
|
|||
%\encl{} % Enclosures |
|||
|
|||
\end{letter} |
|||
|
|||
\end{document} |
@ -1,72 +0,0 @@ |
|||
% Cover letter using letter.sty |
|||
\documentclass{letter} % Uses 10pt |
|||
%Use \documentstyle[newcent]{letter} for New Century Schoolbook postscript font |
|||
% the following commands control the margins: |
|||
\topmargin=-1in % Make letterhead start about 1 inch from top of page |
|||
\textheight=8in % text height can be bigger for a longer letter |
|||
\oddsidemargin=0pt % leftmargin is 1 inch |
|||
\textwidth=6.5in % textwidth of 6.5in leaves 1 inch for right margin |
|||
|
|||
\begin{document} |
|||
|
|||
\signature{Drew P. Short} % name for signature |
|||
\longindentation=0pt % needed to get closing flush left |
|||
\let\raggedleft\raggedright % needed to get date flush left |
|||
|
|||
|
|||
|
|||
\begin{letter}{ |
|||
Mozilla Corporation \\ |
|||
331 E. Evelyn Avenue \\ |
|||
Mountain View, CA 94041} |
|||
|
|||
|
|||
\begin{flushleft} |
|||
{\large\bf Drew P. Short} |
|||
\end{flushleft} |
|||
\medskip\hrule height 1pt |
|||
\begin{flushright} |
|||
\hfill 1430 Taylor Ave W, Saint Paul, MN 55104 \\ |
|||
\hfill (651) 285-4565 |
|||
\end{flushright} |
|||
\vfill % forces letterhead to top of page |
|||
|
|||
|
|||
\opening{Dear Hiring Manager for the Research Engineer Position:} |
|||
|
|||
\noindent I found your open Research Engineer position through the |
|||
Mozilla career site and am applying because this role aligns with my |
|||
future goals as a software engineer. As a loyal user of Mozilla |
|||
products I deeply resonate with Mozilla's goal of building a better |
|||
Internet and am excited about the possibility to work for a company |
|||
that has changed the Internet so profoundly. |
|||
|
|||
\noindent For the past 3 years I have been expanding and maintaining |
|||
a large Java Spring web application for Cargill Inc. Risk Management. |
|||
This has made me sensitive to the difficulties in providing a unified |
|||
experience on the web. I would like to use my skills and ambitions |
|||
to make the web a better place for everyone; developers, designers and users |
|||
alike. I have hobbyist experience with Rust and love the work I |
|||
have done in the language so far, I think it has a very bright future |
|||
ahead of it. |
|||
|
|||
\noindent I would love to have an opportunity to share my experience, |
|||
discuss the position, and explore the unique background I can bring |
|||
to the team. |
|||
|
|||
\closing{Thanks for your time,} |
|||
|
|||
|
|||
|
|||
%\encl{} % Enclosures |
|||
|
|||
\end{letter} |
|||
|
|||
|
|||
\end{document} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
@ -1,66 +0,0 @@ |
|||
% Cover letter using letter.sty |
|||
\documentclass{letter} % Uses 10pt |
|||
%Use \documentstyle[newcent]{letter} for New Century Schoolbook postscript font |
|||
% the following commands control the margins: |
|||
\topmargin=-1in % Make letterhead start about 1 inch from top of page |
|||
\textheight=8in % text height can be bigger for a longer letter |
|||
\oddsidemargin=0pt % leftmargin is 1 inch |
|||
\textwidth=6.5in % textwidth of 6.5in leaves 1 inch for right margin |
|||
|
|||
\begin{document} |
|||
|
|||
\signature{\vspace{-30pt} Drew Short} % name for signature |
|||
\longindentation=0pt % needed to get closing flush left |
|||
\let\raggedleft\raggedright % needed to get date flush left |
|||
|
|||
\begin{letter}{Ms. Terri Roberts \\ |
|||
Senior Staff Recruiter \\ |
|||
XYZ Corporation \\ |
|||
Rt. 56 \\ |
|||
Anytown, New Jersey 05867} |
|||
|
|||
\begin{flushleft} |
|||
{\large\bf Susan R. Bumpershoot} |
|||
\end{flushleft} |
|||
\medskip\hrule height 1pt |
|||
\begin{tabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}r@{}} |
|||
drew@sothr.com & 1430 Taylor Ave W \\ |
|||
(651) 285-4565 & Saint Paul, MN 55104 |
|||
\end{tabular*} |
|||
\vfill % forces letterhead to top of page |
|||
|
|||
\opening{Dear Ms. Roberts:} |
|||
|
|||
\noindent PARAGRAPH ONE: State reason for letter, name the position or type |
|||
of work you are applying for and identify source from which you |
|||
learned of the opening. (i.e. Career Development Center, |
|||
newspaper, employment service, personal contact). |
|||
|
|||
\noindent PARAGRAPH TWO: Indicate why you are interested in the position, |
|||
the company, its products, services - above all, stress what you |
|||
can do for the employer. If you are a recent graduate, explain |
|||
how your academic background makes you a qualified candidate for |
|||
the position. If you have practical work experience, point out |
|||
specific achievements or unique qualifications. Try not to repeat |
|||
the same information the reader will find in the resume. Refer |
|||
the reader to the enclosed resume or application which summarizes |
|||
your qualifications, training, and experiences. The purpose of |
|||
this section is to strengthen your resume by providing details |
|||
which bring your experiences to life. |
|||
|
|||
\noindent PARAGRAPH THREE: Request a personal interview and indicate your |
|||
flexibility as to the time and place. Repeat your phone number in |
|||
the letter and offer assistance to help in a speedy response. For |
|||
example, state that you will be in the city where the company is |
|||
located on a certain date and would like to set up an interview. |
|||
Or, state that you will call on a certain date to set up an |
|||
interview. End the letter by thanking the employer for taking |
|||
time to consider your credentials. |
|||
|
|||
\closing{Sincerely yours,} |
|||
|
|||
\encl{} % Enclosures |
|||
|
|||
\end{letter} |
|||
|
|||
\end{document} |
@ -1,356 +0,0 @@ |
|||
%% |
|||
%% This is file `datenumber.sty', |
|||
%% generated with the docstrip utility. |
|||
%% |
|||
%% The original source files were: |
|||
%% |
|||
%% datenumber.dtx (with options: `datenumber') |
|||
%% |
|||
%% This file is part of the `datenumber' package, |
|||
%% |
|||
%% Copyright (C) 2001 J"org-Michael Schr"oder. |
|||
%% |
|||
%% IMPORTANT NOTICE: |
|||
%% |
|||
%% This program may be distributed and/or modified under the |
|||
%% conditions of the LaTeX Project Public License, either version 1.2 |
|||
%% 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.2 or later is part of all distributions of LaTeX |
|||
%% version 1999/12/01 or later. |
|||
%% |
|||
%% This program consists of all files listed in README.txt. |
|||
%% |
|||
%% For error reports, or offers to help make this a more powerful |
|||
%% tool, please contact me on schrj020@mail.uni-mainz.de |
|||
%% |
|||
\def\fileversion{v0.02} |
|||
\def\filedate{2001/08/06} |
|||
|
|||
\NeedsTeXFormat{LaTeX2e} |
|||
\ProvidesPackage{datenumber}[\filedate \fileversion] |
|||
|
|||
\DeclareOption{english}{\input datenumberenglish.ldf} |
|||
\DeclareOption{USenglish}{\input datenumberUSenglish.ldf} |
|||
\DeclareOption{french}{\input datenumberfrench.ldf} |
|||
\DeclareOption{italian}{\input datenumberitalian.ldf} |
|||
\DeclareOption{spanish}{\input datenumberspanish.ldf} |
|||
\DeclareOption{german}{\input datenumbergerman.ldf} |
|||
\DeclareOption{ngerman}{\input datenumbergerman.ldf} |
|||
\input datenumberUSenglish.ldf |
|||
\ProcessOptions |
|||
\newcounter{@dayscnt} |
|||
\newcounter{@startyear} |
|||
|
|||
\def\setstartyear#1{% |
|||
\ifnum#1<1 |
|||
\errmessage{Package datenumber: startyear < 1}% |
|||
\fi |
|||
\setcounter{@startyear}{#1}% |
|||
\setdatetoday |
|||
} |
|||
|
|||
\def\thestartyear{\the@startyear} |
|||
|
|||
\def\setmydatenumber#1#2#3#4{% |
|||
\ifvaliddate{#2}{#3}{#4}% |
|||
\else |
|||
\errmessage{\@errmessage}% |
|||
\fi |
|||
\ifnum\the@startyear<1 |
|||
\errmessage{Package datenumber: startyear < 1}% |
|||
\fi |
|||
\ifnum#2<\the@startyear |
|||
\errmessage{Package datenumber: datenumber < startyear (#2 < \the@startyear)}% |
|||
\fi |
|||
\setcounter{@dayscnt}{0}% |
|||
\ifnum#2>\the@startyear |
|||
\relax\@yearloop{#2}% |
|||
\fi |
|||
\addtocounter{@dayscnt}{% |
|||
\ifcase #3% |
|||
\or 0\or 31\or 59 |
|||
\or 90\or 120\or 151 |
|||
\or 181\or 212\or 243 |
|||
\or 273\or 304\or 334 |
|||
\fi |
|||
}% |
|||
\ifleapyear{#2}% |
|||
\ifnum#3>2 |
|||
\addtocounter{@dayscnt}{1}% |
|||
\fi |
|||
\fi |
|||
\ifnum#2=1582 |
|||
\ifnum#3>10 |
|||
\addtocounter{@dayscnt}{-10}% |
|||
\fi |
|||
\ifnum#3=10 |
|||
\ifnum#4>14 |
|||
\addtocounter{@dayscnt}{-10}% |
|||
\fi |
|||
\fi |
|||
\fi |
|||
\addtocounter{@dayscnt}{#4}% |
|||
\setcounter{#1}{\the@dayscnt}% |
|||
} |
|||
|
|||
\def\setmydatebynumber#1#2#3#4{% |
|||
\ifnum\the@startyear<1 |
|||
\errmessage{Package datenumber: startyear < 1}% |
|||
\fi |
|||
\ifnum#1<1 |
|||
\errmessage{Package datenumber: datenumber < 1}% |
|||
\fi |
|||
\setcounter{#2}{\the@startyear}% |
|||
\setcounter{@dayscnt}{1}% |
|||
\loop |
|||
\ifleapyear{\thedateyear}% |
|||
\@tempcnta=366 |
|||
\else |
|||
\@tempcnta=365 |
|||
\fi |
|||
\ifnum\thedateyear=1582 |
|||
\@tempcnta=355 |
|||
\fi |
|||
\addtocounter{@dayscnt}{\the\@tempcnta}% |
|||
\ifnum\the@dayscnt<#1\addtocounter{dateyear}{1}% |
|||
\repeat |
|||
\addtocounter{@dayscnt}{-\the\@tempcnta}% |
|||
% |
|||
\setcounter{#3}{1}% |
|||
\setcounter{#4}{1}% |
|||
\setmydatenumber{@dayscnt}{\value{#2}}{\value{#3}}{\value{#4}}% |
|||
\ifnum#1>\the@dayscnt\relax |
|||
\loop |
|||
\mynextdate{#2}{#3}{#4}% |
|||
\addtocounter{@dayscnt}{1}% |
|||
\ifnum\the@dayscnt<#1\relax |
|||
\repeat |
|||
\setmydatenumber{@dayscnt}{\value{#2}}{\value{#3}}{\value{#4}}% |
|||
\fi |
|||
} |
|||
|
|||
\def\mynextdate#1#2#3{% |
|||
\ifvaliddate{\value{#1}}{\value{#2}}{\value{#3}}% |
|||
\else |
|||
\errmessage{\@errmessage}% |
|||
\fi |
|||
\addtocounter{#3}{1}% |
|||
\ifleapyear{\value{#1}}% |
|||
\@tempcnta=29 |
|||
\else |
|||
\@tempcnta=28 |
|||
\fi |
|||
\ifnum\value{#3}>% |
|||
\ifcase\value{#2}\or31\or\@tempcnta\or31\or30\or31\or30% |
|||
\or31\or31\or30\or31\or30\else31% |
|||
\fi\relax |
|||
\setcounter{#3}{1}% |
|||
\addtocounter{#2}{1}% |
|||
\ifnum\value{#2}>12 |
|||
\setcounter{#2}{1}% |
|||
\addtocounter{#1}{1}% |
|||
\fi |
|||
\fi |
|||
\ifnum\value{#1}=1582 |
|||
\ifnum\value{#2}=10 |
|||
\ifnum\value{#3}=5 |
|||
\setcounter{#3}{15}% |
|||
\fi |
|||
\fi |
|||
\fi |
|||
} |
|||
|
|||
\def\myprevdate#1#2#3{% |
|||
\ifvaliddate{\value{#1}}{\value{#2}}{\value{#3}}% |
|||
\else |
|||
\errmessage{\@errmessage}% |
|||
\fi |
|||
\addtocounter{#3}{-1}% |
|||
\ifleapyear{\value{#1}}% |
|||
\@tempcnta=29 |
|||
\else |
|||
\@tempcnta=28 |
|||
\fi |
|||
\ifnum\value{#3}=0 |
|||
\addtocounter{#2}{-1}% |
|||
\ifnum\value{#2}=0 |
|||
\addtocounter{#1}{-1}% |
|||
\setcounter{#2}{12}% |
|||
\fi |
|||
\setcounter{#3}{% |
|||
\ifcase\value{#2}\or 31\or\the\@tempcnta\or 31\or 30\or 31\or 30 |
|||
\or 31\or 31\or 30\or 31\or 30\else 31 |
|||
\fi |
|||
}% |
|||
\fi |
|||
\ifnum\value{#1}=1582 |
|||
\ifnum\value{#2}=10 |
|||
\ifnum\value{#3}=14 |
|||
\setcounter{#3}{4}% |
|||
\fi |
|||
\fi |
|||
\fi |
|||
} |
|||
|
|||
|
|||
\newcounter{datenumber} |
|||
\newcounter{dateyear} |
|||
\newcounter{datemonth} |
|||
\newcounter{dateday} |
|||
\newcounter{datedayname} |
|||
|
|||
\def\setdatenumber#1#2#3{% |
|||
\setmydatenumber{datenumber}{#1}{#2}{#3}% |
|||
\setcounter{dateyear}{#1}% |
|||
\setcounter{datemonth}{#2}% |
|||
\setcounter{dateday}{#3}% |
|||
\setdaynamebynumber{\thedatenumber}% |
|||
\setmonthname{\thedatemonth}% |
|||
} |
|||
|
|||
\def\setdatebynumber#1{% |
|||
\setmydatebynumber{#1}{dateyear}{datemonth}{dateday}% |
|||
\setcounter{datenumber}{#1}% |
|||
\setdaynamebynumber{\thedatenumber}% |
|||
\setmonthname{\thedatemonth}% |
|||
} |
|||
|
|||
\def\nextdate{% |
|||
\mynextdate{dateyear}{datemonth}{dateday}% |
|||
\setdate{\thedateyear}{\thedatemonth}{\thedateday}% |
|||
} |
|||
|
|||
\def\prevdate{% |
|||
\myprevdate{dateyear}{datemonth}{dateday}% |
|||
\setdate{\thedateyear}{\thedatemonth}{\thedateday}% |
|||
} |
|||
|
|||
\def\setdate#1#2#3{%#1 year, #2 month, #3 day |
|||
\setdatenumber{#1}{#2}{#3}% |
|||
} |
|||
|
|||
\def\setdatetoday{% |
|||
\setdatenumber{\the\year}{\the\month}{\the\day}% |
|||
} |
|||
|
|||
|
|||
\def\setmonthname#1{% |
|||
\def\datemonthname{\@monthname{#1}}% |
|||
} |
|||
|
|||
|
|||
\def\setdayname#1{% |
|||
\def\datedayname{\@dayname{#1}}% |
|||
} |
|||
|
|||
\def\setdaynamebynumber#1{% |
|||
\@tempcnta=#1\relax |
|||
\ifnum\the@startyear=1800\advance \@tempcnta by 1\fi |
|||
\ifnum\the@startyear=1900\advance \@tempcnta by 6\fi |
|||
\ifnum\the@startyear=2000\advance \@tempcnta by 4\fi |
|||
\@modulo{\the\@tempcnta}{7}% |
|||
\setcounter{datedayname}{\the\@den}% |
|||
\addtocounter{datedayname}{1}% |
|||
\setdayname{\thedatedayname}% |
|||
} |
|||
|
|||
\def\datedate{\@datedate}% |
|||
|
|||
\def\dateselectlanguage#1{% |
|||
\csname @datelanguage#1\endcsname |
|||
\setdayname{\thedatedayname}% |
|||
\setmonthname{\thedatemonth}% |
|||
} |
|||
|
|||
\def\ifleapyear#1{%#1 year |
|||
\ifnum#1>1500 |
|||
\@modulo{#1}{100}% |
|||
\ifnum\@den=0 |
|||
\@modulo{#1}{400}% |
|||
\else |
|||
\@modulo{#1}{4}% |
|||
\fi |
|||
\else |
|||
\@modulo{#1}{4}% |
|||
\fi |
|||
\ifnum\@den=0 |
|||
} |
|||
|
|||
\def\ifvaliddate#1#2#3{% |
|||
\ifleapyear{#1}% |
|||
\@tempcnta=29 |
|||
\else |
|||
\@tempcnta=28 |
|||
\fi |
|||
\gdef\@errmessage{}% |
|||
\ifnum#1<1 |
|||
\gdef\@errmessage{Package datenumber: % |
|||
invalid date: year < 1, #1/#2/#3}% |
|||
\fi% |
|||
\ifnum#2<1 |
|||
\gdef\@errmessage{Package datenumber: % |
|||
invalid date: month < 1, #1/#2/#3}% |
|||
\fi% |
|||
\ifnum#2>12 |
|||
\gdef\@errmessage{Package datenumber: % |
|||
invalid date: month > 12, #1/#2/#3}% |
|||
\fi% |
|||
\ifnum#3<1 |
|||
\gdef\@errmessage{Package datenumber: % |
|||
invalid date: day < 1, #1/#2/#3}% |
|||
\fi% |
|||
\@tempcntb= |
|||
\ifcase#2 31\or 31\or\the\@tempcnta\or 31\or 30\or 31\or 30 |
|||
\or 31\or 31\or 30\or 31\or 30\else 31 |
|||
\fi\relax |
|||
\ifnum#3>\@tempcntb |
|||
\gdef\@errmessage{Package datenumber: % |
|||
invalid date: day > \the\@tempcntb, #1/#2/#3}% |
|||
\fi% |
|||
\ifnum#1=1582 |
|||
\ifnum#2=10 |
|||
\ifnum#3>4 |
|||
\ifnum#3<15 |
|||
\gdef\@errmessage{Package datenumber: % |
|||
invalid date: #1/#2/#3}% |
|||
\fi |
|||
\fi |
|||
\fi |
|||
\fi |
|||
\ifx\@errmessage\empty |
|||
} |
|||
|
|||
\def\@yearloop#1{% |
|||
\@tempcnta=\the@startyear% |
|||
\loop |
|||
\ifleapyear{\@tempcnta}% |
|||
\addtocounter{@dayscnt}{366}% |
|||
\else |
|||
\addtocounter{@dayscnt}{365}% |
|||
\fi |
|||
\ifnum\@tempcnta=1582 |
|||
\addtocounter{@dayscnt}{-10}% |
|||
\fi |
|||
\advance \@tempcnta by 1 |
|||
\ifnum\@tempcnta=#1\else |
|||
\repeat |
|||
} |
|||
|
|||
\newcount\@nom\newcount\@den |
|||
|
|||
\def\@modulo#1#2{% |
|||
\@nom=#1\relax |
|||
\@den=#2\relax |
|||
\divide\@nom by \@den% |
|||
\multiply\@nom by \@den% |
|||
\@den=#1% |
|||
\advance\@den by -\@nom% |
|||
} |
|||
|
|||
\setstartyear{1800} |
|||
|
|||
\endinput |
|||
%% |
|||
%% End of file `datenumber.sty'. |
@ -1,53 +0,0 @@ |
|||
%% |
|||
%% This is file `datenumberUSenglish.ldf', |
|||
%% generated with the docstrip utility. |
|||
%% |
|||
%% The original source files were: |
|||
%% |
|||
%% datenumber.dtx (with options: `USenglish') |
|||
%% |
|||
%% This file is part of the `datenumber' package, |
|||
%% |
|||
%% Copyright (C) 2001 J"org-Michael Schr"oder. |
|||
%% |
|||
%% IMPORTANT NOTICE: |
|||
%% |
|||
%% This program may be distributed and/or modified under the |
|||
%% conditions of the LaTeX Project Public License, either version 1.2 |
|||
%% 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.2 or later is part of all distributions of LaTeX |
|||
%% version 1999/12/01 or later. |
|||
%% |
|||
%% This program consists of all files listed in README.txt. |
|||
%% |
|||
%% For error reports, or offers to help make this a more powerful |
|||
%% tool, please contact me on schrj020@mail.uni-mainz.de |
|||
%% |
|||
|
|||
\ProvidesFile{datenumberUSenglish.ldf} |
|||
|
|||
\def\@datelanguageUSenglish{% |
|||
\def\@dayname{\@daynameUSenglish} |
|||
\def\@monthname{\@monthnameUSenglish}% |
|||
\def\@datedate{\@datedateUSenglish}% |
|||
} |
|||
|
|||
\def\@monthnameUSenglish#1{% |
|||
\ifcase#1\or |
|||
January\or February\or March\or April\or May\or June\or |
|||
July\or August\or September\or October\or November\or December\fi}% |
|||
|
|||
\def\@daynameUSenglish#1{% |
|||
\ifcase#1\or |
|||
Monday\or Tuesday\or Wednesday\or Thursday\or |
|||
Friday\or Saturday\or Sunday\fi} |
|||
|
|||
\def\@datedateUSenglish{\datemonthname\space\thedateday, \thedateyear} |
|||
|
|||
\@datelanguageUSenglish |
|||
|
|||
\endinput |
|||
%% |
|||
%% End of file `datenumberUSenglish.ldf'. |
@ -1,57 +0,0 @@ |
|||
%% |
|||
%% This is file `datenumberenglish.ldf', |
|||
%% generated with the docstrip utility. |
|||
%% |
|||
%% The original source files were: |
|||
%% |
|||
%% datenumber.dtx (with options: `english') |
|||
%% |
|||
%% This file is part of the `datenumber' package, |
|||
%% |
|||
%% Copyright (C) 2001 J"org-Michael Schr"oder. |
|||
%% |
|||
%% IMPORTANT NOTICE: |
|||
%% |
|||
%% This program may be distributed and/or modified under the |
|||
%% conditions of the LaTeX Project Public License, either version 1.2 |
|||
%% 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.2 or later is part of all distributions of LaTeX |
|||
%% version 1999/12/01 or later. |
|||
%% |
|||
%% This program consists of all files listed in README.txt. |
|||
%% |
|||
%% For error reports, or offers to help make this a more powerful |
|||
%% tool, please contact me on schrj020@mail.uni-mainz.de |
|||
%% |
|||
|
|||
\ProvidesFile{datenumberenglish.ldf} |
|||
|
|||
\def\@datelanguageenglish{% |
|||
\def\@dayname{\@daynameenglish} |
|||
\def\@monthname{\@monthnameenglish}% |
|||
\def\@datedate{\@datedateenglish}% |
|||
} |
|||
|
|||
\def\@monthnameenglish#1{% |
|||
\ifcase#1\or |
|||
January\or February\or March\or April\or May\or June\or |
|||
July\or August\or September\or October\or November\or December\fi}% |
|||
|
|||
\def\@daynameenglish#1{% |
|||
\ifcase#1\or |
|||
Monday\or Tuesday\or Wednesday\or Thursday\or |
|||
Friday\or Saturday\or Sunday\fi} |
|||
|
|||
\def\@datedateenglish{\thedateday \ifcase\thedateday \or |
|||
st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or |
|||
th\or th\or th\or th\or th\or th\or th\or th\or th\or th\or |
|||
st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or |
|||
st\fi~\datemonthname \space\thedateyear} |
|||
|
|||
\@datelanguageenglish |
|||
|
|||
\endinput |
|||
%% |
|||
%% End of file `datenumberenglish.ldf'. |
@ -0,0 +1,5 @@ |
|||
/*! |
|||
* Fancy styles for pdf2htmlEX |
|||
* Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com> |
|||
* https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE |
|||
*/@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes swing{0{transform:rotate(0)}10%{transform:rotate(0)}90%{transform:rotate(720deg)}100%{transform:rotate(720deg)}}@-webkit-keyframes swing{0{-webkit-transform:rotate(0)}10%{-webkit-transform:rotate(0)}90%{-webkit-transform:rotate(720deg)}100%{-webkit-transform:rotate(720deg)}}@media screen{#sidebar{background-color:#2f3236;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPgo8cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBmaWxsPSIjNDAzYzNmIj48L3JlY3Q+CjxwYXRoIGQ9Ik0wIDBMNCA0Wk00IDBMMCA0WiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2U9IiMxZTI5MmQiPjwvcGF0aD4KPC9zdmc+")}#outline{font-family:Georgia,Times,"Times New Roman",serif;font-size:13px;margin:2em 1em}#outline ul{padding:0}#outline li{list-style-type:none;margin:1em 0}#outline li>ul{margin-left:1em}#outline a,#outline a:visited,#outline a:hover,#outline a:active{line-height:1.2;color:#e8e8e8;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;display:block;overflow:hidden;outline:0}#outline a:hover{color:#0cf}#page-container{background-color:#9e9e9e;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1IiBoZWlnaHQ9IjUiPgo8cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSI1IiBmaWxsPSIjOWU5ZTllIj48L3JlY3Q+CjxwYXRoIGQ9Ik0wIDVMNSAwWk02IDRMNCA2Wk0tMSAxTDEgLTFaIiBzdHJva2U9IiM4ODgiIHN0cm9rZS13aWR0aD0iMSI+PC9wYXRoPgo8L3N2Zz4=");-webkit-transition:left 500ms;transition:left 500ms}.pf{margin:13px auto;box-shadow:1px 1px 3px 1px #333;border-collapse:separate}.pc.opened{-webkit-animation:fadein 100ms;animation:fadein 100ms}.loading-indicator.active{-webkit-animation:swing 1.5s ease-in-out .01s infinite alternate none;animation:swing 1.5s ease-in-out .01s infinite alternate none}.checked{background:no-repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goQDSYgDiGofgAAAslJREFUOMvtlM9LFGEYx7/vvOPM6ywuuyPFihWFBUsdNnA6KLIh+QPx4KWExULdHQ/9A9EfUodYmATDYg/iRewQzklFWxcEBcGgEplDkDtI6sw4PzrIbrOuedBb9MALD7zv+3m+z4/3Bf7bZS2bzQIAcrmcMDExcTeXy10DAFVVAQDksgFUVZ1ljD3yfd+0LOuFpmnvVVW9GHhkZAQcxwkNDQ2FSCQyRMgJxnVdy7KstKZpn7nwha6urqqfTqfPBAJAuVymlNLXoigOhfd5nmeiKL5TVTV+lmIKwAOA7u5u6Lped2BsbOwjY6yf4zgQQkAIAcedaPR9H67r3uYBQFEUFItFtLe332lpaVkUBOHK3t5eRtf1DwAwODiIubk5DA8PM8bYW1EU+wEgCIJqsCAIQAiB7/u253k2BQDDMJBKpa4mEon5eDx+UxAESJL0uK2t7XosFlvSdf0QAEmlUnlRFJ9Waho2Qghc1/U9z3uWz+eX+Wr+lL6SZfleEAQIggA8z6OpqSknimIvYyybSCReMsZ6TislhCAIAti2Dc/zejVNWwCAavN8339j27YbTg0AGGM3WltbP4WhlRWq6Q/btrs1TVsYHx+vNgqKoqBUKn2NRqPFxsbGJzzP05puUlpt0ukyOI6z7zjOwNTU1OLo6CgmJyf/gA3DgKIoWF1d/cIY24/FYgOU0pp0z/Ityzo8Pj5OTk9PbwHA+vp6zWghDC+VSiuRSOQgGo32UErJ38CO42wdHR09LBQK3zKZDDY2NupmFmF4R0cHVlZWlmRZ/iVJUn9FeWWcCCE4ODjYtG27Z2Zm5juAOmgdGAB2d3cBADs7O8uSJN2SZfl+WKlpmpumaT6Yn58vn/fs6XmbhmHMNjc3tzDGFI7jYJrm5vb29sDa2trPC/9aiqJUy5pOp4f6+vqeJ5PJBAB0dnZe/t8NBajx/z37Df5OGX8d13xzAAAAAElFTkSuQmCC)}} |
@ -1,32 +0,0 @@ |
|||
%% |
|||
%% This is file `helvetica.sty', based on helvet.sty extended to include |
|||
%% definitions for rm and tt. This means commands such as \textbf, \textit, |
|||
%% etc. will appear in Helvetica. |
|||
%% Changes added by Harriet Borton on <1995/12/11> |
|||
%% |
|||
%% The original source files were: |
|||
%% |
|||
%% psfonts.dtx (with options: `helvet') |
|||
%% |
|||
%% Copyright (C) 1994 Sebastian Rahtz |
|||
%% All rights reserved. |
|||
%% |
|||
%% The original file is part of the PSNFSS2e package. |
|||
%% ----------------------------------------- |
|||
%% |
|||
%% This is a generated file. Permission is granted to to customize the |
|||
%% declarations in this file to serve the needs of your installation. |
|||
%% However, no permission is granted to distribute a modified version of |
|||
%% this file under its original name. |
|||
\def\fileversion{4.2} |
|||
\def\filedate{94/11/11} |
|||
\def\docdate {94/11/06} |
|||
\NeedsTeXFormat{LaTeX2e} |
|||
\ProvidesPackage{helvetica}[\filedate\space\fileversion\space |
|||
Helvetica PSNFSS2e package] |
|||
\renewcommand{\sfdefault}{phv} |
|||
\renewcommand{\rmdefault}{phv} |
|||
\renewcommand{\ttdefault}{pcr} |
|||
\endinput |
|||
%% |
|||
%% End of file `helvetica.sty'. |
32
index.html
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
After Width: 64 | Height: 64 | Size: 3.3 KiB |
@ -0,0 +1,27 @@ |
|||
(function(){/* |
|||
pdf2htmlEX.js: Core UI functions for pdf2htmlEX |
|||
Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com> and other contributors |
|||
https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE
|
|||
*/ |
|||
var pdf2htmlEX=window.pdf2htmlEX=window.pdf2htmlEX||{},CSS_CLASS_NAMES={page_frame:"pf",page_content_box:"pc",page_data:"pi",background_image:"bi",link:"l",input_radio:"ir",__dummy__:"no comma"},DEFAULT_CONFIG={container_id:"page-container",sidebar_id:"sidebar",outline_id:"outline",loading_indicator_cls:"loading-indicator",preload_pages:3,render_timeout:100,scale_step:0.9,key_handler:!0,hashchange_handler:!0,view_history_handler:!0,__dummy__:"no comma"},EPS=1E-6; |
|||
function invert(a){var b=a[0]*a[3]-a[1]*a[2];return[a[3]/b,-a[1]/b,-a[2]/b,a[0]/b,(a[2]*a[5]-a[3]*a[4])/b,(a[1]*a[4]-a[0]*a[5])/b]}function transform(a,b){return[a[0]*b[0]+a[2]*b[1]+a[4],a[1]*b[0]+a[3]*b[1]+a[5]]}function get_page_number(a){return parseInt(a.getAttribute("data-page-no"),16)}function disable_dragstart(a){for(var b=0,c=a.length;b<c;++b)a[b].addEventListener("dragstart",function(){return!1},!1)} |
|||
function clone_and_extend_objs(a){for(var b={},c=0,e=arguments.length;c<e;++c){var h=arguments[c],d;for(d in h)h.hasOwnProperty(d)&&(b[d]=h[d])}return b} |
|||
function Page(a){if(a){this.shown=this.loaded=!1;this.page=a;this.num=get_page_number(a);this.original_height=a.clientHeight;this.original_width=a.clientWidth;var b=a.getElementsByClassName(CSS_CLASS_NAMES.page_content_box)[0];b&&(this.content_box=b,this.original_scale=this.cur_scale=this.original_height/b.clientHeight,this.page_data=JSON.parse(a.getElementsByClassName(CSS_CLASS_NAMES.page_data)[0].getAttribute("data-data")),this.ctm=this.page_data.ctm,this.ictm=invert(this.ctm),this.loaded=!0)}} |
|||
Page.prototype={hide:function(){this.loaded&&this.shown&&(this.content_box.classList.remove("opened"),this.shown=!1)},show:function(){this.loaded&&!this.shown&&(this.content_box.classList.add("opened"),this.shown=!0)},rescale:function(a){this.cur_scale=0===a?this.original_scale:a;this.loaded&&(a=this.content_box.style,a.msTransform=a.webkitTransform=a.transform="scale("+this.cur_scale.toFixed(3)+")");a=this.page.style;a.height=this.original_height*this.cur_scale+"px";a.width=this.original_width*this.cur_scale+ |
|||
"px"},view_position:function(){var a=this.page,b=a.parentNode;return[b.scrollLeft-a.offsetLeft-a.clientLeft,b.scrollTop-a.offsetTop-a.clientTop]},height:function(){return this.page.clientHeight},width:function(){return this.page.clientWidth}};function Viewer(a){this.config=clone_and_extend_objs(DEFAULT_CONFIG,0<arguments.length?a:{});this.pages_loading=[];this.init_before_loading_content();var b=this;document.addEventListener("DOMContentLoaded",function(){b.init_after_loading_content()},!1)} |
|||
Viewer.prototype={scale:1,cur_page_idx:0,first_page_idx:0,init_before_loading_content:function(){this.pre_hide_pages()},initialize_radio_button:function(){for(var a=document.getElementsByClassName(CSS_CLASS_NAMES.input_radio),b=0;b<a.length;b++)a[b].addEventListener("click",function(){this.classList.toggle("checked")})},init_after_loading_content:function(){this.sidebar=document.getElementById(this.config.sidebar_id);this.outline=document.getElementById(this.config.outline_id);this.container=document.getElementById(this.config.container_id); |
|||
this.loading_indicator=document.getElementsByClassName(this.config.loading_indicator_cls)[0];for(var a=!0,b=this.outline.childNodes,c=0,e=b.length;c<e;++c)if("ul"===b[c].nodeName.toLowerCase()){a=!1;break}a||this.sidebar.classList.add("opened");this.find_pages();if(0!=this.pages.length){disable_dragstart(document.getElementsByClassName(CSS_CLASS_NAMES.background_image));this.config.key_handler&&this.register_key_handler();var h=this;this.config.hashchange_handler&&window.addEventListener("hashchange", |
|||
function(a){h.navigate_to_dest(document.location.hash.substring(1))},!1);this.config.view_history_handler&&window.addEventListener("popstate",function(a){a.state&&h.navigate_to_dest(a.state)},!1);this.container.addEventListener("scroll",function(){h.update_page_idx();h.schedule_render(!0)},!1);[this.container,this.outline].forEach(function(a){a.addEventListener("click",h.link_handler.bind(h),!1)});this.initialize_radio_button();this.render()}},find_pages:function(){for(var a=[],b={},c=this.container.childNodes, |
|||
e=0,h=c.length;e<h;++e){var d=c[e];d.nodeType===Node.ELEMENT_NODE&&d.classList.contains(CSS_CLASS_NAMES.page_frame)&&(d=new Page(d),a.push(d),b[d.num]=a.length-1)}this.pages=a;this.page_map=b},load_page:function(a,b,c){var e=this.pages;if(!(a>=e.length||(e=e[a],e.loaded||this.pages_loading[a]))){var e=e.page,h=e.getAttribute("data-page-url");if(h){this.pages_loading[a]=!0;var d=e.getElementsByClassName(this.config.loading_indicator_cls)[0];"undefined"===typeof d&&(d=this.loading_indicator.cloneNode(!0), |
|||
d.classList.add("active"),e.appendChild(d));var f=this,g=new XMLHttpRequest;g.open("GET",h,!0);g.onload=function(){if(200===g.status||0===g.status){var b=document.createElement("div");b.innerHTML=g.responseText;for(var d=null,b=b.childNodes,e=0,h=b.length;e<h;++e){var p=b[e];if(p.nodeType===Node.ELEMENT_NODE&&p.classList.contains(CSS_CLASS_NAMES.page_frame)){d=p;break}}b=f.pages[a];f.container.replaceChild(d,b.page);b=new Page(d);f.pages[a]=b;b.hide();b.rescale(f.scale);disable_dragstart(d.getElementsByClassName(CSS_CLASS_NAMES.background_image)); |
|||
f.schedule_render(!1);c&&c(b)}delete f.pages_loading[a]};g.send(null)}void 0===b&&(b=this.config.preload_pages);0<--b&&(f=this,setTimeout(function(){f.load_page(a+1,b)},0))}},pre_hide_pages:function(){var a="@media screen{."+CSS_CLASS_NAMES.page_content_box+"{display:none;}}",b=document.createElement("style");b.styleSheet?b.styleSheet.cssText=a:b.appendChild(document.createTextNode(a));document.head.appendChild(b)},render:function(){for(var a=this.container,b=a.scrollTop,c=a.clientHeight,a=b-c,b= |
|||
b+c+c,c=this.pages,e=0,h=c.length;e<h;++e){var d=c[e],f=d.page,g=f.offsetTop+f.clientTop,f=g+f.clientHeight;g<=b&&f>=a?d.loaded?d.show():this.load_page(e):d.hide()}},update_page_idx:function(){var a=this.pages,b=a.length;if(!(2>b)){for(var c=this.container,e=c.scrollTop,c=e+c.clientHeight,h=-1,d=b,f=d-h;1<f;){var g=h+Math.floor(f/2),f=a[g].page;f.offsetTop+f.clientTop+f.clientHeight>=e?d=g:h=g;f=d-h}this.first_page_idx=d;for(var g=h=this.cur_page_idx,k=0;d<b;++d){var f=a[d].page,l=f.offsetTop+f.clientTop, |
|||
f=f.clientHeight;if(l>c)break;f=(Math.min(c,l+f)-Math.max(e,l))/f;if(d===h&&Math.abs(f-1)<=EPS){g=h;break}f>k&&(k=f,g=d)}this.cur_page_idx=g}},schedule_render:function(a){if(void 0!==this.render_timer){if(!a)return;clearTimeout(this.render_timer)}var b=this;this.render_timer=setTimeout(function(){delete b.render_timer;b.render()},this.config.render_timeout)},register_key_handler:function(){var a=this;window.addEventListener("DOMMouseScroll",function(b){if(b.ctrlKey){b.preventDefault();var c=a.container, |
|||
e=c.getBoundingClientRect(),c=[b.clientX-e.left-c.clientLeft,b.clientY-e.top-c.clientTop];a.rescale(Math.pow(a.config.scale_step,b.detail),!0,c)}},!1);window.addEventListener("keydown",function(b){var c=!1,e=b.ctrlKey||b.metaKey,h=b.altKey;switch(b.keyCode){case 61:case 107:case 187:e&&(a.rescale(1/a.config.scale_step,!0),c=!0);break;case 173:case 109:case 189:e&&(a.rescale(a.config.scale_step,!0),c=!0);break;case 48:e&&(a.rescale(0,!1),c=!0);break;case 33:h?a.scroll_to(a.cur_page_idx-1):a.container.scrollTop-= |
|||
a.container.clientHeight;c=!0;break;case 34:h?a.scroll_to(a.cur_page_idx+1):a.container.scrollTop+=a.container.clientHeight;c=!0;break;case 35:a.container.scrollTop=a.container.scrollHeight;c=!0;break;case 36:a.container.scrollTop=0,c=!0}c&&b.preventDefault()},!1)},rescale:function(a,b,c){var e=this.scale;this.scale=a=0===a?1:b?e*a:a;c||(c=[0,0]);b=this.container;c[0]+=b.scrollLeft;c[1]+=b.scrollTop;for(var h=this.pages,d=h.length,f=this.first_page_idx;f<d;++f){var g=h[f].page;if(g.offsetTop+g.clientTop>= |
|||
c[1])break}g=f-1;0>g&&(g=0);var g=h[g].page,k=g.clientWidth,f=g.clientHeight,l=g.offsetLeft+g.clientLeft,m=c[0]-l;0>m?m=0:m>k&&(m=k);k=g.offsetTop+g.clientTop;c=c[1]-k;0>c?c=0:c>f&&(c=f);for(f=0;f<d;++f)h[f].rescale(a);b.scrollLeft+=m/e*a+g.offsetLeft+g.clientLeft-m-l;b.scrollTop+=c/e*a+g.offsetTop+g.clientTop-c-k;this.schedule_render(!0)},fit_width:function(){var a=this.cur_page_idx;this.rescale(this.container.clientWidth/this.pages[a].width(),!0);this.scroll_to(a)},fit_height:function(){var a=this.cur_page_idx; |
|||
this.rescale(this.container.clientHeight/this.pages[a].height(),!0);this.scroll_to(a)},get_containing_page:function(a){for(;a;){if(a.nodeType===Node.ELEMENT_NODE&&a.classList.contains(CSS_CLASS_NAMES.page_frame)){a=get_page_number(a);var b=this.page_map;return a in b?this.pages[b[a]]:null}a=a.parentNode}return null},link_handler:function(a){var b=a.target,c=b.getAttribute("data-dest-detail");if(c){if(this.config.view_history_handler)try{var e=this.get_current_view_hash();window.history.replaceState(e, |
|||
"","#"+e);window.history.pushState(c,"","#"+c)}catch(h){}this.navigate_to_dest(c,this.get_containing_page(b));a.preventDefault()}},navigate_to_dest:function(a,b){try{var c=JSON.parse(a)}catch(e){return}if(c instanceof Array){var h=c[0],d=this.page_map;if(h in d){for(var f=d[h],h=this.pages[f],d=2,g=c.length;d<g;++d){var k=c[d];if(null!==k&&"number"!==typeof k)return}for(;6>c.length;)c.push(null);var g=b||this.pages[this.cur_page_idx],d=g.view_position(),d=transform(g.ictm,[d[0],g.height()-d[1]]), |
|||
g=this.scale,l=[0,0],m=!0,k=!1,n=this.scale;switch(c[1]){case "XYZ":l=[null===c[2]?d[0]:c[2]*n,null===c[3]?d[1]:c[3]*n];g=c[4];if(null===g||0===g)g=this.scale;k=!0;break;case "Fit":case "FitB":l=[0,0];k=!0;break;case "FitH":case "FitBH":l=[0,null===c[2]?d[1]:c[2]*n];k=!0;break;case "FitV":case "FitBV":l=[null===c[2]?d[0]:c[2]*n,0];k=!0;break;case "FitR":l=[c[2]*n,c[5]*n],m=!1,k=!0}if(k){this.rescale(g,!1);var p=this,c=function(a){l=transform(a.ctm,l);m&&(l[1]=a.height()-l[1]);p.scroll_to(f,l)};h.loaded? |
|||
c(h):(this.load_page(f,void 0,c),this.scroll_to(f))}}}},scroll_to:function(a,b){var c=this.pages;if(!(0>a||a>=c.length)){c=c[a].view_position();void 0===b&&(b=[0,0]);var e=this.container;e.scrollLeft+=b[0]-c[0];e.scrollTop+=b[1]-c[1]}},get_current_view_hash:function(){var a=[],b=this.pages[this.cur_page_idx];a.push(b.num);a.push("XYZ");var c=b.view_position(),c=transform(b.ictm,[c[0],b.height()-c[1]]);a.push(c[0]/this.scale);a.push(c[1]/this.scale);a.push(this.scale);return JSON.stringify(a)}}; |
|||
pdf2htmlEX.Viewer=Viewer;})(); |
@ -1,137 +0,0 @@ |
|||
--- |
|||
resources: |
|||
- name: resume-git |
|||
type: git |
|||
icon: git |
|||
source: |
|||
uri: ssh://git@git.nulloctet.com:8437/warricksothr/resume.git |
|||
private_key: | |
|||
((pull_key)) |
|||
ignore_paths: |
|||
- pipeline.yml |
|||
- upload_pipeline.sh |
|||
- README.md |
|||
- name: resume-github-gh-pages |
|||
type: git |
|||
icon: github-circle |
|||
source: |
|||
uri: git@github.com:warricksothr/resume.git |
|||
private_key: | |
|||
((push_key_github)) |
|||
branch: gh-pages |
|||
|
|||
jobs: |
|||
- name: publish |
|||
plan: |
|||
- get: resume-git |
|||
trigger: true |
|||
- get: resume-github-gh-pages |
|||
- task: build-resume-pdf |
|||
config: |
|||
platform: linux |
|||
image_resource: |
|||
type: registry-image |
|||
source: { repository: schickling/latex, tag: "latest" } |
|||
inputs: |
|||
- name: resume-git |
|||
outputs: |
|||
- name: resume-pdf |
|||
run: |
|||
path: /bin/sh |
|||
args: |
|||
- -c |
|||
- | |
|||
cd resume-git |
|||
latex --output-format pdf resume.tex |
|||
latex --output-format pdf resume_for_recruiters.tex |
|||
mv resume.pdf ../resume-pdf/ |
|||
mv resume_for_recruiters.pdf ../resume-pdf/ |
|||
- task: build-resume-html |
|||
config: |
|||
platform: linux |
|||
image_resource: |
|||
type: registry-image |
|||
source: |
|||
repository: ((nexus_docker_read.host))/sothr/pdf2htmlex |
|||
tag: "stable" |
|||
username: ((nexus_docker_read.username)) |
|||
password: ((nexus_docker_read.password)) |
|||
inputs: |
|||
- name: resume-pdf |
|||
outputs: |
|||
- name: resume-html |
|||
run: |
|||
path: /bin/sh |
|||
args: |
|||
- -c |
|||
- | |
|||
cd resume-pdf |
|||
pdf2htmlEX --zoom 1.5 --embed cfijo --dest-dir out resume.pdf |
|||
mv out/resume.html out/index.html |
|||
tar -czvf resume_site.tgz -C out/ . |
|||
mv resume_site.tgz ../resume-html/ |
|||
- task: publish-site |
|||
config: |
|||
platform: linux |
|||
image_resource: |
|||
type: registry-image |
|||
source: |
|||
repository: ((nexus_docker_read.host))/sothr/deploy |
|||
tag: "stable" |
|||
username: ((nexus_docker_read.username)) |
|||
password: ((nexus_docker_read.password)) |
|||
inputs: |
|||
- name: resume-pdf |
|||
- name: resume-html |
|||
params: |
|||
DEPLOY_KEY: ((deploy.key)) |
|||
DEPLOY_HOST: ((deploy.host)) |
|||
DEPLOY_PORT: ((deploy.port)) |
|||
DEPLOY_USER: ((deploy.user)) |
|||
DEPLOY_TARGET: ((deploy.target)) |
|||
run: |
|||
path: /bin/bash |
|||
args: |
|||
- -c |
|||
- | |
|||
eval `ssh-agent -s` |
|||
ssh-add <(echo "${DEPLOY_KEY}") |
|||
mkdir -p ~/.ssh |
|||
ssh-keyscan -p ${DEPLOY_PORT} ${DEPLOY_HOST} >> ~/.ssh/known_hosts |
|||
mkdir /tmp/deploy |
|||
tar -xzvf resume-html/resume_site.tgz -C /tmp/deploy |
|||
cp resume-pdf/resume.pdf /tmp/deploy |
|||
cp resume-pdf/resume_for_recruiters.pdf /tmp/deploy |
|||
rsync -avz --delete-delay -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p ${DEPLOY_PORT}" --progress /tmp/deploy/* ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_TARGET} |
|||
- task: publish-gh-pages |
|||
config: |
|||
platform: linux |
|||
image_resource: |
|||
type: registry-image |
|||
source: { repository: alpine/git } |
|||
inputs: |
|||
- name: resume-pdf |
|||
- name: resume-html |
|||
- name: resume-github-gh-pages |
|||
outputs: |
|||
- name: updated-resume-github-gh-pages |
|||
run: |
|||
path: /bin/sh |
|||
args: |
|||
- -c |
|||
- | |
|||
git config --global user.email "concourse@warrick.sothr.com" |
|||
git config --global user.name "Concourse" |
|||
git clone resume-github-gh-pages updated-resume-github-gh-pages |
|||
cd resume-html |
|||
mkdir -p /tmp/resume_site |
|||
tar -zxvf resume_site.tgz -C /tmp/resume_site |
|||
cd ../updated-resume-github-gh-pages |
|||
rm -rf * |
|||
mv /tmp/resume_site/* . |
|||
cp ../resume-pdf/*.pdf . |
|||
git add . |
|||
git commit -m"Auto update of resume page" |
|||
- put: resume-github-gh-pages |
|||
params: |
|||
repository: updated-resume-github-gh-pages |
@ -1,805 +0,0 @@ |
|||
% RESUME DOCUMENT STYLE -- Released 23 Nov 1989 |
|||
% for LaTeX version 2.09 |
|||
% Copyright (C) 1988,1989 by Michael DeCorte |
|||
|
|||
\typeout{Document Style `res' <26 Sep 89>.} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% res.sty |
|||
% |
|||
% \documentstyle{res} |
|||
% |
|||
% Copyright (c) 1988 by Michael DeCorte |
|||
% Permission to copy all or part of this work is granted, provided |
|||
% that the copies are not made or distributed for resale, and that |
|||
% the copyright notice and this notice are retained. |
|||
% |
|||
% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO |
|||
% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK, |
|||
% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS |
|||
% FOR ANY PARTICULAR PURPOSE. |
|||
% |
|||
% If you make any improvements, I'd like to hear about them. |
|||
% |
|||
% Michael DeCorte |
|||
% P.O. Box 652 |
|||
% Potsdam NY 13676 |
|||
% mrd@sun.soe.clarkson.edu |
|||
% mrd@clutx.bitnet |
|||
% |
|||
% Changes for LaTeX2e -- Venkat Krishnamurthy (Aug 7, 2001) |
|||
% |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% You can have multiple style options the legal options ones are: |
|||
% |
|||
% centered the name and address are centered at the top of the |
|||
% page (default) |
|||
% |
|||
% line the name is the left with a horizontal line then |
|||
% the address to the right |
|||
% |
|||
% overlapped the section titles overlap the body text (default) |
|||
% |
|||
% margin the section titles are to the left of the body text |
|||
% |
|||
% 11pt use 11 point fonts instead of 10 point fonts |
|||
% |
|||
% 12pt use 12 point fonts instead of 10 point fonts |
|||
% |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% Commands |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% \Resume prints the word resume but typeset nicely |
|||
% |
|||
% \newsectionwidth{dimen} |
|||
% defines the amount of space the labels extend |
|||
% into the left margin. |
|||
% DO NOT TRY to change any of the dimensions |
|||
% yourself. You will probably confuse the style file. |
|||
% |
|||
% \name{text} defines your name |
|||
% |
|||
% \address{text} |
|||
% defines your address |
|||
% this can be called twice if you have two addresses |
|||
% use \\'s to indicate where either line breaks or |
|||
% comas should go |
|||
% |
|||
% \opening this prints your name and address at that spot |
|||
% this is not normally needed, as \begin{resume} |
|||
% does this but is provided just in case you need |
|||
% to do something odd |
|||
% |
|||
% \begin{resume} ... \end{resume} |
|||
% all of the resume should go inside of this |
|||
% environment |
|||
% |
|||
% \section{text} |
|||
% This prints 'text' in the left hand margin. |
|||
% Its exact placement depends on what the style |
|||
% options has been set to. (overlapped or margin) |
|||
% You should use \\ to start a new line. If the |
|||
% style option is margin, the \\ is converted |
|||
% to a space. |
|||
% To use this in any of the list environments, put |
|||
% the \section after the \item[] but before the |
|||
% text. |
|||
% Eg. |
|||
% \begin{itemize} |
|||
% \item\section{text} |
|||
% text |
|||
% \end{itemize} |
|||
% |
|||
% \begin{ncolumn}{n} ... \end{ncolumn} |
|||
% creates a tabular environment with n equally |
|||
% spaced columns. Separate columns by & and |
|||
% end them with \\ |
|||
% |
|||
% \begin{position} ... \end{position} |
|||
% this is used to print a job description. There should |
|||
% be only one job description in it. Information |
|||
% related to the job (such as title, dates...) will |
|||
% be printed. |
|||
% |
|||
% \begin{format} ... \end{format} |
|||
% used to change the default format for the position |
|||
% environment. Within it the recognized commands are: |
|||
% \title{option} |
|||
% \employer{option} |
|||
% \location{option} |
|||
% \dates{option} |
|||
% \body |
|||
% \\ |
|||
% where option is one of l,r,c standing for left, right, center. |
|||
% The format will eventually be used to make several |
|||
% tabular environments and you are defining the number of columns |
|||
% and the placement of text within the columns of the tabulars. |
|||
% Each row is terminated by a \\. Any number of options can |
|||
% be on a line, they will each be set in their own columns. |
|||
% Any of the options except \body may be left out. |
|||
% |
|||
% Eg. |
|||
% \begin{format} |
|||
% \title{l}\employer{r}\\ |
|||
% \dates{r}\\ |
|||
% \body\\ |
|||
% \location{l}\\ |
|||
% \end{format} |
|||
% |
|||
% In this example the title and employer information |
|||
% are set in 2 columns left justified and right justified |
|||
% respectively. Then the date is set right justified. |
|||
% Then the body is set. Then the location is set left |
|||
% justified. |
|||
% |
|||
% \employer{text} |
|||
% \title{text} |
|||
% \dates{text} |
|||
% \location{text} |
|||
% declare text for the next invocation of the position |
|||
% environment |
|||
% |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% Glue |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% |
|||
% sectionskip the amount of horizontal before a section |
|||
% |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% Dimensions |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% |
|||
% sectionwidth the amount that the section titles go in the |
|||
% left margin |
|||
% |
|||
% resumewidth the width of the total resume from the left |
|||
% margin to the right. Don't use textwidth |
|||
% |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% Definitions |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% |
|||
% sectionfont the font used to print section titles |
|||
% use \renewcommand to change it |
|||
% |
|||
% namefont the font used to print your name |
|||
% use \renewcommand to change it |
|||
% |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% THINGS TO DO |
|||
% |
|||
% add lm,rm options to format style to allow things to be placed |
|||
% in the left or right margin respectivly |
|||
% |
|||
% add capability so that \body doesn't have to be proceeded (followed) |
|||
% by a \\ allowing part of the description (eg. location) to be the |
|||
% first (last) thing of the body |
|||
% |
|||
% clean up the list building procedures |
|||
% |
|||
% write docs to tell people how to use this |
|||
|
|||
\NeedsTeXFormat{LaTeX2e}[1995/12/01] |
|||
\ProvidesClass{res}[2000/05/19 v1.4b Resume class] |
|||
|
|||
%\DeclareOption{11pt}{\renewcommand\@ptsize{1}} |
|||
%\DeclareOption{12pt}{\renewcommand\@ptsize{2}} |
|||
|
|||
\PassOptionsToClass{11pt,12pt}{article} |
|||
\LoadClassWithOptions{article} |
|||
|
|||
\newif\if@line |
|||
\newif\if@margin |
|||
|
|||
\DeclareOption{line}{\@linetrue} |
|||
\DeclareOption{centered}{\@linefalse} |
|||
|
|||
\DeclareOption{margin}{\@margintrue} |
|||
\DeclareOption{overlapped}{\@marginfalse} |
|||
|
|||
\ExecuteOptions{overlapped,centered} |
|||
\ProcessOptions\relax |
|||
|
|||
\nofiles % resume's don't need .aux files |
|||
|
|||
|
|||
\newtoks\tabular@text % holds the current list being processed |
|||
\newtoks\tabular@head % holds the head tabular list |
|||
\newtoks\tabular@tail % holds the tail tabular list |
|||
\newtoks\@ta % used by \@append |
|||
\newtoks\undefined@token\undefined@token={} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% prints a centered name with the address centered |
|||
% or the two address on opposite sides of the page |
|||
% |
|||
\def\@printcentername{\begingroup |
|||
% print the name centered |
|||
\leavevmode\hbox to \textwidth{\hfil\@tablebox{\namefont\@name}\hfil}\par |
|||
\@ifundefined{@addressone}{% |
|||
% do nothing |
|||
}{% |
|||
\@ifundefined{@addresstwo}{ |
|||
% only one address |
|||
\leavevmode\hbox to \textwidth{\hfil\@tablebox{\@addressone}\hfil}\par |
|||
}{ |
|||
% two addresses |
|||
\leavevmode\hbox to \textwidth{\@tablebox{\@addressone}\hfil |
|||
\@tablebox{\@addresstwo}}\par |
|||
}% |
|||
}% |
|||
\endgroup} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% this is used to print the name and address at the top of |
|||
% the page with a hline in between |
|||
% |
|||
\def\namefont{\large\bf} |
|||
\def\@linename{\begingroup |
|||
\def\\{, } |
|||
{\namefont\@name} |
|||
\vskip 2pt |
|||
\fullline |
|||
\vskip 4pt |
|||
% where do you live? |
|||
\@ifundefined{@addressone}{% |
|||
% do nothing |
|||
}{% |
|||
\leavevmode\hbox to \textwidth |
|||
{\hfill\vbox{\hbox{\@addressone} |
|||
\hbox{\@addresstwo} |
|||
}% |
|||
}\par |
|||
} |
|||
\endgroup} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% HEADINGS: |
|||
% There are two types of headings: |
|||
% 1) one with the name centered and the address centered or |
|||
% in the left and right side if there are two address |
|||
% 2) one where the name is in the upper left corner |
|||
% the a line accross the paper |
|||
% then the address all on one line in the right corner |
|||
% the second address will be directly below the first if defined |
|||
% |
|||
\let\print@name\relax |
|||
\def\ds@centered{\ifx\print@name\relax\let\print@name\@printcentername\fi} |
|||
\def\ds@line{\ifx\print@name\relax\let\print@name\@linename\fi} |
|||
|
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% Use this to set the sectionwidth. |
|||
% It adjust the width of the text as well as the hoffset |
|||
% You probably shouldn't touch any of the size paramaters |
|||
% unless you really understand all of this but it is not |
|||
% hard. Either way, it can only be executed once |
|||
% |
|||
\def\sectionfont{\bf} |
|||
\newdimen\sectionwidth |
|||
\newskip\sectionskip |
|||
\newdimen\resumewidth |
|||
|
|||
%\resumewidth=6.75in |
|||
%\sectionskip=3.5ex plus 1ex minus -.2ex % values stolen from LaTeX |
|||
\resumewidth=6.75in |
|||
\sectionskip=3.0ex plus 1ex minus -.2ex % values stolen from LaTeX |
|||
|
|||
\def\newsectionwidth#1{% |
|||
\sectionwidth=#1 |
|||
\textwidth=\resumewidth |
|||
\advance\textwidth-\sectionwidth |
|||
\hsize=\textwidth |
|||
\hoffset=\sectionwidth |
|||
} |
|||
|
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% This is for sectiontitles that are entirely in the left margin. |
|||
% multiline sectiontitles are permited and will be broken by |
|||
% \TeX{} to fit into a box \verb|\sectionwidth| wide. It is advised |
|||
% that \verb|\\| be used to break the lines by hand as \TeX{} will |
|||
% probably not do what you want. |
|||
% |
|||
% When using this with {\tt tabbing} and {\tt list} (or anything |
|||
% that is made out of {\tt list}) put the \section's inside of |
|||
% the \verb|\begin{}| and the \verb|\item|Eg. |
|||
% \begin{verbatim} |
|||
% \begin{trivlist} |
|||
% \item[] |
|||
% \section{foo} |
|||
% text |
|||
% \end{trivlist} |
|||
% \end{verbatim} |
|||
% |
|||
\def\boxed@sectiontitle#1{% |
|||
% this macro may be called in a tabular. Special code must be written |
|||
% to accomodate this. In LaTeX, a tabular is made out of hboxes. |
|||
% TeX never goes into horizontal mode because of this; it only |
|||
% gets into vertical mode and restricted horizontal mode. Certain |
|||
% indenting problems must be handled because of this. They |
|||
% are delt with at the end of this routine. |
|||
% It is also necessary to close the hbox that was created before |
|||
% the \section and create a new one when this macro has ended. |
|||
% This macro therefore simulates a \kill, so that any text before |
|||
% the \section not be printed. The proper use is therefore |
|||
% ... |
|||
% text\\ |
|||
% \section{foo} |
|||
% more text\\ |
|||
% ... |
|||
\ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge) |
|||
\@stopfield % the is the first part of a \kill |
|||
\else |
|||
\@@par % This will end the previous paragraph if needed and |
|||
% go into vertical mode. If this was already in |
|||
% vertical mode then the \par does nothing. |
|||
|
|||
\fi |
|||
\begingroup |
|||
\everypar={}% |
|||
\def\par{\@@par}% |
|||
\let\\=\@normalcr |
|||
\addpenalty{\@secpenalty} % this would be a good place for a page break |
|||
% \@secpenalty is what LaTeX uses before its |
|||
% section's. It happens to be -300 |
|||
\addvspace{\sectionskip} % put in a bit of glue |
|||
% The following hbox will be contributed to the page list without going |
|||
% into horizontal mode. Therefore, any \parindent's, \parshape's, \leftskip |
|||
% will be ignored but \hoffset's are not. The result is that the box will |
|||
% only by \hoffset. This is what I want |
|||
\hbox to 0pt{% |
|||
\hss % this is an llap. In other words, this glue |
|||
% will shrink by the width of the stuff in the vbox |
|||
% (\sectionwidth) into the left margin and then |
|||
% insert the contents of the vbox. |
|||
\vtop to 0pt{% make a 0pt height paragraph, with the baseline at the |
|||
% lined up with the baseline of the first box in the list |
|||
\leftskip=0pt |
|||
\hsize=\sectionwidth |
|||
\textwidth=\sectionwidth |
|||
\raggedright % you don't want this filled out to the right margin |
|||
\sectionfont |
|||
#1\vss % Go into horizontal mode; do the paragraph; |
|||
% go into vertical mode; add some negative glue |
|||
% to give a box of 0pt height and depth |
|||
}% |
|||
}% |
|||
\addpenalty{-\@secpenalty} % this would be a bad place for a page break |
|||
\vskip-\baselineskip % when the next box is processed, baselineskip glue |
|||
% glue will be added (the box has no depth because of |
|||
% the \vss; therefore, we don't have to worry about |
|||
% \lineskiplimit). This -\baselineskip glue |
|||
% is to undo this. \nointerlineskip doesn't |
|||
% work because the baseline of this line would be lined |
|||
% up with the top of the top of the next box. We |
|||
% want the baselines lined up. |
|||
% |
|||
% It may have been possible to do this by forcing the |
|||
% baseline of this box to be the top of the box but |
|||
% then the interline skip between this box and the |
|||
% previous box would be off as the baselines of the |
|||
% this box (the one that being made above) and the |
|||
% previous line would be separated by \baselineskip |
|||
% (probably, it may be separted by the depth of the |
|||
% previous box + \lineskip) but as the baseline of |
|||
% this box has been moved to the top, the box's would |
|||
% separted by to much glue. The exact amount being |
|||
% the height of this box. |
|||
\endgroup |
|||
\ifx\\\@tabcr % is this in a tabular? (this *should* work but is a cludge) |
|||
% this is the second part of the \kill; it starts the next tabbing line |
|||
% Because this routine will never get into paragraph mode when used in |
|||
% tabbing the \parskip that is discussed below will never be inserted. |
|||
% Therefore it should not be negated as done below. |
|||
\@startline |
|||
\ignorespaces |
|||
\else |
|||
\vskip-\parskip % The next thing to be contributed will be a paragraph. |
|||
% Right before being contributed though a \vskip\parskip |
|||
% will be inserted. This is to negate it. |
|||
% |
|||
% I do consider this to be a bit of a cludge but |
|||
% I can not find a way to write \unskipfutureskip |
|||
% or a way to make TeX think that nothing has |
|||
% been contributed to the page list. |
|||
\fi |
|||
} |
|||
|
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% This is for sectiontitles that are entirely above the section text |
|||
% |
|||
\def\unboxed@sectiontitle#1{% |
|||
\ifx\\\@tabcr % see boxed@sectiontitle for explation |
|||
\@stopfield |
|||
\else |
|||
\@@par |
|||
\fi |
|||
\begingroup |
|||
\everypar={}% |
|||
\def\par{\@@par}% |
|||
\def\\{ } |
|||
\addpenalty{\@secpenalty} |
|||
\addvspace{\sectionskip} |
|||
\hbox to 0pt{\hss\hbox to \sectionwidth{\sectionfont#1\hss}} |
|||
\addpenalty{-\@secpenalty} % this would be a bad place for a page break |
|||
\endgroup |
|||
\ifx\\\@tabcr % see boxed@sectiontitle for explation |
|||
\@startline |
|||
\else |
|||
\vskip-\parskip |
|||
\fi |
|||
\ignorespaces |
|||
} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% There are two types of section headings: |
|||
% 1) the section heading is all on one line and directly |
|||
% below it, is the body of the text |
|||
% 2) the section heading is entirely in the left margin |
|||
% (possibly taking multiple lines) with the body of |
|||
% the text next to it |
|||
% |
|||
\let\@@section\relax |
|||
\def\ds@overlapped{\ifx\@@section\relax\newsectionwidth{0.5in}\let |
|||
\@@section\unboxed@sectiontitle\fi} |
|||
\def\ds@margin{\ifx\@@section\relax\newsectionwidth{1.3in}\let |
|||
\@@section\boxed@sectiontitle\fi} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% DEFAULTS: (some of them) |
|||
% |
|||
% centered name |
|||
% overlapped section titles |
|||
% |
|||
% format is: |
|||
% title employer |
|||
% location dates |
|||
% body |
|||
% with everything in the left of its column |
|||
|
|||
%\input article.sty |
|||
|
|||
\if@line\ds@line\else\ds@centered\fi |
|||
\if@margin\ds@margin\else\ds@overlapped\fi |
|||
|
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% typeset resume all nice and pretty |
|||
% |
|||
\def\Resume{{R\'{e}sum\'{e}}} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% makes a line of width \textwidth starting at -\hoffset |
|||
% |
|||
\def\fullline{ % hrules only listen to \hoffset |
|||
\nointerlineskip % so I have this code |
|||
\moveleft\hoffset\vbox{\hrule width\textwidth} |
|||
\nointerlineskip |
|||
} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% create a multiline box. |
|||
% |
|||
\def\@tablebox#1{\begin{tabular}[t]{@{}l@{\extracolsep{\fill}}}#1\end{tabular}} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% use this to define your name |
|||
% |
|||
\def\name#1{\def\@name{#1}} |
|||
|
|||
\def\@name{} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% use this to define your address, this may be called more than once. |
|||
% |
|||
\let\@addressone\relax |
|||
\let\@addresstwo\relax |
|||
|
|||
\def\address#1{ |
|||
\@ifundefined{@addressone}{\def\@addressone{#1}}{\def\@addresstwo{#1}}} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% if you want to print your name and address is a slightly |
|||
% different format than sugessted, then this can be used |
|||
% to place it exactly where you want |
|||
% |
|||
\def\opening{\def\@opening{} |
|||
\begingroup |
|||
\leftskip=-\hoffset % I use leftskip to move things to the left as |
|||
\advance\textwidth\hoffset % changing hoffset doesn't work. But this |
|||
\hsize=\textwidth % doesn't really work as hboxes are rules |
|||
% are unaffeted |
|||
\let\par=\@@par |
|||
\parindent=0pt |
|||
\parskip=0pt |
|||
\print@name |
|||
\endgroup |
|||
} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% all of the resume goes in the resume environment |
|||
% |
|||
\newenvironment{resume}{\begingroup |
|||
\@ifundefined{@opening}{\opening}{} |
|||
}{\endgroup} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% gives you a tabular environment with n equally spaced columns |
|||
% \begin{ncolumn}{#} ... \end{ncolumn} |
|||
% |
|||
% The p option of LaTeX is broken in all but the newest verion |
|||
% of latex.tex, this is how to fix it |
|||
% |
|||
\def\@endpbox{\par\egroup\hfil} |
|||
\let\@@endpbox=\@endpbox |
|||
|
|||
\newdimen\@columnwidth % the width of each column equal to |
|||
\def\ncolumn#1{% |
|||
% \@columnwidth = \textwidth / #1 |
|||
\@columnwidth=\textwidth \divide\@columnwidth by #1 |
|||
\begin{tabular*}{\textwidth}[t]% |
|||
{*{#1}{@{}p{\@columnwidth}@{\extracolsep{\fill}}}} |
|||
} |
|||
|
|||
\def\endncolumn{\end{tabular*}} |
|||
|
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% \employer{text} defines employer to be text |
|||
% \location{text} defines location to be text |
|||
% \dates{text} defines dates to be text |
|||
% \title{text} defines title to be text |
|||
% \body |
|||
% |
|||
|
|||
\def\employer#1{\def\@employer{\print@employer{#1}}} |
|||
\def\location#1{\def\@location{\print@location{#1}}} |
|||
\def\dates#1{\def\@dates{\print@dates{#1}}} |
|||
\def\title#1{\def\@title{\print@title{#1}}} |
|||
|
|||
\let\l@justify\raggedright |
|||
\let\r@justify\raggedleft |
|||
\let\c@justify\centering |
|||
|
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% \@format{name}{justify} |
|||
% will define \print@#1 to print it's one argument |
|||
% justified according to #2 which can be |
|||
% l = left |
|||
% r = right |
|||
% c = center |
|||
% |
|||
% eg. |
|||
% \@format{employer}{c} |
|||
% is the same as \def\print@employer#1{{\centering #1\par}} |
|||
% |
|||
\def\@format#1#2{% |
|||
\expandafter\gdef\csname print@#1\endcsname##1{% |
|||
{\csname#2@justify\endcsname##1\par}} |
|||
} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% this is used to define how the position environment should |
|||
% formated. |
|||
% |
|||
% \begin{format} positioning text \end{format} |
|||
% where positioning text may be |
|||
% \employer{pos} |
|||
% \location{pos} |
|||
% \dates{pos} |
|||
% \title{pos} |
|||
% \body (for the body of the position environment) |
|||
% where pos is |
|||
% l for left |
|||
% r for right |
|||
% c for center |
|||
% use \\ to break the line |
|||
% you don't have to use all of the options. |
|||
% on any one line, you should indicate what you want on that line |
|||
% and where it should go within its column. |
|||
% eg. |
|||
% the following prints the employer in the left with the location |
|||
% centered within that its column. It then prints the date on the |
|||
% right. Then it prints the body of the position environment. Then |
|||
% it prints the title centered within its column; as there is only |
|||
% one column here it is really just centered. |
|||
% |
|||
% \begin{format} |
|||
% \employer{l}\location{c}\\ |
|||
% \dates{r}\\ |
|||
% \body\\ |
|||
% \title{c}\\ |
|||
% \end{format} |
|||
|
|||
\newcounter{numberofcolumns} |
|||
\newenvironment{format}{% |
|||
\def\end@line@head{\append@tabular@head{tabular@text}\tabular@text={}% |
|||
\c@numberofcolumns 0} |
|||
\def\end@line@tail{\append@tabular@tail{tabular@text}\tabular@text={}% |
|||
\c@numberofcolumns 0} |
|||
\tabular@text={} |
|||
\tabular@head={} |
|||
\tabular@tail={} |
|||
\c@numberofcolumns 0 |
|||
\let\\=\end@line@head |
|||
\def\employer##1{\advance\c@numberofcolumns 1 |
|||
\@format{employer}{##1} |
|||
\append@tabular@text{employer}} |
|||
\def\location##1{\advance\c@numberofcolumns 1 |
|||
\@format{location}{##1} |
|||
\append@tabular@text{location}} |
|||
\def\dates##1{\advance\c@numberofcolumns 1 |
|||
\@format{dates}{##1} |
|||
\append@tabular@text{dates}} |
|||
\def\title##1{\advance\c@numberofcolumns 1 |
|||
\@format{title}{##1} |
|||
\append@tabular@text{title}} |
|||
\def\body{\iftoks\tabular@head\undefined@token\then |
|||
\else |
|||
\@append{\noexpand\\}\to\tabular@head |
|||
\skotfi |
|||
\let\\=\end@line@tail}}{} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
%taken from page 378 of TeXbook but freely hacked |
|||
% |
|||
% appends the expansion of #1 to the token list #2 |
|||
|
|||
\def\@append#1\to#2{% |
|||
\@ta=\expandafter{#1}% |
|||
\xdef\@append@temp{\the#2\the\@ta} |
|||
\global#2=\expandafter{\@append@temp}% |
|||
} |
|||
|
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% CHAA006%vaxb.rhbnc.ac.uk@NSS.Cs.Ucl.AC.UK |
|||
% texhax.88.078 |
|||
% is used to see if two token lists are equal |
|||
% there must be a better way |
|||
% |
|||
|
|||
\let \then = \empty |
|||
\def \iftoks #1#2\then #3\else #4\skotfi{ |
|||
\edef \1{\the #1} |
|||
\edef \2{\the #2} |
|||
\ifx \1\2\then #3\else #4\fi} |
|||
|
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% \append@tabular@text{command} |
|||
% |
|||
% appends command to the end of \tabular@text. |
|||
% NOTE: command MUST be a command but without the \ |
|||
% Eg. \append@tabular@text{relax} |
|||
% |
|||
% used to define \tabular@text for the tabular environment |
|||
% used by append@tabular@head and append@tabular@tail |
|||
% |
|||
|
|||
\def\append@tabular@text#1{% |
|||
\iftoks\tabular@text\undefined@token\then |
|||
\global\tabular@text=\expandafter{\csname @#1\endcsname} |
|||
\else |
|||
\@append{&}\to\tabular@text |
|||
\@append{\csname @#1\endcsname}\to\tabular@text |
|||
\skotfi |
|||
} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% append@tabular@head |
|||
% |
|||
% appends command to the end of \tabular@text@head |
|||
% NOTE: command MUST be a command but without the \ |
|||
% Eg. \append@tabular@head{relax} |
|||
% |
|||
% used to define \tabular@head for the tabular environment |
|||
% used by the position environment |
|||
% |
|||
\def\append@tabular@head#1{% |
|||
\ifnum\the\c@numberofcolumns=0\relax |
|||
\else |
|||
\iftoks\tabular@head\undefined@token\then |
|||
\relax |
|||
\else |
|||
\@append{\noexpand\\}\to\tabular@head |
|||
\@append{\noexpand\penalty-\@secpenalty}\to\tabular@head |
|||
\skotfi |
|||
\@append{\noexpand\begin{ncolumn}}\to\tabular@head |
|||
\@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@head |
|||
\@append{\the\csname#1\endcsname}\to\tabular@head |
|||
\@append{\noexpand\end{ncolumn}}\to\tabular@head |
|||
\fi |
|||
} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% append@tabular@tail |
|||
% |
|||
% appends command to the end of \tabular@text@htail |
|||
% NOTE: command MUST be a command but without the \ |
|||
% Eg. \append@tabular@tail{relax} |
|||
% |
|||
% used to define \tabular@tail for the tabular environment |
|||
% used by the position environment |
|||
% |
|||
\def\append@tabular@tail#1{% |
|||
\ifnum\the\c@numberofcolumns=0\relax |
|||
\else |
|||
\iftoks\tabular@tail\undefined@token\then |
|||
\else |
|||
\@append{\noexpand\\}\to\tabular@tail |
|||
\@append{\noexpand\penalty-\@secpenalty}\to\tabular@tail |
|||
\skotfi |
|||
\@append{\noexpand\begin{ncolumn}}\to\tabular@tail |
|||
\@append{\expandafter{\the\c@numberofcolumns}}\to\tabular@tail |
|||
\@append{\the\csname#1\endcsname}\to\tabular@tail |
|||
\@append{\noexpand\end{ncolumn}}\to\tabular@tail |
|||
\fi |
|||
} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% put the actual job descriptions here |
|||
% \begin{postion} ... \end{position} |
|||
% in the ... describe the position. |
|||
% don't put the \dates \location etc in here. define them before hand |
|||
\newenvironment{position}% |
|||
{% |
|||
\begingroup |
|||
\par |
|||
\the\tabular@head |
|||
% \addpenalty{-\@secpenalty}% bad place for a page break |
|||
\penalty -\@secpenalty % bad place for a page break |
|||
\penalty 10000 |
|||
\ignorespaces |
|||
}{% |
|||
\the\tabular@tail |
|||
% \addpenalty{\@secpenalty}% good place for a page break |
|||
\penalty \@secpenalty % good place for a page break |
|||
\endgroup |
|||
} |
|||
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
% DEFAULTS: (the rest of them) |
|||
% |
|||
% centered name |
|||
% overlapped section titles |
|||
% |
|||
% format is: |
|||
% title employer |
|||
% location dates |
|||
% body |
|||
% with everything in the left of its column |
|||
|
|||
\@secpenalty = -500 |
|||
\topmargin 0pt |
|||
\headheight 12pt |
|||
\headsep 0pt |
|||
\textheight 9in |
|||
\parindent 0pt |
|||
\topmargin 0in |
|||
\oddsidemargin -10pt |
|||
\evensidemargin -10pt |
|||
\marginparwidth -10pt |
|||
\parindent 0pt |
|||
\parskip \baselineskip |
|||
\setcounter{secnumdepth}{0} |
|||
\def\@listI{\leftmargin\leftmargini |
|||
\topsep 0pt |
|||
\parskip 0pt |
|||
\partopsep 2pt plus 2pt |
|||
\parsep 2pt plus 2pt |
|||
\itemsep \parsep} |
|||
|
|||
\pagestyle{empty} % don't want page numbers |
|||
|
|||
\begin{format} |
|||
\title{l}\employer{r}\\ |
|||
\location{l}\dates{r}\\ |
|||
\body\\ |
|||
\end{format} |
|||
|
|||
\let\section\@@section |
|||
|
@ -1,9 +0,0 @@ |
|||
\input{tex_parts/resume_head.tex} |
|||
|
|||
\begin{document} |
|||
|
|||
\input{tex_parts/resume_address.tex} |
|||
|
|||
\input{tex_parts/resume_body.tex} |
|||
|
|||
\end{document} |
@ -1,9 +0,0 @@ |
|||
\input{tex_parts/resume_head.tex} |
|||
|
|||
\begin{document} |
|||
|
|||
\input{tex_parts/resume_address_recruiters.tex} |
|||
|
|||
\input{tex_parts/resume_body.tex} |
|||
|
|||
\end{document} |
@ -1,26 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
function print_help { |
|||
echo "Resume Build Utility" |
|||
echo "usage: ./build resume pdf" |
|||
echo "usage: ./build resume html [package, deploy]" |
|||
echo "usage: ./build coverletter pdf <cover letter file name>" |
|||
echo "usage: ./build combined pdf <cover letter file name>" |
|||
} |
|||
|
|||
if [ -z "$1" ]; then |
|||
echo "Must supply a build command" |
|||
print_help |
|||
fi |
|||
|
|||
case "$1" in |
|||
"resume") |
|||
;; |
|||
"coverletter") |
|||
;; |
|||
"combined") |
|||
;; |
|||
*) |
|||
print_help |
|||
;; |
|||
esac |
@ -1,4 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
# Simple script to build he PDF, build the html, and deploy them to the gh-pages branch |
|||
./build-pdf-resume.sh && ./build-pdf-resume-for-recruiters.sh && ./build-html-resume.sh && ./package-and-deploy.sh |
@ -1,17 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
cd /source |
|||
|
|||
userid="$(cat userid.info)" |
|||
|
|||
# Script to build an HTML site from the PDF source |
|||
pdf2htmlEX --zoom 1.5 --embed cfijo --dest-dir out resume.pdf |
|||
chown -R $userid:$userid out/ |
|||
chmod -R 666 out/ |
|||
chmod u+x out/ |
|||
mv out/resume.html out/index.html |
|||
|
|||
tar -czvf ResumeSite.tar.gz -C out/ . |
|||
chown $userid:$userid ResumeSite.tar.gz |
|||
chmod 666 ResumeSite.tar.gz |
|||
rm -rf out |
@ -1,13 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
echo "$(id -u)" > userid.info |
|||
|
|||
# Script to build an HTML site from the PDF source |
|||
docker run \ |
|||
-v $(pwd):/source \ |
|||
sothr/pdf2htmlex \ |
|||
/usr/bin/env bash /source/scripts/build-html-resume-docker.sh |
|||
|
|||
./scripts/cleanup-latex.sh |
|||
|
|||
rm userid.info |
@ -1,18 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
set -e |
|||
set -x |
|||
|
|||
cd /source |
|||
|
|||
userid="$(cat userid.info)" |
|||
|
|||
# Script to build a PDF from the latex source |
|||
latex --output-format pdf "${1}" |
|||
outfile="$(basename -- ${1} | cut -f1 -d'.')" |
|||
chown $userid:$userid ${outfile}.pdf |
|||
chmod 666 ${outfile}.pdf |
|||
mv "${outfile}.pdf" "cover_letters/${outfile}.pdf" |
|||
|
|||
rm ${outfile}.log |
|||
rm ${outfile}.aux |
@ -1,16 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
set -e |
|||
set -x |
|||
|
|||
echo "$(id -u)" > userid.info |
|||
|
|||
# Script to build a PDF from the latex source |
|||
docker run -it \ |
|||
-v $(pwd):/source \ |
|||
schickling/latex \ |
|||
/usr/bin/env bash /source/scripts/build-pdf-cover-letter-docker.sh $1 |
|||
|
|||
./scripts/cleanup-latex.sh |
|||
|
|||
rm userid.info |
@ -1,11 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
cd /source |
|||
|
|||
userid="$(cat userid.info)" |
|||
|
|||
# Script to build a PDF from the latex source |
|||
latex --output-format pdf resume.tex |
|||
chown $userid:$userid resume.pdf |
|||
chmod 666 resume.pdf |
|||
rm resume.log |
@ -1,11 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
cd /source |
|||
|
|||
userid="$(cat userid.info)" |
|||
|
|||
# Script to build a PDF from the latex source |
|||
latex --output-format pdf resume_for_recruiters.tex |
|||
chown $userid:$userid resume_for_recruiters.pdf |
|||
chmod 666 resume_for_recruiters.pdf |
|||
rm resume_for_recruiters.log |
@ -1,13 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
echo "$(id -u)" > userid.info |
|||
|
|||
# Script to build a PDF from the latex source |
|||
docker run \ |
|||
-v $(pwd):/source:Z \ |
|||
schickling/latex \ |
|||
/usr/bin/env bash /source/scripts/build-pdf-resume-for-recruiters-docker.sh |
|||
|
|||
./scripts/cleanup-latex.sh |
|||
|
|||
rm userid.info |
@ -1,28 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
cd /source |
|||
|
|||
userid="$(cat userid.info)" |
|||
|
|||
# Get PDFJam to combine the pdf's |
|||
#curl -LSO http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic/firth/software/pdfjam/pdfjam_latest.tgz |
|||
#tar -zxvf pdfjam_latest.tgz |
|||
#export PATH="$PWD/pdfjam/bin:$PATH" |
|||
|
|||
# Script to build a PDF from the latex source |
|||
latex --output-format pdf resume.tex |
|||
chown $userid:$userid resume.pdf |
|||
chmod 666 resume.pdf |
|||
latex --output-format pdf ${1}.tex |
|||
chown $userid:$userid ${1}.pdf |
|||
chmod 666 ${1}.pdf |
|||
|
|||
outfile="${1}_with_resume.pdf" |
|||
pdfjam --fitpaper 'true' --rotateoversize 'false' --suffix joined --no-landscape --outfile $outfile ${1}.pdf resume.pdf |
|||
#pdfjoin ${1}.pdf DPSResume.pdf --no-landscape --outfile $outfile |
|||
|
|||
chown $userid:$userid $outfile |
|||
chmod 666 $outfile |
|||
|
|||
rm resume.log |
|||
rm ${1}.log |
@ -1,13 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
echo "$(id -u)" > userid.info |
|||
|
|||
# Script to build a PDF from the latex source |
|||
docker run \ |
|||
-v $(pwd):/source \ |
|||
schickling/latex \ |
|||
/usr/bin/env bash /source/scripts/build-pdf-resume-with-cover-letter-docker.sh $1 |
|||
|
|||
./scripts/cleanup-latex.sh |
|||
|
|||
rm userid.info |
@ -1,13 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
echo "$(id -u)" > userid.info |
|||
|
|||
# Script to build a PDF from the latex source |
|||
docker run \ |
|||
-v $(pwd):/source:Z \ |
|||
schickling/latex \ |
|||
/usr/bin/env bash /source/scripts/build-pdf-resume-docker.sh |
|||
|
|||
./scripts/cleanup-latex.sh |
|||
|
|||
rm userid.info |
@ -1,3 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
rm -f *.aux *.4ct *.4tc *.dvi *.idv *.lg *.tmp *.xref |
@ -1,41 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
# Script to package the PDF and the html. |
|||
# Store them. |
|||
# flush the current directory |
|||
# checkout the gh-pages branch |
|||
# extract the updated site over the current |
|||
# add the changes |
|||
# commit the changes |
|||
# push the changes to github |
|||
|
|||
mkdir -p ~/tmp |
|||
|
|||
cp resume.pdf ~/tmp |
|||
cp resume_for_recruiters.pdf ~/tmp |
|||
cp ResumeSite.tar.gz ~/tmp |
|||
|
|||
# Prepare the current directory |
|||
git clean -fq . |
|||
git clean -fXq |
|||
git checkout . |
|||
|
|||
#Checkout the deployment directory |
|||
git checkout gh-pages |
|||
|
|||
# Move and extract the files |
|||
tar -zxvf ~/tmp/ResumeSite.tar.gz . |
|||
rm ~/tmp/ResumeSite.tar.gz |
|||
mv ~/tmp/resume.pdf . |
|||
mv ~/tmp/resume_for_recruiters.pdf . |
|||
|
|||
# Add the files |
|||
git add . |
|||
git commit -m "Auto updating resume site files" |
|||
git push ssh://git@gitlab.sothr.com:9141/warricksothr/resume.git HEAD:gh-pages --force |
|||
|
|||
# Prepare the current directory |
|||
git clean -fq . |
|||
git clean -fdXq |
|||
git checkout master |
|||
git pull |
@ -1,7 +0,0 @@ |
|||
\name{Drew Short} |
|||
\address{ |
|||
\textifsymbol{18} St. Paul MN | |
|||
\Mobilefone \hspace{1 pt} (612)-361-1019 | |
|||
\Letter \hspace{1 pt} \href{mailto:drew@sothr.com?subject=Concerning Your Resume}{drew@sothr.com} | |
|||
\Mundus \hspace{1 pt} \url{https://www.sothr.com} |
|||
} |
@ -1,5 +0,0 @@ |
|||
\name{Drew Short} |
|||
\address{ |
|||
\textifsymbol{18} Minneapolis/St. Paul MN | |
|||
\Mundus \hspace{1 pt} \href{https://www.linkedin.com/in/drew-short-5188033a/a}{LinkedIn} |
|||
} |
@ -1,15 +0,0 @@ |
|||
\begin{resume} |
|||
|
|||
\input{tex_parts/resume_body/intro.tex} |
|||
|
|||
\input{tex_parts/resume_body/skills.tex} |
|||
|
|||
\input{tex_parts/resume_body/experience.tex} |
|||
|
|||
\input{tex_parts/resume_body/education.tex} |
|||
|
|||
\input{tex_parts/resume_body/achievements.tex} |
|||
|
|||
\input{tex_parts/resume_body/references.tex} |
|||
|
|||
\end{resume} |
@ -1,6 +0,0 @@ |
|||
\section{NOTABLE ACHIEVEMENTS} |
|||
|
|||
\begin{itemize} \itemsep -0.5pt %reduce space between items-2pt %reduce space between items |
|||
\item \textbf{\emph{Eagle Scout \hfill 2007}} |
|||
\item BSA Leadership Instructor \hfill Summers 2004-2007 |
|||
\end{itemize} |
@ -1,7 +0,0 @@ |
|||
\section{EDUCATION} |
|||
|
|||
{\sl Bachelor of Science}, IT (May 2013) \hfill Minnesota State University \\ |
|||
% \sl will be bold italic in New Century Schoolbook (or |
|||
% any postscript font) and just slanted in |
|||
% Computer Modern (default) font |
|||
Software Engineering \& Ethics \hfill Mankato, MN |
@ -1,64 +0,0 @@ |
|||
\section{EXPERIENCE} |
|||
|
|||
{\bf Senior Platform Engineer} \hfill {\bf Flywheel Exchange, LLC} \\ |
|||
\begin{tabular*}{1.0\linewidth}{@{}c@{\extracolsep{\fill}}r@{}} |
|||
Minneapolis, MN & 2020 - {\the\year} (\difftoday{2020}{02}{17}) \\ |
|||
\hline |
|||
\end{tabular*} |
|||
|
|||
\begin{itemize} \itemsep -0.5pt % reduce space between items |
|||
\item Lead team meetings, planning sessions, retrospectives, postmortems, gamedays, and brown bag learning sessions. |
|||
\item Developed Terraform + Helm + Kubernetes based replacement for the existing Manual + Bash + Docker Compose deployments. |
|||
\item Migrated legacy pet VMs to highly available metrics and build Kubernetes clusters managed through Terraform. |
|||
\item Lead development effort that moved customer site log collection into centralized GCP Stackdriver and customer supplied logging infrastructure. |
|||
\item Wrote management tooling for support to connect/maintain/upgrade Kubernetes deployments. |
|||
\item Currated and maintained support documentation for maintaining, upgrading, and migrating customer deployments. |
|||
\item Mentored platform engineers, software engineers, and interns on Terraform, Helm, Kubernetes, Scalable Code Patterns, and monitoring tooling. |
|||
\end{itemize} |
|||
|
|||
\vspace*{-5pt} |
|||
{\bf Senior Software Engineer} \hfill {\bf Optum} \\ |
|||
\begin{tabular*}{1.0\linewidth}{@{}c@{\extracolsep{\fill}}r@{}} |
|||
Eden Prairie, MN & 2017 - 2020 (\diffdates{2017}{08}{01}{2020}{01}{30}) \\ |
|||
& (Contracted) 2016 - 2017 (\diffdates{2016}{12}{12}{2017}{07}{30}) \\ |
|||
\hline |
|||
\end{tabular*} |
|||
|
|||
\begin{itemize} \itemsep -0.5pt % reduce space between items |
|||
\item Replaced slow legacy REST API services with hoizontally scaling services and provided guidance and support for the migration process. |
|||
\item Led efforts to triage critical security issues in production Spring services, taking accountability for identified issues and assigning security work to engineers. |
|||
\item Developed report tooling to group and assign security issues to domain teams, reducing touch time and missed assignments. |
|||
\item Led the conversion work of legacy in-line JSON deserialization to Jackson powered DTO for the communication of internal data structures via web API and message queues between services managed by the team. |
|||
\item Improved code generation of an internal framework built on top of Spring. Significantly reducing configuration required for engineers to leverage message based workflows. |
|||
\end{itemize} |
|||
|
|||
% manually split the page here. TODO fix this so layout is less manual |
|||
\newpage |
|||
\vspace*{5pt} |
|||
|
|||
\vspace*{-5pt} |
|||
{\bf Software Engineer} \hfill {\bf Cargill Incorporated, Risk Management} \\ |
|||
\begin{tabular*}{1.0\linewidth}{@{}c@{\extracolsep{\fill}}r@{}} |
|||
Hopkins, MN & 2013 - 2016 (\diffdates{2013}{06}{01}{2016}{12}{9}) \\ |
|||
\hline |
|||
\end{tabular*} |
|||
|
|||
\begin{itemize} \itemsep -0.5pt % reduce space between items |
|||
\item Led a small (3-5 person) team to retool and support a migration system in preparation of an extended cut-over testing period. |
|||
\item Architected a Python REST API to integrate an Oracle data source with a third-party suite of back, middle and front office tools. |
|||
\item Redesigned management system for '\emph{Risk Products}', delivering improved control over the individual components. |
|||
\item Maintained/upgraded a 10+ year Spring web application. Modernized interface, improved the back end, started work to move to modern build tools/process. |
|||
\end{itemize} |
|||
|
|||
\vspace*{-5pt} |
|||
{\bf Software Engineer Intern} \hfill (Under Contract To) {\bf FPX LLC} \\ |
|||
\begin{tabular*}{1.0\linewidth}{@{}c@{\extracolsep{\fill}}r@{}} |
|||
Mankato, MN & 2011 - 2013 (\diffdates{2011}{04}{01}{2013}{05}{03}) \\ |
|||
\hline |
|||
\end{tabular*} |
|||
|
|||
\begin{itemize} \itemsep -0.5pt %reduce space between items |
|||
\item Expanded a REST API and implemented continuous integration testing. |
|||
\item Developed a DSL and tooling for internal auditing, testing and reporting. |
|||
\item Developed a '\emph{playback}' system that facilitated debugging of client systems. |
|||
\end{itemize} |
@ -1,9 +0,0 @@ |
|||
\section{SOFTWARE ENGINEER} |
|||
|
|||
Object Oriented Design and Development | Relational Database Systems |
|||
|
|||
\begin{itemize} \itemsep -0.5pt |
|||
\item \emph{Exceptional Software Engineer} - 11+ years of experience with the entire software development lifcycle. Dedicated to the delivery of innovative solutions for today's problems, using tomorrow's tools. |
|||
\item \emph{Excellent troubleshooting and analysis skills} - Quick to analyze the root cause of issues and work towards both immediate and long term solutions. |
|||
\item \emph{Expert in backend/middle system design \& implementation} - Years of experience in validating, processing, and marshalling data across varied systems. |
|||
\end{itemize} |
@ -1,4 +0,0 @@ |
|||
\section{REFERENCES} |
|||
|
|||
\centering |
|||
Available Upon Request |
@ -1,12 +0,0 @@ |
|||
\section{COMPUTER \\ SKILLS} |
|||
|
|||
{\bf Languages \& Software:} Go, Python, Java, Kotlin, Groovy, SQL, |
|||
Poetry, Maven, Gradle, |
|||
pytest, JUnit, Spock, |
|||
Spring Framework, Spring Boot, Spring Cloud Stream, Hibernate, |
|||
Kubernetes, Helm, Terraform, |
|||
GitLab CI/CD, Jenkins, Concourse, |
|||
Docker, Tomcat, Nginx, |
|||
Oracle, MySQL, SQLite. \\ |
|||
{\bf Cloud Providers:} GCP, AWS, Azure. \\ |
|||
{\bf Operating Systems:} Windows, Linux (Ubuntu, Fedora, RHEL), OSX. |
@ -1,86 +0,0 @@ |
|||
\newcounter{datetoday} |
|||
\newcounter{diffyears} |
|||
\newcounter{diffmonths} |
|||
\newcounter{diffdays} |
|||
|
|||
% Function curtesy of Martin Scharrer |
|||
% http://tex.stackexchange.com/questions/14518/difference-between-two-dates |
|||
\newcommand{\difftoday}[3]{% |
|||
\setmydatenumber{datetoday}{\the\year}{\the\month}{\the\day}% |
|||
\setmydatenumber{diffdays}{#1}{#2}{#3}% |
|||
\addtocounter{diffdays}{-\thedatetoday}% |
|||
\ifnum\value{diffdays}>0 |
|||
\def\diffbefore{in }% |
|||
\def\diffafter{}% |
|||
\else |
|||
\def\diffbefore{}% |
|||
\def\diffafter{}% |
|||
\setcounter{diffdays}{-\value{diffdays}}% |
|||
\fi |
|||
\setcounter{diffyears}{\value{diffdays}/365}% |
|||
\setcounter{diffdays}{\value{diffdays}-365*\value{diffyears}}% |
|||
\setcounter{diffmonths}{\value{diffdays}/30}% |
|||
\setcounter{diffdays}{\value{diffdays}-30*\value{diffmonths}}% |
|||
% |
|||
\diffbefore |
|||
\ifnum\value{diffyears}=0 |
|||
\else |
|||
\ifnum\value{diffyears}>1 |
|||
\thediffyears\space years\ignorespacesafterend |
|||
\else |
|||
\thediffyears\space year\ignorespacesafterend |
|||
\fi |
|||
\fi |
|||
\ifnum\value{diffmonths}=0 |
|||
\else |
|||
\ifnum\value{diffyears}>0 |
|||
, |
|||
\fi |
|||
\ifnum\value{diffmonths}>1 |
|||
\thediffmonths\space months\ignorespacesafterend |
|||
\else |
|||
\thediffmonths\space month\ignorespacesafterend |
|||
\fi |
|||
\fi |
|||
\diffafter |
|||
} |
|||
|
|||
\newcommand{\diffdates}[6]{% |
|||
\setmydatenumber{datetoday}{#4}{#5}{#6}% |
|||
\setmydatenumber{diffdays}{#1}{#2}{#3}% |
|||
\addtocounter{diffdays}{-\thedatetoday}% |
|||
\ifnum\value{diffdays}>0 |
|||
\def\diffbefore{in }% |
|||
\def\diffafter{}% |
|||
\else |
|||
\def\diffbefore{}% |
|||
\def\diffafter{}% |
|||
\setcounter{diffdays}{-\value{diffdays}}% |
|||
\fi |
|||
\setcounter{diffyears}{\value{diffdays}/365}% |
|||
\setcounter{diffdays}{\value{diffdays}-365*\value{diffyears}}% |
|||
\setcounter{diffmonths}{\value{diffdays}/30}% |
|||
\setcounter{diffdays}{\value{diffdays}-30*\value{diffmonths}}% |
|||
% |
|||
\diffbefore |
|||
\ifnum\value{diffyears}=0 |
|||
\else |
|||
\ifnum\value{diffyears}>1 |
|||
\thediffyears\space years\ignorespacesafterend |
|||
\else |
|||
\thediffyears\space year\ignorespacesafterend |
|||
\fi |
|||
\fi |
|||
\ifnum\value{diffmonths}=0 |
|||
\else |
|||
\ifnum\value{diffyears}>0 |
|||
, |
|||
\fi |
|||
\ifnum\value{diffmonths}>1 |
|||
\thediffmonths\space months\ignorespacesafterend |
|||
\else |
|||
\thediffmonths\space month\ignorespacesafterend |
|||
\fi |
|||
\fi |
|||
\diffafter |
|||
} |
@ -1,15 +0,0 @@ |
|||
\input{tex_parts/resume_preamble} |
|||
|
|||
\input{tex_parts/resume_commands} |
|||
|
|||
% Hyperref setup |
|||
\hypersetup{ |
|||
colorlinks=true, |
|||
urlcolor=blue |
|||
} |
|||
|
|||
\pagestyle{fancy} % Makes sure we have footers |
|||
\renewcommand{\headrulewidth}{0pt} % clear the header |
|||
\rfoot{Last Updated: \today} % set the right footer |
|||
\rhead{\vspace{13pt}\textbf{\Resume}} % Put Resume in the upper right |
|||
\pagenumbering{gobble} % Hide page numbering |
@ -1,11 +0,0 @@ |
|||
% LaTeX resume using res.cls |
|||
\documentclass[line,margin]{res} |
|||
\usepackage{helvetica} % uses helvetica postscript font (download helvetica.sty) |
|||
\usepackage{newcent} % uses new century schoolbook postscript font |
|||
\usepackage{fancyhdr} % FancyHDR package for footers |
|||
\usepackage{hyperref} % HyperRef package to get fancy hyperlinks |
|||
\usepackage{marvosym} % Symbol library |
|||
\usepackage{ctable} % For special line rules |
|||
\usepackage{datenumber} % For date calculations |
|||
\usepackage{calc} |
|||
\usepackage{ifsym} |
@ -1,8 +0,0 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" |
|||
pushd "${DIR}" |
|||
|
|||
fly -t sothr set-pipeline --pipeline resume --config pipeline.yml |
|||
|
|||
popd |
Write
Preview
Loading…
Cancel
Save
Reference in new issue